Yandex merilis kode sumber DBMS-nya «YDB»

Baru-baru ini diumumkan bahwa Yandex telah merilis kode sumber untuk DBMS-nya, "YDB" , yang mengimplementasikan dukungan untuk dialek SQL dan transaksi ACID.

Sistem manajemen basis data (DBMS) ini dibangun dari awal dan awalnya dikembangkan dengan tujuan untuk memastikan toleransi kesalahan , pemulihan otomatis dari kegagalan, dan skalabilitas. Perlu dicatat bahwa Yandex meluncurkan klaster YDB operasional, termasuk lebih dari 10 node, yang menyimpan ratusan petabyte data dan menangani jutaan transaksi terdistribusi per detik.

Hal baru utama dari YDB

Salah satu fitur utama YDB adalah penggunaan model data relasional dengan tabel. YQL ( YDB Query Language) digunakan untuk mengkueri dan mendefinisikan skema data; ini adalah dialek SQL yang diadaptasi untuk bekerja dengan basis data terdistribusi yang besar . Saat membuat skema penyimpanan, pengelompokan tabel seperti pohon didukung, mirip dengan direktori dalam sistem file. API disediakan untuk bekerja dengan data dalam format JSON.

Hal lain yang patut diperhatikan adalah kemampuannya untuk menciptakan konfigurasi yang toleran terhadap kesalahan , yang tetap berfungsi meskipun disk, node, rak, dan bahkan pusat data individual mengalami kegagalan. YDB mendukung penyebaran dan replikasi sinkron di tiga zona ketersediaan sambil mempertahankan kesehatan klaster jika terjadi kegagalan zona.

Kompatibilitas dengan akses data melalui kueri pemindaian, dirancang untuk melakukan kueri analitik ad-hoc pada basis data, dieksekusi dalam mode baca saja dan mengembalikan alur grpc.

Selain itu, ia juga unggul dalam menyimpan data langsung pada perangkat blok menggunakan komponen PDisk asli dan lapisan VDisk. Di samping VDisk, DSProxy berjalan, yang menganalisis ketersediaan dan kinerja disk untuk mengecualikannya jika masalah terdeteksi.

Fitur penting lainnya meliputi:

  • Arsitektur fleksibel yang memungkinkan Anda membangun berbagai layanan di atas YDB, hingga perangkat blok virtual dan antrian persisten. Kesesuaian untuk berbagai jenis beban kerja: OLTP dan OLAP (kueri analitik).
  • Dukungan untuk konfigurasi multi-pengguna (multi-penyewa) dan tanpa server.
  • Kemampuan untuk mengotentikasi klien. Pengguna dapat membuat klaster dan basis data virtual mereka sendiri pada infrastruktur bersama yang umum, dengan mempertimbangkan konsumsi sumber daya dalam hal jumlah permintaan dan ukuran data, atau dengan menyewa/memesan sumber daya komputasi dan ruang penyimpanan tertentu.
  • Kemungkinan untuk menyesuaikan masa manfaat catatan untuk penghapusan otomatis data usang.
  • Berinteraksi dengan DBMS dan mengirimkan permintaan dilakukan dengan menggunakan antarmuka baris perintah, antarmuka web terintegrasi, atau YDB SDK, yang menyediakan pustaka untuk C++, C# (.NET), Go, Java, Node.js, PHP, dan Python.
  • Secara otomatis pulih dari kegagalan dengan penundaan minimal untuk aplikasi dan secara otomatis mempertahankan redundansi yang ditentukan saat menyimpan data.
  • Pembuatan indeks secara otomatis pada kunci utama dan kemampuan untuk menentukan indeks sekunder untuk meningkatkan efisiensi akses kolom arbitrer.
  • Skalabilitas horisontal. Seiring bertambahnya beban dan ukuran data yang disimpan, cluster dapat diperluas hanya dengan menghubungkan node baru. Tingkat komputasi dan penyimpanan terpisah, memungkinkan Anda menskalakan komputasi dan penyimpanan secara terpisah. DBMS sendiri memonitor pemerataan data dan beban, dengan mempertimbangkan sumber daya perangkat keras yang tersedia. Dimungkinkan untuk menerapkan konfigurasi terdistribusi secara geografis yang mencakup beberapa pusat data di berbagai belahan dunia.
  • Dukungan untuk model konsistensi yang kuat dan transaksi ACID saat memproses kueri yang menjangkau beberapa node dan tabel. Untuk meningkatkan kinerja, Anda dapat menonaktifkan pemeriksaan konsistensi secara selektif.
  • Replikasi data otomatis, partisi otomatis (partisi, sharding) ketika ukuran atau beban meningkat, dan beban otomatis dan penyeimbangan data antar node.

Terakhir, perlu dicatat bahwa YDB digunakan dalam proyek Yandex, kodenya ditulis dalam C/C++ dan didistribusikan di bawah lisensi Apache 2.0. Anda dapat menemukan kode sumbernya, serta detail lebih lanjut tentangnya, di tautan berikut.


Tambahkan sebagai sumber pilihan di Google