Rilis DBMS tertanam kompak libmdbx 0.9.1

Dilepaskan perpustakaan versi 0.9.1 libmdbx (MDBX) implementasi database nilai kunci tertanam yang berkinerja tinggi dan ringkas. Kode libmdbx didistribusikan di bawah lisensi Lisensi Publik OpenLDAP.

Versi saat ini merupakan kompromi antara niat untuk merilis versi stabil jangka panjang 1.0 dengan dukungan penuh C++ dan keengganan untuk menunda rilis karena ketidaksiapan untuk membekukan C++ API baru. Rilis yang disajikan adalah hasil kerja selama 9 bulan yang bertujuan untuk menstabilkan perpustakaan dan meningkatkan kegunaannya, dan juga mencakup versi awal API C++.

Perpustakaan libmdbx bukan hanya sebuah "garpu", tetapi turunan yang didesain ulang secara radikal LMDB β€” DBMS tertanam transaksional dari kelas β€œnilai kunci” berdasarkan pohon B+ tanpa pencatatan proaktif, yang memungkinkan proses multi-utas bekerja secara kompetitif dan efisien dengan database yang dibagikan secara lokal (non-jaringan) tanpa proses server khusus. libmdbx pada dasarnya mengembang kemampuan nenek moyangnya, sekaligus menghilangkan atau mengurangi kelemahannya. Pada saat yang sama, menurut pengembangnya, libmdbx sedikit lebih cepat dan jauh lebih dapat diandalkan daripada LMDB.

libmdbx menyarankan ACID, serialisasi perubahan yang ketat dan pembacaan non-pemblokiran dengan penskalaan linier di seluruh inti CPU. Hasil pengujian kinerja (mengirimkan permintaan baca/pencarian paralel dalam thread 1-2-4-8 pada CPU i7-4600U dengan 2 inti fisik dalam mode HyperThread 4-thread):

Rilis DBMS tertanam kompak libmdbx 0.9.1

Perbedaan paling penting antara MDBX dan LMDB:

  • Pada dasarnya, lebih banyak perhatian diberikan pada kualitas kode, konsistensi API, pengujian, dan pemeriksaan otomatis.
  • Kontrol yang jauh lebih besar selama pengoperasian, mulai dari pemeriksaan parameter hingga audit internal terhadap struktur database.
  • Pemadatan otomatis dan manajemen ukuran database otomatis.
  • Format database tunggal untuk rakitan 32-bit dan 64-bit.
  • Estimasi volume sampel berdasarkan rentang (estimasi kueri rentang).
  • Dukungan untuk kunci dua kali lebih panjang dan ukuran halaman database yang dapat dipilih pengguna.
  • Sebuah utilitas untuk memeriksa integritas struktur database dengan beberapa kemampuan pemulihan.

Inovasi dan perbaikan utama setelahnya berita sebelumnya dengan diperkenalkannya versi 0.5 pada Januari 2020:

  • Sistem terbuka telah dibuat untuk dukungan cepat dan jawaban atas pertanyaan. Grup Telegram.
  • Lebih dari selusin kesalahan dan kekurangan telah dihilangkan (lihat. log perubahan).
  • Banyak kesalahan ketik dan kesalahan ejaan telah diperbaiki, dan banyak perbaikan tampilan telah dilakukan.
  • Skenario pengujian telah diperluas.
  • Dukungan untuk iOS, Android, buildroot, muslim, uClibc, WSL1 ΠΈ anggur.
  • Pratinjau C++ API dirilis pada satu file tajuk.
  • Dokumentasi bawaan dalam format Doxygen dan pembuatan otomatis Dokumentasi daring.
  • Pembuatan arsip otomatis dengan teks sumber gabungan disediakan.
  • Menambahkan dukungan untuk menyiapkan transaksi dan kursor, konteks pengguna untuk transaksi dan kursor.
  • Metode tambahan telah diterapkan untuk mengontrol integritas referensial dalam snapshot MVCC B+tree.
  • Menambahkan dukungan untuk memeriksa snapshot MVCC dari database, dapat diakses melalui halaman meta mana pun dengan kemampuan untuk beralih ke pemulihan.
  • Dukungan yang diterapkan untuk membuka kembali database dari satu proses untuk tujuan pengujian, dll.
  • Menerapkan pemrosesan otomatis opsi MDBX_NOSUBDIR saat membuka database.
  • Menambahkan fungsi untuk menghasilkan kunci integer dari nilai floating point dan angka β€œuniversal” JavaScript.
  • Secara total, 430 perubahan dilakukan pada 93 file, lebih dari 25 ribu baris ditambahkan, dan lebih dari 8.5 ribu baris dihapus.

Pengembangan libmdbx selanjutnya akan fokus pada API C++ final, stabilisasi lebih lanjut dari kode dasar, meningkatkan kegunaan perpustakaan, dan pengemasan untuk distribusi Linux populer. Di antara perbaikan yang diusulkan, perlu diperhatikan dukungan untuk kunci dalam format Paket Pesan.

Sumber: opennet.ru

Tambah komentar