Apache Cassandra 4.0 DBMS eskuragarri

Apache Software Foundation-ek Apache Cassandra 4.0 DBMS banatuaren kaleratzea aurkeztu zuen, noSQL sistemen klasekoa eta oso eskalagarria eta fidagarria den biltegiratze oso eskalagarria eta fidagarria sortzeko diseinatuta dagoen array elkartu baten (hash) moduan biltegiratutako datu-kopuru handien biltegiratzea. Cassandra 4.0 bertsioa produkzio inplementatzeko prest dago eta dagoeneko Amazon, Apple, DataStax, Instaclustr, iland eta Netflix azpiegituretan probatu da 1000 nodo baino gehiagoko klusterrekin. Proiektuaren kodea Javan idatzita dago eta Apache 2.0 lizentziapean banatzen da.

Cassandra DBMS jatorriz Facebookek garatu zuen eta 2009an Apache Fundazioaren babespean transferitu zen. Cassandran oinarritutako soluzio industrialak Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit eta Twitter bezalako enpresen zerbitzuetarako hedatu dira. Esaterako, Applek zabaldutako Apache Cassandra-n oinarritutako biltegiratze azpiegiturak mila kluster baino gehiago ditu, 160 mila nodo barne eta 100 petabyte datu baino gehiago gordetzen ditu. Huawei-k 300 Apache Cassandra kluster baino gehiago erabiltzen ditu, 30 mila nodoz osatuta, eta Netflix-ek 100 kluster baino gehiago erabiltzen ditu, 10 mila nodo hartzen ditu eta egunean bilioi bat eskaera baino gehiago prozesatzen ditu.

Cassandra DBMS-k guztiz banatutako Dynamo hash sistema konbinatzen du, eta horrek eskalagarritasun ia lineala eskaintzen du datuen bolumena handitu ahala. Cassandra-k zutabe-familia batean (ColumnFamily) oinarritutako datuak biltegiratzeko eredu bat erabiltzen du, eta memcachedb bezalako sistemetatik desberdina da, datuak gako/balio-kate batean soilik gordetzen dituztenak, habia-maila ezberdinekin hashak biltegiratzea antolatzeko gaitasunagatik. Datu-basearekin elkarreragina errazteko, CQL (Cassandra Query Language) egituratutako kontsulta-lengoaia onartzen da, SQL gogorarazten duena, baina funtzionaltasuna murrizten duena. Ezaugarrien artean, izen-espazioetarako eta zutabe familientzako laguntza eta indizeak sortzea "SORTU INDEX" adierazpena erabiltzen da.

DBMSak hutsegiteei erresistenteak diren biltegiratzeak sortzeko aukera ematen du: datu-basean jarritako datuak automatikoki erreplikatzen dira sare banatu bateko hainbat nodotan, zeinak datu-zentro ezberdinetan barneratu ditzaketenak. Nodo batek huts egiten duenean, bere funtzioak hegan hartzen dituzte beste nodoek. Klusterera nodo berriak gehitzea eta Cassandra bertsioa eguneratzea berehala egiten da, eskuzko esku-hartze gehigarririk gabe edo beste nodo batzuk berriro konfiguratu gabe. CQL euskarria duten kontrolatzaileak Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ eta JavaScript (Node.js) prestatzen dira.

Berrikuntza nagusiak:

  • Errendimendu eta eskalagarritasuna hobetu. Nodoen artean SSTable (Sorted Strings Table) formatuan datu-trukearen eraginkortasuna hobetu da. Internode Messaging Protokoloa optimizatu da. Nodoen arteko datu-korronteak transferitzeko abiadura 5 aldiz handitu da (batez ere Zero Copy teknika erabiltzeagatik eta SSTable osoen transferentziagatik), eta irakurketa eta idazketa eragiketetarako errendimendua %25era igo da. Berreskuratze prozesua optimizatu egin da. Zabor-bilketaren etenaldiaren ondoriozko latentzia milisegundo batzuetara murrizten da.
  • Erabiltzaileen autentifikazio-eragiketak eta exekutatutako CQL kontsulta guztiak jarraitzeko aukera ematen duen auditoretza-erregistrorako laguntza gehitu da.
  • Eskaeren erregistro bitar osoa mantentzeko gaitasuna gehitu da, eskaera eta erantzunen trafiko guztia gordetzeko aukera emanez. Kudeatzeko, "nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog" komandoak proposatzen dira, eta fqltool utilitatea hornitzen da erregistroa aztertzeko. Erregistroa forma irakurgarri batean bihurtzeko (Dump), jarduera zatiak alderatzeko (Konparatu) eta berriro exekutatzeko (Replay) karga errealaren berezko baldintzak erreproduzitzeko analisirako komandoak eskaintzen dira.
  • SSTables-en gordetako datuak ez, baina APIaren bidezko informazioaren irteera (errendimendu-neurriak, ezarpenen informazioa, cachearen edukia, konektatutako bezeroei buruzko informazioa, etab.) islatzen dituzten taula birtualen laguntza gehitu da.
  • Datu konprimituen biltegiratzearen eraginkortasuna hobetu da, diskoko espazioaren kontsumoa murriztuz eta irakurketaren errendimendua hobetuz.
  • Sistemaren gako-espazioarekin erlazionatutako datuak (sistema.*) lehen direktorioan lehenespenez jartzen dira datu-direktorio guztietan banatu beharrean, eta horri esker, nodoak funtzionatzen jarraitzen du disko gehigarriren batek huts egiten badu.
  • Erreplikazio iragankorra eta Quorum merkeetarako laguntza esperimentala gehitu da. Aldi baterako erreplikek ez dituzte datu guztiak gordetzen eta leheneratze inkrementala erabiltzen dute erreplika osoekin koherente izateko. Quorum arinak idazketa-optimizazioa ezartzen du, non aldi baterako errepliketan idazketarik egiten ez den erreplika osoen multzo nahikoa eskuragarri egon arte.
  • Java 11rako laguntza esperimentala gehitu da.
  • Aukera esperimentala gehitu da Merkle zuhaitz guztiak alderatzeko. Adibidez, bi erreplika berdinak diren eta bat zaharkitua dagoen 3 nodoko kluster batean aukera gaituz gero, erreplika zaharkitua eguneratuko da uneko erreplikaren kopia eragiketa bakarra erabiliz.
  • CurrentTimestamp, currentDate, currentTime eta currentTimeUUID funtzio berriak gehitu dira.
  • Eragiketa aritmetikoetarako laguntza gehitu da CQL kontsultetan.
  • "Denbora-zigilua"/"data" eta "iraupena" motako datuen artean eragiketa aritmetikoak egiteko gaitasuna ematen da.
  • Berreskuratzeko beharrezkoak diren datu-korronteak aurreikusteko modu bat gehitu da (nodetool konponketa β€”aurrebista) eta berrezartzen ari diren datuen osotasuna egiaztatzeko gaitasuna (nodetool konponketa β€” baliozkotu).
  • SELECT kontsultak Map eta Ezarri elementuak prozesatzeko gaitasuna dute orain.
  • Materializatutako ikuspegien hasierako eraikuntza-etapa paralelizatzeko euskarria gehitu da (cassandra.yaml:concurrent_materialized_view_builders).
  • "nodetool cfstats" komandoak neurri batzuen arabera ordenatzeko eta bistaratzen diren errenkada kopurua mugatzeko laguntza gehitu du.
  • Ezarpenak erabiltzaileak datu-zentro batzuetara soilik mugatzeko ematen dira.
  • Argazkiak sortzeko eta garbitzeko eragiketen intentsitatea (tasa muga) mugatzeko gaitasuna gehitu da.
  • cqlsh eta cqlshlib-ek orain Python 3 onartzen dute (Python 2.7 onartzen da oraindik).
  • Windows plataformarako laguntza eten egin da. Cassandra Windows-en exekutatzeko, WSL2 azpisisteman (Windows Subsystem for Linux 2) edo birtualizazio sistemetan oinarrituta sortutako Linux inguruneak erabiltzea gomendatzen da.



Iturria: opennet.ru

Gehitu iruzkin berria