Inilabas ng Yandex ang source code ng DBMS nito na «YDB»

Kamakailan ay inanunsyo na inilabas ng Yandex ang source code para sa DBMS nito, ang "YDB" , na nagpapatupad ng suporta para sa SQL dialect at mga transaksyong ACID.

Ang DBMS ay binuo mula sa simula at unang binuo na may layuning matiyak ang fault tolerance , awtomatikong pagbawi mula sa mga pagkabigo, at scalability. Mahalagang tandaan na inilunsad ng Yandex ang mga operational YDB cluster, kabilang ang mahigit 10 node, na nag-iimbak ng daan-daang petabytes ng data at humahawak ng milyun-milyong ipinamahaging transaksyon bawat segundo.

Mga pangunahing bagong bagay ng YDB

Isa sa mga pangunahing katangian ng YDB ay ang paggamit nito ng relational data model na may mga talahanayan. Ang YQL ( YDB Query Language) ay ginagamit upang mag-query at magtakda ng data schema; ito ay isang diyalekto ng SQL na inangkop para sa pagtatrabaho sa malalaki at distributed database . Kapag lumilikha ng storage schema, sinusuportahan ang isang tree-like na pagpapangkat ng mga talahanayan, katulad ng mga direktoryo sa isang file system. May ibinibigay na API para sa pagtatrabaho sa data sa JSON format.

Kapansin-pansin din ang kakayahan nitong lumikha ng mga fault-tolerant na configuration na patuloy na gumagana kapag ang mga disk, node, rack, at maging ang mga indibidwal na data center ay nabigo. Sinusuportahan ng YDB ang synchronous deployment at replication sa tatlong availability zone habang pinapanatili ang cluster health sakaling magkaroon ng zone failure.

Pagkakatugma sa pag-access ng data sa pamamagitan ng mga scan query, na idinisenyo upang magsagawa ng mga ad-hoc analytical query sa database, isinasagawa sa read-only mode at nagbabalik ng grpc flow.

Bukod pa rito, namumukod-tangi rin ito sa direktang pag-iimbak ng data sa mga block device gamit ang native na PDisk component at ang VDisk layer. Bukod sa VDisk, tumatakbo ang DSProxy, na sumusuri sa availability at performance ng disk upang ibukod ang mga ito kung may matuklasan na problema.

Kabilang sa iba pang mga kapansin-pansing tampok ang:

  • Isang flexible na arkitektura na nagbibigay-daan sa iyong bumuo ng iba't ibang serbisyo sa itaas ng YDB, hanggang sa mga virtual block device at patuloy na mga pila. Angkop para sa iba't ibang uri ng workload: OLTP at OLAP (analytical query).
  • Suporta para sa mga multi-user (multi-tenant) at walang server na mga configuration.
  • Kakayahang mag-authenticate ng mga kliyente. Ang mga user ay maaaring gumawa ng sarili nilang mga virtual na cluster at database sa isang karaniwang nakabahaging imprastraktura, isinasaalang-alang ang pagkonsumo ng mapagkukunan sa mga tuntunin ng bilang ng mga kahilingan at laki ng data, o sa pamamagitan ng pagrenta/pagreserba ng ilang mga mapagkukunan ng computing at espasyo sa imbakan.
  • Posibilidad na ayusin ang kapaki-pakinabang na buhay ng mga talaan para sa awtomatikong pagtanggal ng hindi na ginagamit na data.
  • Ang pakikipag-ugnayan sa DBMS at pagsusumite ng mga kahilingan ay ginagawa gamit ang command line interface, ang integrated web interface, o ang YDB SDK, na nagbibigay ng mga library para sa C++, C# (.NET), Go, Java, Node.js, PHP at Python.
  • Awtomatikong makabawi mula sa mga pagkabigo na may kaunting pagkaantala sa mga application at awtomatikong mapanatili ang tinukoy na redundancy kapag nag-iimbak ng data.
  • Awtomatikong paglikha ng mga index sa pangunahing key at ang kakayahang tukuyin ang mga pangalawang index upang mapabuti ang kahusayan ng arbitrary na pag-access sa column.
  • Pahalang na scalability. Habang lumalaki ang load at laki ng data na nakaimbak, ang cluster ay maaaring palawakin sa pamamagitan lamang ng pagkonekta ng mga bagong node. Magkahiwalay ang compute at storage tier, na nagbibigay-daan sa iyong i-scale ang compute at storage nang hiwalay. Ang DBMS mismo ay sinusubaybayan ang pantay na pamamahagi ng data at pagkarga, na isinasaalang-alang ang mga magagamit na mapagkukunan ng hardware. Posibleng ipatupad ang mga configuration na ipinamahagi sa heograpiya na sumasaklaw sa maraming data center sa iba't ibang bahagi ng mundo.
  • Suporta para sa isang matatag na modelo ng pagkakapare-pareho at mga transaksyon sa ACID kapag nagpoproseso ng mga query na sumasaklaw sa maraming node at talahanayan. Para mapahusay ang performance, maaari mong piliing i-disable ang consistency checking.
  • Awtomatikong pagtitiklop ng data, awtomatikong paghahati (paghahati, pagbabahagi) kapag tumataas ang laki o pag-load, at awtomatikong pag-load at pagbabalanse ng data sa pagitan ng mga node.

Panghuli, mahalagang tandaan na ang YDB ay ginagamit sa mga proyekto ng Yandex, ang code ay nakasulat sa C/C++ at ipinamamahagi sa ilalim ng lisensyang Apache 2.0. Makikita mo ang source code, pati na rin ang higit pang mga detalye tungkol dito, sa sumusunod na link.


Idagdag bilang ginustong mapagkukunan sa Google