Apache Cassandra 4.0 DBMS havebla

La Apache Programaro-Fondaĵo prezentis la liberigon de la distribuita DBMS Apache Cassandra 4.0, kiu apartenas al la klaso de noSQL-sistemoj kaj estas desegnita por krei tre skaleblan kaj fidindan stokadon de grandegaj kvantoj da datumoj stokitaj en la formo de asocia aro (hash). La eldono Cassandra 4.0 estas konsiderata preta por efektivigo de produktado kaj jam estis provita en la infrastrukturoj de Amazon, Apple, DataStax, Instaclustr, iland kaj Netflix kun aretoj de pli ol 1000 nodoj. La projektkodo estas skribita en Java kaj estas distribuita sub la permesilo Apache 2.0.

La Cassandra DBMS estis origine evoluigita fare de Facebook kaj en 2009 transdonita sub la aŭspicioj de la Apache Foundation. Industriaj solvoj bazitaj sur Cassandra estis deplojitaj por funkciigi servojn de kompanioj kiel Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit kaj Twitter. Ekzemple, la konserva infrastrukturo bazita en Apache Cassandra deplojita de Apple havas pli ol mil aretojn, inkluzive de 160 mil nodoj kaj stokante pli ol 100 petabajtojn da datumoj. Huawei uzas pli ol 300 amasojn de Apache Cassandra, inkluzive de 30 mil nodoj, kaj Netflix uzas pli ol 100 aretojn, kovrante 10 mil nodojn kaj prilaboras pli ol triliono da petoj tage.

La Cassandra DBMS kombinas plene distribuitan Dynamo hash-sistemon, kiu disponigas preskaŭ linearan skaleblon kiam la volumo de datumoj pliiĝas. Cassandra uzas datumstokadomodelon bazitan sur kolumna familio (ColumnFamily), kiu diferencas de sistemoj kiel memcachedb, kiuj stokas datenojn nur en ŝlosilo/valorĉeno, per la kapablo organizi stokadon de haŝaĵoj kun pluraj niveloj de nestado. Por simpligi interagadon kun la datumbazo, la strukturita demandlingvo CQL (Cassandra Query Language) estas subtenata, kiu memorigas pri SQL, sed reduktita en funkcieco. Trajtoj inkluzivas subtenon por nomspacoj kaj kolumnaj familioj, kaj la kreadon de indeksoj uzante la esprimon "CREATE INDEX".

La DBMS permesas krei malsukces-rezistan stokadon: datumoj metitaj en la datumbazon estas aŭtomate reproduktitaj al pluraj nodoj de distribuita reto, kiu povas etendi malsamajn datumcentrojn. Kiam nodo malsukcesas, ĝiaj funkcioj estas prenitaj sur la flugo per aliaj nodoj. Aldonado de novaj nodoj al la areto kaj ĝisdatigo de la Cassandra versio estas farita sur la flugo, sen plia mana interveno aŭ reagordado de aliaj nodoj. Ŝoforoj kun CQL-subteno estas pretaj por Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ kaj JavaScript (Node.js).

Ĉefaj novigoj:

  • Plibonigita rendimento kaj skaleblo. La efikeco de datum-interŝanĝo en formato SSTable (Ordigita Strings Table) inter nodoj estis plibonigita. La Internode Messaging Protocol estis optimumigita. La rapideco de transdonado de datumfluoj inter nodoj pliiĝis ĝis 5 fojojn (ĉefe pro la uzo de la tekniko Zero Copy kaj la translokigo de tutaj SSTables), kaj la trafluo por legado kaj skriba operacioj pliiĝis al 25%. La pliiga reakiro estis optimumigita. Latentecoj pro paŭzo de rubkolekto estas reduktitaj al kelkaj milisekundoj.
  • Aldonita subteno por revizia protokolo, kiu ebligas al vi spuri uzantajn aŭtentigajn operaciojn kaj ĉiujn efektivigitajn CQL-demandojn.
  • Aldonis la kapablon konservi plenan binaran peton-protokolo, permesante al vi konservi ĉiun peton kaj respondan trafikon. Por administrado, la komandoj "nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog" estas proponitaj, kaj la fqltool-utilo estas provizita por protokolo-analizo. Komandoj estas provizitaj por konverti la protokolon en legeblan formon (Dump), kompari agadtranĉaĵojn (Komparu) kaj reefektivigi (Reludi) por analizo reproduktanta la kondiĉojn proprajn al la reala ŝarĝo.
  • Aldonita subteno por virtualaj tabeloj kiuj reflektas ne datumojn konservitajn en SSTables, sed informan eligon per la API (efikecmetriko, agordaj informoj, kaŝmemorenhavo, informoj pri konektitaj klientoj, ktp.).
  • La efikeco de kunpremita datumstokado estis plibonigita, reduktante la konsumon de diskspaco kaj plibonigante legadon.
  • Datumoj rilataj al la sistema ŝlosilspaco (sistemo.*) nun estas metita en la unua dosierujo defaŭlte anstataŭ esti distribuitaj tra ĉiuj datumdosierujoj, kio permesas al la nodo resti funkcia se unu el la kromaj diskoj malsukcesas.
  • Aldonita eksperimenta subteno por Transient Replication kaj Malmultekostaj Kvorumoj. Provizoraj kopioj ne konservas ĉiujn datumojn kaj uzas pliigan restarigon por esti kongruaj kun plenaj kopioj. Malpezaj kvorumoj efektivigas skriboptimumigon en kiu neniuj skriboj estas faritaj al provizoraj kopioj ĝis sufiĉa aro de plenaj kopioj estas havebla.
  • Aldonita eksperimenta subteno por Java 11.
  • Aldonita eksperimenta opcio por kompari ĉiujn Merkle-Arbojn. Ekzemple, ebligi la opcion sur 3-noda areto en kiu du kopioj estas identaj kaj unu estas malnoviĝinta, rezultigos ĝisdatigon de la malnoviĝinta kopio uzante nur unu kopioperacion de la nuna kopio.
  • Aldonitaj novaj funkcioj currentTimestamp, currentDate, currentTime kaj currentTimeUUID.
  • Aldonita subteno por aritmetikaj operacioj en CQL-demandoj.
  • La kapablo fari aritmetikajn operaciojn inter datumoj kun la tipoj "tempmarko"/"dato" kaj "daŭro" estas provizita.
  • Aldonis reĝimon por antaŭrigardi datumfluojn necesajn por reakiro (nodetool-riparo —antaŭrigardo) kaj la kapablon kontroli la integrecon de la restarigitaj datumoj (nodetool-riparo —validigi).
  • SELECT-demandoj nun havas la kapablon prilabori Map kaj Aro-elementojn.
  • Aldonita subteno por paraleligo de la komenca konstrustadio de realigitaj vidoj (cassandra.yaml:concurrent_materialized_view_builders).
  • La komando "nodetool cfstats" aldonis subtenon por ordigo laŭ certaj metrikoj kaj limigi la nombron da montrataj vicoj.
  • Agordoj estas provizitaj por limigi la konekton de la uzanto nur al certaj datumcentroj.
  • Aldonis la kapablon limigi la intensecon (rapida limo) de momentfotaj kreado kaj purigado de operacioj.
  • cqlsh kaj cqlshlib nun subtenas Python 3 (Python 2.7 ankoraŭ estas subtenata).
  • Subteno por la Vindoza platformo estis nuligita. Por ruli Cassandra sur Vindozo, oni rekomendas uzi Linuksajn mediojn kreitajn surbaze de la subsistemo WSL2 (Windows Subsystem por Linukso 2) aŭ virtualigaj sistemoj.



fonto: opennet.ru

Aldoni komenton