Yandex malfermis la kodon de la distribuita DBMS YDB subtenanta SQL

Yandex publikigis la fontajn tekstojn de la distribuita YDB DBMS, kiu efektivigas subtenon por la SQL-dialekto kaj ACID-transakcioj. La DBMS estis kreita de nulo kaj komence evoluigita kun okulo por certigi misfunkciadon, aŭtomatan reakiron en kazo de fiaskoj kaj skaleblo. Oni rimarkas, ke Yandex lanĉis funkciajn YDB-grupojn, inkluzive de pli ol 10 mil nodoj, stokante centojn da petabajtoj da datumoj kaj servante milionojn da distribuitaj transakcioj sekundo. YDB estas uzata en Yandex-projektoj kiel Market, Cloud, Smart Home, Alice, Metrika kaj Auto.ru. La kodo estas skribita en C/C++ kaj distribuita sub la licenco Apache 2.0. Por konatiĝo kaj rapida lanĉo, vi povas uzi pretan Docker-ujon.

Projektaj Trajtoj:

  • Uzante la interrilatan datummodelon kun tabeloj. YQL (YDB Query Language) estas uzata por pridemandi kaj difini la datumskemon, kiu estas dialekto de SQL adaptita por labori kun grandaj distribuitaj datumbazoj. Dum kreado de stokadskemo, arb-simila grupiĝo de tabeloj estas subtenata, simila al dosierujoj en dosiersistemo. API estas provizita por labori kun datumoj en JSON-formato.
    Yandex malfermis la kodon de la distribuita DBMS YDB subtenanta SQL
  • Subteno por datuma aliro uzante skanajn demandojn desegnitajn por fari analizajn ad-hoc-demandojn kontraŭ la datumbazo, efektivigita en nurlegebla reĝimo kaj resendante grpc-rivereton.
  • Interago kun la DBMS kaj sendado de petoj estas efektivigita per la komandlinia interfaco, la enkonstruita TTT-interfaco aŭ la YDB SDK, kiu disponigas bibliotekojn por C ++, C # (.NET), Go, Java, Node.js, PHP kaj Python.
  • La kapablo krei misfunkciajn agordojn, kiuj daŭre funkcias kiam individuaj diskoj, nodoj, rakoj kaj eĉ datumcentroj malsukcesas. YDB subtenas deplojon kaj sinkronan reproduktadon tra tri havebleczonoj konservante la sanon de la areto en la okazaĵo de fiasko de unu el la zonoj.
  • Aŭtomate resaniĝu de misfunkciadoj kun minimumaj prokrastoj por aplikoj kaj aŭtomate konservu la specifitan redundon dum stokado de datumoj.
  • Aŭtomata kreado de indeksoj sur la ĉefa ŝlosilo kaj la kapablo difini malĉefajn indeksojn por plibonigi la efikecon de aliro al arbitraj kolumnoj.
  • Horizontala skaleblo. Dum la ŝarĝo kaj la grandeco de la stokitaj datumoj kreskas, la areto povas esti vastigita per simple konekto de novaj nodoj. La komputikaj kaj stokadniveloj estas apartigitaj, permesante komputi kaj stokadskalon aparte. La DBMS mem kontrolas la unuforman distribuadon de datumoj kaj ŝarĝo, konsiderante la disponeblajn aparatajn rimedojn. Eblas deploji geografie distribuitajn agordojn kovrantajn plurajn datumcentrojn en malsamaj mondopartoj.
  • Subteno por forta konsekvenca modelo kaj ACID-transakcioj dum prilaborado de demandoj enhavantaj plurajn nodojn kaj tabelojn. Por plibonigi rendimenton, vi povas elekte malebligi konsekvencan kontrolon.
  • Aŭtomata reproduktado de datumoj, aŭtomata dispartigo (disigo, sharding) kiam la grandeco aŭ ŝarĝo pliiĝas, kaj aŭtomata ŝarĝo kaj datumbalancado inter nodoj.
  • Stoki datumojn rekte sur blokaj aparatoj uzante indiĝenan PDisk-komponenton kaj VDisk-tavolon. Aldone al VDisk, funkcias DSProxy, kiu analizas la haveblecon kaj rendimenton de diskoj por ekskludi ilin se problemoj estas detektitaj.
  • Fleksebla arkitekturo, kiu ebligas al vi krei aldone al YDB, diversajn servojn, ĝis virtualaj blokaj aparatoj kaj konstantaj vostoj (persistenta vosto). Aplikaĵo-taŭgeco por malsamaj specoj de laborkvanto, OLTP kaj OLAP (analizaj demandoj).
  • Subteno por pluruzantoj (plurtenanto) kaj senservilaj agordoj. Kapablo aŭtentikigi klientojn. Uzantoj povas krei siajn proprajn virtualajn aretojn kaj datumbazojn en komuna komuna infrastrukturo, konsiderante resursan konsumon je la nivelo de la nombro da petoj kaj datumgrandeco, aŭ luante/rezervante certajn komputigajn rimedojn kaj stokan spacon.
  • Eblo ĝustigi la vivdaŭron de rekordoj por aŭtomata forigo de malnoviĝintaj datumoj.

fonto: opennet.ru

Aldoni komenton