Programmering

Tænd en ild under Cassandra med Apache Ignite

Nikita Ivanov er medstifter og CTO af GridGain Systems.

Apache Cassandra er en populær database af flere grunde. Den open source, distribuerede NoSQL-database har intet enkelt fejlpunkt, så den er velegnet til applikationer med høj tilgængelighed. Det understøtter replikering af flere datacenter, hvilket giver organisationer mulighed for at opnå større modstandsdygtighed ved for eksempel at lagre data på tværs af flere Amazon Web Services-tilgængelighedszoner. Det tilbyder også massiv og lineær skalerbarhed, så et hvilket som helst antal noder let kan føjes til ethvert Cassandra-klynge i ethvert datacenter. Af disse grunde har virksomheder som Netflix, eBay, Expedia og flere andre brugt Cassandra til vigtige dele af deres forretning i mange år.

Over tid, men når forretningskravene udvikler sig og Cassandra-implementeringer skaleres, finder mange organisationer sig begrænset af nogle af Cassandras begrænsninger, hvilket igen begrænser, hvad de kan gøre med deres data. Apache Ignite, en computerhukommelsesplatform, giver disse organisationer en ny måde at få adgang til og administrere deres Cassandra-infrastruktur, så de kan stille Cassandra-data til rådighed for nye OLTP- og OLAP-brugssager, samtidig med at de leverer ekstremt høj ydeevne.

Begrænsninger af Cassandra

En grundlæggende begrænsning af Cassandra er, at den er diskbaseret og ikke en in-memory-database. Dette betyder, at læseevne altid er begrænset af I / O-specifikationer, hvilket i sidste ende begrænser applikationsydelsen og begrænser muligheden for at opnå en acceptabel brugeroplevelse. Overvej denne sammenligning: Hvad der kan behandles på et in-memory-system på et enkelt minut, vil tage årtier på et diskbaseret system. Selv ved hjælp af flashdrev ville det stadig tage måneder.

Mens Cassandra tilbyder meget hurtig dataskrivningsydelse, kræver opnåelse af optimal læseydelse, at Cassandra-dataene skrives til disken sekventielt, så ved læsning kan diskhovedet scanne så længe som muligt uden latenstid for hovedet, der hopper fra sted til sted . For at opnå dette skal forespørgslerne være enkle uden nogen TILSLUTTEs, GROUP BYs eller aggregering, og dataene skal modelleres til disse forespørgsler. Derfor tilbyder Cassandra nr ad hoc eller SQL-forespørgsel overhovedet.

DataStax, et firma, der udvikler og yder support til en kommerciel udgave af Apache Cassandra, tilføjede en mulighed for at forbinde Cassandra til Apache Spark og Apache Solr for at understøtte analyser. Denne strategi giver dog begrænset fordel, fordi brug af stik er en meget dyr måde at få adgang til en delmængde af dataene på. Dataene skal stadig fastlægges sekventielt, ellers vil ydeevnen være dårlig, fordi Cassandra bliver nødt til at lave en komplet tabel-scanning, hvilket er en scatter / collect-tilgang, der involverer en stor disk-latenstid.

En anden potentielt vigtig begrænsning af Cassandra er, at den kun understøtter eventuel konsistens. Dens mangel på fuld ACID-overholdelse betyder, at den ikke kan bruges til applikationer, der flytter penge eller kræver lageroplysninger i realtid.

Som et resultat af disse begrænsninger kæmper organisationer, der ønsker at bruge de data, de har gemt i Cassandra til nye forretningsinitiativer, ofte med hvordan man gør det.

Indtast Apache Ignite

Apache Ignite er en computerplatform i hukommelsen, der kan hjælpe med at overvinde disse begrænsninger i Cassandra, samtidig med at man undgår overheadomkostningerne ved forbindelsesmetoden. Apache Ignite kan indsættes mellem Apache Cassandra og et eksisterende applikationslag uden ændringer i Cassandra-dataene og kun minimale ændringer i applikationen. Cassandra-dataene indlæses i Ignite in-memory-klyngen, og applikationen åbner gennemsigtigt dataene fra RAM i stedet for fra disken, hvilket fremskynder ydeevnen med mindst 1.000x. Data skrevet af applikationen skrives først til Ignite-klyngen til øjeblikkeligt, løbende forbrug. Det skrives derefter til disken i Cassandra til permanent lagring med enten synkron eller asynkron skrivning.

Apache Ignite har også den samme skrivestrategi som Apache Cassandra, så det føles velkendt for Cassandra-brugere. Ligesom Cassandra er Ignite open source, og dets brugere drager fordel af et stort og aktivt samfund med support tilgængelig via en række community-websteder. Som en computerplatform i hukommelsen giver Apache Ignite dog organisationer mulighed for at gøre meget mere med deres Cassandra-data - og gøre det hurtigere. Sådan gør du.

  • Flere dataindstillinger - ANSI SQL-99 og ACID-transaktionsgarantier

    Drevet af en ANSI SQL-99-kompatibel motor, Apache Ignite tilbyder ACID transaktionsgarantier for distribuerede transaktioner. Dens SQL-gitter i hukommelsen giver mulighed for databasehukommelse, og ODBC og JDBC API'er er inkluderet. Ved at kombinere Ignite med Apache Cassandra kan enhver type OLAP eller kompleks SQL-forespørgsel skrives mod Cassandra-data, der er indlæst i Ignite. Ignite kan også betjenes i flere tilstande fra eventuel konsistens til realtid, fuld ACID-overholdelse, så organisationer kan bruge de data, der er gemt i Cassandra (men læses i Ignite) til et væld af nye applikationer og initiativer.
  • Ingen ombygning af Cassandra-data

    Apache Ignite læser fra Apache Cassandra og andre NoSQL-databaser, så flytning af Cassandra-data til Ignite kræver ingen dataændring. Dataskemaet kan også overføres direkte til Ignite, som det er.
  • Større hastighed til dataintensive applikationer

    Flytning af alle Apache Cassandra-data til RAM giver den hurtigste mulige ydeevne og forbedrer forespørgselshastigheden betydeligt, fordi dataene ikke konstant læses fra og skrives til disk. Det er også muligt at bruge Apache Ignite til kun at cache den aktive del af Cassandra-dataene for at opnå en betydelig hastighedsforøgelse. Ignites indekser findes også i hukommelsen, hvilket gør det muligt at udføre ultrahurtige SQL-forespørgsler på Cassandra-data, der er flyttet til Ignite.
  • Enkel vandret og lodret skalering

    Ligesom Apache Cassandra skaleres Apache Ignite let vandret ved at tilføje noder til Ignite-klyngen. De nye noder giver øjeblikkeligt ekstra hukommelse til caching af Cassandra-data. Imidlertid skalerer Ignite også let lodret. Ignite kan udnytte al hukommelsen på en node, ikke kun JVM-hukommelsen, og objekter kan defineres til at leve på eller fra bunke og bruge al hukommelsen på maskinerne. På denne måde skaleres blot antallet af hukommelse på hver node automatisk i Ignite-klyngen lodret.
  • Øget tilgængelighed

    Ligesom Apache Cassandra er peer-to-peer Apache Ignite-computerplatform altid tilgængelig. Manglen på en node forhindrer ikke applikationer i at skrive til og læse fra definerede backupnoder. Datadistribution er også automatisk, når en Ignite-klynge vokser. Fordi Ignite tilbyder sofistikeret klyngestøtte, såsom detektering og afhjælpning af splittede hjerneforhold, er det kombinerede Cassandra / Ignite-system mere tilgængeligt end et enkeltstående Cassandra-system.
  • Enklere og hurtigere end Hadoop

    Mange organisationer, der gerne vil foretage SQL-forespørgsler i deres Apache Cassandra-data, overvejer at indlæse dataene i Hadoop. Ulempen ved denne tilgang er, at forespørgslerne til Hadoop efter løsning af de udfordringer, der opstår i ETL og datasynkronisering, stadig vil være relativt meget langsomme. Mens kombinationen af ​​Cassandra og Ignite også resulterer i nogle mindre ydeevnehit på grund af det ekstra system og caching, udføres forespørgsler alligevel med brændende hastighed, hvilket gør løsningen perfekt til realtidsanalyse. Og styring af forholdet mellem Ignite og Cassandra-data er meget enklere.

Udfordringer med at implementere Cassandra og Ignite

Som nævnt ovenfor involverer omkostninger at kombinere Apache Cassandra og Apache Ignite. Du får naturligvis et hit i ydeevnen - og omkostningerne og vedligeholdelsen - ved at have to netværk (som du ville med tilføjelsen af ​​enhver anden løsning). Der er hardwarepriser for nye råvareservere og tilstrækkelig RAM, og måske en abonnementsomkostning for en enterprise-grade og understøttet version af Apache Ignite. Yderligere kan implementering og vedligeholdelse af Ignite kræve, at nogle organisationer ansætter yderligere ekspertise. Som et resultat er en cost / benefit-analyse garanteret for at sikre, at de strategiske fordele ved enhver ny brugssag sammen med præstationsgevinsterne opvejer omkostningerne.

Ved denne beslutning er følgende overvejelser vigtige. For det første er Apache Ignite, i modsætning til den tidligere generation af in-memory computing-løsninger, der krævede sammenkobling af flere produkter, en fuldt integreret, nem at implementere løsning. Integration af Ignite med Apache Cassandra er typisk en meget ligetil proces. Tænd dias mellem Cassandra og en applikation, såsom Apache Kafka eller en anden klient, der får adgang til dataene. Ignite inkluderer et forudbygget Cassandra-stik, hvilket forenkler processen. Applikationen læser og skriver derefter ud af Ignite i stedet for Cassandra, så det er altid adgang til data fra hukommelse i stedet for fra disk. Ignite håndterer automatisk læsningerne og skriver ud og ind i Cassandra.

For det andet, mens mange stadig tænker på in-memory computing som uoverkommeligt dyre, er omkostningerne ved RAM faldet ca. 30 procent om året siden 1960'erne. Selvom RAM stadig er pund for pund dyrere end SSD'er, kan ydelsesfordelen ved at bruge terabyte RAM i en in-memory computing-klynge, især til store, missionskritiske applikationer, muligvis gøre in-memory computing til den mest omkostningseffektive nærme sig.

Endelig er Apache Ignite et sikkert spil med en moden codebase. Det opstod som et privat projekt i 2007, blev doneret til Apache Software Foundation i 2014 og dimitterede til et topniveau-projekt omkring et år senere - det næsthurtigste Apache-projekt, der blev uddannet efter Apache Spark.

Apache Cassandra er en solid, gennemprøvet løsning, der kan være et vigtigt element i mange datastrategier. Med Apache Ignite kan Cassandra-data gøres mere nyttige. Apache Ignite-hukommelsescomputerplatformen er en overkommelig og effektiv løsning til at gøre Cassandra-data tilgængelige til nye OLTP- og OLAP-brugssager, samtidig med at de ekstreme ydelseskrav fra nutidens applikationer på webskala opfyldes. . Den kombinerede løsning opretholder Cassandra's høje tilgængelighed og vandrette skalerbarhed, samtidig med at der tilføjes ANSI SQL-99-kompatible forespørgselfunktioner, lodret skalerbarhed, mere robust konsistens med ACID-transaktionsgarantier og mere - alt imens den leverer ydeevne, der er 1.000 gange hurtigere end diskbaseret tilgange.

New Tech Forum giver et sted at udforske og diskutere nye virksomhedsteknologier i hidtil uset dybde og bredde. Valget er subjektivt baseret på vores valg af de teknologier, som vi mener er vigtige og af største interesse for læserne. accepterer ikke markedsføringssikkerhed til offentliggørelse og forbeholder sig retten til at redigere alt bidraget indhold. Send alle forespørgsler til [email protected]