Ngaleupaskeun DBMS libmdbx 0.11.7. Pindahkeun Pangwangunan ka GitFlic Saatos Lockdown dina GitHub

Perpustakaan libmdbx 0.11.7 (MDBX) parantos dileupaskeun kalayan palaksanaan basis data konci-nilai kompak berprestasi tinggi. Kode libmdbx disebarkeun dina Lisensi Publik OpenLDAP. Sadaya sistem operasi sareng arsitéktur ayeuna dirojong, kitu ogé Elbrus Rusia 2000.

Pelepasan éta kasohor pikeun migrasi proyék kana jasa GitFlic saatos administrasi GitHub ngaleungitkeun libmdbx sareng sajumlah proyék sanés dina 15 April 2022 tanpa peringatan atanapi katerangan, bari sakaligus ngahalangan aksés ka seueur pamekar anu aya hubunganana sareng perusahaan anu murag. handapeun sanksi AS. Tina sudut pandang pangguna, sadaya halaman, gudang sareng garpu proyék ujug-ujug janten halaman "404", tanpa kamungkinan komunikasi sareng milarian alesanana.

Hanjakal, ampir kabéh masalah geus leungit, nu aya loba patarosan kalawan jawaban lengkep, kitu ogé loba diskusi. Leungitna inpormasi ieu mangrupikeun hiji-hijina karusakan obyektif anu tiasa dilakukeun ku administrasi GitHub dina proyék éta. Salinan sabagean tina diskusi tetep aya dina arsip archive.org.

Leungitna skrip sareng infrastruktur CI anu diwangun (sadia pikeun proyék OpenSource gratis) maksa urang ngalakukeun révisi, ngahijikeun sareng ngaleungitkeun hutang téknis leutik. Ayeuna CI parantos dibalikeun ka ampir sami, iwal ti ngawangun sareng uji coba pikeun sadaya varian BSD sareng Solaris. Tellingly, sanggeus lampah GitHub urang, euweuh klarifikasi atawa bewara nu katampa, sajaba ti panginget butuh mayar na usaha nulis kaluar duit.

Kusabab béja anu terakhir ngeunaan sékrési libmdbx v0.11.3, salian ti pulih tina tindakan GitHub, perbaikan sareng perbaikan ieu kedah diperhatoskeun:

  • Ditambahkeun workaround pikeun éfék incoherence dideteksi / cacad dina kaca digabungkeun jeung cache panyangga dina kernel Linux Ubuntu. Dina sistem dimana halaman sareng cache panyangga leres-leres ngahiji, éta henteu aya rasa pikeun kernel runtah mémori dina dua salinan data nalika nyerat kana file anu parantos dipetakeun memori. Ku alatan éta, data keur ditulis jadi katempo via pemetaan memori saméméh nulis () Sistim panggero réngsé, sanajan data teu acan ditulis kana disk.

    Sakabehna, paripolah anu sanés henteu rasional, sabab ku ngahijikeun anu ditunda, anjeun masih kedah nyandak konci pikeun daptar halaman, nyalin data, atanapi nyaluyukeun PTE. Ku alatan éta, aturan unspoken of kohérénsi geus lumaku saprak 1989, nalika cache panyangga hasil ngahijikeun Tatar mucunghul dina SRV4. Ku alatan éta, manggihan gagal aneh dina skenario produksi libmdbx sibuk merlukeun loba karya. Kahiji, ku reproducing masalah, lajeng ku verifying hipotesis jeung mariksa perbaikan.

    Ayeuna urang yakin bisa disebutkeun yen masalah geus reliably dicirikeun, localized na reliably ngaleungitkeun, sanajan pajeulitna sarta spésifisitas tina skenario playback. Salaku tambahan, karya mékanisme bypass dikonfirmasi ku salah sahiji pamekar Erigon (Ethereum), dina kasus na, dina ngawangun debug, panyalindungan dipicu salaku régrési kusabab pamariksaan tambahan.

    Perlu dicatet yén dina kontéks pamakean libmdbx anu nyebar dina proyék-proyék kerja, dasarna langkung penting pikeun mastikeun operasi anu dipercaya, sareng henteu mendakan "éta bug atanapi fitur" sareng naha kohérénsi sapertos kitu tiasa diandelkeun. , khususna henteu milarian anu nyababkeun incohérénsi dina kernel Linux. Ku alatan éta, di dieu urang ngobrol ngeunaan ngalereskeun masalah anu tiasa mangaruhan pangguna.

  • Ngalereskeun régrési tina kasalahan EXDEV (Tumbu lintas-alat) nalika panas nyalin pangkalan data tanpa kompak kana sistem file anu sanés, boh ngalangkungan API sareng nganggo utilitas mdbx_copy.
  • Kris Zyp parantos ngalaksanakeun dukungan pikeun libmdbx di Deno. Kai Wetlesen parantos ngarangkep RPM pikeun Fedora. David Bouyssie ngalaksanakeun beungkeutan pikeun Scala.
  • Penanganan tetep tina nilai anu diatur ku pilihan MDBX_opt_rp_augment_limit nalika ngolah transaksi ageung dina database ageung. Saméméhna, alatan bug a, lampah teu perlu bisa dipigawé, nu kadang mangaruhan kinerja di palaksanaan Ethereum (Erigon / Akula / Silkworm) jeung proyék Binance Chain.
  • Seueur bug anu parantos dibenerkeun, kalebet anu aya dina C ++ API. Ngalereskeun seueur masalah ngawangun dina konfigurasi anu jarang sareng aheng. Daptar lengkep sadaya perbaikan signifikan sayogi dina ChangeLog.
  • Jumlahna aya 185 parobahan anu dilakukeun kana 89 file, ≈3300 baris ditambahkeun, ≈4100 dihapus. Dihapus langkung seueur kusabab ngabersihkeun file téknologi anu teu aya gunana pakait sareng GitHub sareng jasa anu gumantung.

Dina sajarahna, libmdbx mangrupikeun desain ulang jero tina LMDB DBMS sareng ngaleuwihan progenitorna dina hal reliabilitas, set fitur sareng kinerja. Dibandingkeun jeung LMDB, libmdbx nempatkeun loba tekenan kana kualitas kode, stabilitas API, nguji, sarta cék otomatis. Utiliti pikeun mariksa integritas struktur database disayogikeun sareng sababaraha pilihan pamulihan.

Téknologis, libmdbx nawiskeun ACID, serialisasi parobahan anu ketat, sareng bacaan non-blocking kalayan skala linier dina inti CPU. Autocompactification, manajemén ukuran database otomatis, sarta estimasi query rentang dirojong. Kusabab 2016, proyék éta dibiayaan ku Positive Technologies sareng parantos dianggo dina produkna ti saprak 2017.

libmdbx nawiskeun API C ++ anu dikembangkeun, ogé beungkeutan anu dirojong ku enthusiast ka Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

sumber: opennet.ru

Tambahkeun komentar