Dqlite 1.0, versi SQLite terdistribusi dari Canonical, tersedia

Resmi ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° rilis proyek yang signifikan Dqlite 1.0 (SQlite Terdistribusi), yang mengembangkan mesin SQL tertanam yang kompatibel dengan SQLite yang mendukung replikasi data, pemulihan otomatis dari kegagalan, dan toleransi kesalahan dengan mendistribusikan penangan ke beberapa node. DBMS diimplementasikan dalam bentuk perpustakaan C yang melekat pada aplikasi dan didistribusikan oleh di bawah lisensi Apache 2.0 (SQLite asli disediakan dalam domain publik). Ikatan bahasa tersedia Go.

Pustaka ini merupakan tambahan pada basis kode SQLite yang ada yang menambahkan dukungan protokol jaringan untuk menghubungkan beberapa contoh aplikasi yang berjalan pada host berbeda. Aplikasi yang dikompilasi dengan Dqlite dapat berfungsi sebagai klaster toleransi kesalahan yang mandiri, tidak bergantung pada DBMS eksternal. Dalam praktiknya, Dqlite digunakan oleh Canonical dalam sistem manajemen kontainernya Lxd. Di antara bidang penerapan perpustakaan, pembuatan perangkat dan prosesor Internet of Things yang toleran terhadap kesalahan dalam sistem juga disebutkan
Tepi- perhitungan.

Untuk memastikan konsistensi dalam replikasi data, digunakan metode konsensus berbasis algoritma Rakit, yang digunakan dalam proyek sepertietcd, RethinkDB, CockroachDB dan OpenDaylight. Dqlite menggunakan implementasi asinkronnya sendiri Keahlian, ditulis dalam bahasa C. Pustaka yang sudah jadi digunakan untuk memproses koneksi multipleks dan mengatur peluncuran coroutine libuv ΠΈ libco.

Dibandingkan dengan proyek serupa rqlite,Dqlite menyediakan dukungan transaksional penuh, dapat berkomunikasi, dengan proyek C apa pun, memungkinkan penggunaan fungsi time(), dan, menggunakan replikasi berbasis bingkai alih-alih replikasi berbasis terjemahan SQL.

Fitur Dqlite:

  • Lakukan semua operasi disk dan jaringan secara asinkron;
  • Ketersediaan set pengujian untuk memastikan kebenaran data;
  • Konsumsi memori rendah dan pertukaran data yang efisien melalui jaringan;
  • Penyimpanan permanen database dan log transaksi pada disk (dengan kemungkinan cache di memori);
  • Pemulihan cepat dari kegagalan;
  • Klien CLI yang stabil dalam bahasa Go, yang dapat digunakan untuk menginisialisasi database, mengkonfigurasi replikasi dan menghubungkan/memutuskan node;
  • Mendukung arsitektur ARM, X86, POWER dan IBM Z;
  • Penerapan algoritma Raft dioptimalkan untuk meminimalkan penundaan saat melakukan transaksi.

Sumber: opennet.ru

Tambah komentar