Selepas lima tahun pembangunan, calon keluaran libmdbx 1.0 kedua telah diterbitkan

Ada untuk menguji calon kedua untuk keluaran perpustakaan libmdbx dengan pelaksanaan pangkalan data nilai kunci tertanam berprestasi tinggi dan padat. Versi semasa (0.5) ialah keluaran teknikal, menandakan selesainya sebarang penambahbaikan dan peralihan kepada fasa ujian akhir awam dan penstabilan, dengan pembentukan seterusnya keluaran penuh pertama perpustakaan. kod libmdbx diedarkan oleh dilesenkan di bawah Lesen Awam OpenLDAP.

Perpustakaan MDBX ialah garpu yang disemak dengan ketara daripada LMDB β€” DBMS terbenam transaksional bagi kelas "nilai-kunci" berdasarkan pokok B+ tanpa pembalakan proaktif, yang membolehkan proses berbilang benang berfungsi secara kompetitif dan cekap dengan pangkalan data yang dikongsi secara tempatan (bukan rangkaian). Sebaliknya, MDBX lebih pantas dan lebih dipercayai daripada LMDB, dan pada masa yang sama mengekalkan semua ciri utama moyangnya, seperti ASID dan bacaan tanpa sekatan dengan penskalaan linear merentas teras CPU.

Perbezaan paling penting antara MDBX dan LMDB:

  • Pada asasnya, lebih banyak perhatian diberikan kepada kualiti kod, ujian dan semakan automatik.
  • Kawalan yang lebih ketara semasa operasi, daripada menyemak parameter kepada audit dalaman struktur pangkalan data.
  • Auto-pemadatan dan pengurusan saiz pangkalan data automatik.
  • Format pangkalan data tunggal untuk perhimpunan 32-bit dan 64-bit.
  • Anggaran volum sampel mengikut julat (anggaran pertanyaan julat).
  • Sokongan untuk kunci dua kali lebih besar daripada penkek dan saiz halaman pangkalan data yang boleh dipilih pengguna.

Calon keluaran libmdbx adalah hasil keputusan yang dibuat pada Ogos 2019 untuk memisahkan projek MDBX dan MithrilDB. Pada masa yang sama, libmdbx memutuskan untuk menghapuskan hutang teknikal maksimum (rasional) dan menstabilkan perpustakaan. Malah, 2-3 kali lebih banyak telah dilakukan mengikut arah yang ditetapkan daripada yang dianggarkan dan dirancang pada mulanya:

  • Sokongan untuk macOS dan platform peringkat kedua telah dilaksanakan: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Sokongan AIX dan HP-UX boleh ditambah mengikut keperluan.
  • Kod telah dibersihkan menggunakan Pembersih Tingkah Laku Tidak Ditakrifkan dan Pembersih Alamat, semua amaran apabila membina dengan "-Wpedantic", semua amaran Penganalisis Statik Coverity, dsb. telah dihapuskan.
  • Kemas kini Penerangan API.
  • Penggabungan (penggabungan) kod sumber untuk memudahkan pembenaman.
  • Sokongan CMake.
  • Sokongan untuk transaksi bersarang.
  • Menggunakan bootid untuk menentukan sama ada OS telah but semula (berhenti pangkalan data kotor).
  • Pengiraan hujung ke hujung halaman yang dikemas kini/lama dan maklumat transaksi lanjutan.
  • Pilihan MDBX_ACCEDE untuk menyambung ke pangkalan data yang sudah terbuka dalam mod serasi.
  • Gunakan menyekat OFD apabila tersedia.
  • Sandaran panas dalam paip.
  • Algoritma pengisihan dalaman yang dioptimumkan khusus (sehingga 2-3 kali lebih pantas daripada β€œqsort()” dan sehingga 30% lebih pantas daripada β€œstd::sort()”).
  • Panjang kunci maksimum telah ditingkatkan.
  • Kawalan automatik membaca ke hadapan (strategi caching fail pangkalan data dalam ingatan).
  • Pemadatan auto yang lebih agresif dan lebih pantas.
  • Strategi yang lebih optimum untuk menggabungkan halaman pokok B+.
  • Kawalan sistem fail bukan tempatan (NFS, Samba, dll.) untuk mengelakkan kerosakan pangkalan data jika digunakan secara salah.
  • Set ujian telah diperluaskan.

Pembangunan versi "seterusnya" libmdbx akan diteruskan sebagai projek berasingan MithrilDB, manakala vektor pembangunan versi "semasa" MDBX bertujuan untuk membekukan set ciri dan menstabilkannya. Keputusan ini dibuat atas tiga sebab:

  • Tidak serasi sama sekali: MithrilDB memerlukan format fail pangkalan data (tidak serasi) yang berbeza dan API (tidak serasi) yang berbeza untuk melaksanakan semua ciri yang dirancang.
  • Kod sumber baharu: Kod sumber MithrilDB telah dilesenkan bebas daripada LMDB, dan projek itu sendiri dirancang untuk diterbitkan di bawah lesen lain (diluluskan oleh ATAU JIKA Lesen Apache 2.0, bukan Lesen Awam OpenLDAP).
  • Pemisahan itu mengelakkan kemungkinan kekeliruan, memperkenalkan lebih kepastian dan memastikan laluan bebas untuk projek.

MithrilDB, seperti MDBX, juga berdasarkan pokok B+ dan juga akan menampilkan prestasi yang sangat tinggi, sambil menghapuskan beberapa kelemahan asas MDBX dan LMDB. Khususnya, masalah "bacaan panjang", yang menampakkan dirinya sebagai "bengkak" pangkalan data kerana fakta bahawa pemprosesan sampah disekat oleh urus niaga bacaan panjang, akan dihapuskan. Ciri MithrilDB baharu termasuk:

  • Sokongan untuk meletakkan pangkalan data pada beberapa media heterogen: HDD, SSD dan memori tidak meruap.
  • Strategi optimum untuk "bernilai" dan "bernilai rendah", untuk data "panas", "panas" dan "sejuk".
  • Menggunakan pokok Merkle untuk memantau integriti pangkalan data.
  • Penggunaan pilihan WAL dan prestasi yang dipertingkatkan dengan ketara dalam senario intensif tulis dengan jaminan integriti data.
  • Kejar mengejar malas melakukan data ke cakera.

Sumber: opennet.ru

Tambah komen