Pengembang SQLite mengembangkan backend HC-tree dengan dukungan untuk penulisan paralel

Pengembang proyek SQLite telah mulai menguji backend HCtree eksperimental yang mendukung penguncian tingkat baris dan menyediakan paralelisasi tingkat tinggi saat memproses kueri. Backend baru ini bertujuan untuk meningkatkan efisiensi penggunaan SQLite dalam sistem klien-server yang harus memproses sejumlah besar permintaan penulisan simultan ke database.

Struktur b-tree yang secara asli digunakan di SQLite untuk menyimpan data tidak dirancang untuk jenis beban ini, yang membatasi SQLite untuk menulis hanya ke satu thread. Sebagai percobaan, pengembang mulai mengembangkan solusi alternatif yang menggunakan struktur pohon HC untuk penyimpanan, yang lebih cocok untuk memparalelkan operasi penulisan.

Untuk memungkinkan beberapa operasi berjalan secara bersamaan, catatan HCtree menggunakan mekanisme partisi transaksi yang menggunakan penguncian tingkat halaman dan mirip dengan MVCC (Kontrol Konkurensi Multi-Versi) tetapi menggunakan pemeriksaan transaksi berdasarkan kunci dan rentang kunci, bukan kumpulan halaman. Operasi baca dan tulis dilakukan sehubungan dengan snapshot database, perubahannya akan terlihat di database utama hanya setelah transaksi selesai.

Klien dapat menggunakan tiga operasi transaksi terbuka:

  • β€œMULAI”—transaksi tidak memperhitungkan data akses akun klien lain. Jika operasi tulis dilakukan dalam suatu transaksi, transaksi tersebut hanya dapat dilakukan jika selama pelaksanaannya tidak ada operasi tulis lain dalam database.
  • "MULAI BERSAMAAN" - transaksi mengumpulkan informasi tentang akses klien lain. Jika operasi tulis dilakukan dalam suatu transaksi, transaksi tersebut dapat dilakukan jika transaksi lain telah dilakukan dalam database sejak snapshot dibuat.
  • β€œMULAI EKSKLUSIF” - setelah membuka suatu transaksi, ia memblokir operasi dari transaksi lain hingga transaksi tersebut selesai.

HCtree mendukung replikasi master-slave, yang memungkinkan Anda memigrasikan transaksi ke database lain dan menjaga database sekunder tetap sinkron dengan database utama. HCtree juga menghilangkan batasan ukuran basis data - alih-alih pengidentifikasi halaman data 32-bit, HCtree menggunakan pengidentifikasi 48-bit, yang meningkatkan ukuran basis data maksimum dari 16 tebibytes menjadi 1 exbibyte (juta tebibytes). Kinerja SQLite dengan backend HCtree diharapkan tidak lebih rendah dari backend single-threaded klasik. Klien SQLite dengan dukungan HCtree akan dapat mengakses database berbasis HCtree dan database SQLite lama.

Sumber: opennet.ru

Tambah komentar