Programmering

Tenn bål under Cassandra med Apache Ignite

Nikita Ivanov er medstifter og CTO for GridGain Systems.

Apache Cassandra er en populær database av flere grunner. Den åpen kildekode, distribuerte NoSQL-databasen har ikke et eneste feilpunkt, så den er godt egnet for applikasjoner med høy tilgjengelighet. Den støtter replikering av flere datasenter, slik at organisasjoner kan oppnå større spenst ved å for eksempel lagre data på tvers av flere Amazon Web Services tilgjengelighetssoner. Det tilbyr også massiv og lineær skalerbarhet, slik at et hvilket som helst antall noder enkelt kan legges til hvilket som helst Cassandra-klynge i hvilket som helst datasenter. Av disse grunner har selskaper som Netflix, eBay, Expedia og flere andre brukt Cassandra i viktige deler av virksomheten i mange år.

Over tid, men etter hvert som forretningskravene utvikler seg og Cassandra-distribusjonene blir større, finner mange organisasjoner seg begrenset av noen av Cassandras begrensninger, som igjen begrenser hva de kan gjøre med dataene sine. Apache Ignite, en databehandlingsplattform i minnet, gir disse organisasjonene en ny måte å få tilgang til og administrere Cassandra-infrastrukturen, slik at de kan gjøre Cassandra-data tilgjengelige for nye OLTP- og OLAP-brukstilfeller samtidig som de leverer ekstremt høy ytelse.

Begrensninger av Cassandra

En grunnleggende begrensning for Cassandra er at den er diskbasert, ikke en in-memory database. Dette betyr at leseytelse alltid er begrenset av I / O-spesifikasjoner, og til slutt begrenser applikasjonsytelsen og begrenser muligheten for å oppnå en akseptabel brukeropplevelse. Tenk på denne sammenligningen: Det som kan behandles på et minnesystem på ett minutt, vil ta flere tiår på et diskbasert system. Selv om du bruker flash-stasjoner, vil det fortsatt ta måneder.

Mens Cassandra tilbyr veldig rask dataskrivingsytelse, krever å oppnå optimal leseytelse at Cassandra-dataene skrives til disken sekvensielt, slik at diskhodet kan skanne så lenge som mulig uten at ventetiden til hodet hopper fra sted til sted, mens det leses. . For å oppnå dette må spørringene være enkle, uten noen BLI MEDs, GRUPPE AVs, eller aggregering, og dataene må modelleres for disse spørsmålene. Derfor tilbyr Cassandra nei ad hoc eller SQL-spørringsfunksjon i det hele tatt.

DataStax, et selskap som utvikler og gir støtte for en kommersiell utgave av Apache Cassandra, la til muligheten til å koble Cassandra til Apache Spark og Apache Solr for å støtte analyser. Denne strategien gir imidlertid begrenset fordel fordi bruk av kontakter er en veldig kostbar måte å få tilgang til en delmengde av dataene. Dataene må fremdeles legges sekvensielt, ellers vil ytelsen være dårlig fordi Cassandra vil trenge å gjøre en fullstendig tabellskanning, som er en scatter / collect-tilnærming som involverer mye diskforsinkelse.

En annen potensielt viktig begrensning av Cassandra er at den bare støtter eventuell konsistens. Mangelen på full ACID-overholdelse betyr at den ikke kan brukes til applikasjoner som flytter penger eller krever sanntidsinformasjon.

Som et resultat av disse begrensningene sliter ofte organisasjoner som ønsker å bruke dataene de har lagret i Cassandra for nye forretningsinitiativer med hvordan de skal gjøre det.

Skriv inn Apache Ignite

Apache Ignite er en databehandlingsplattform i minnet som kan bidra til å overvinne disse begrensningene i Cassandra, samtidig som du unngår overheadkostnadene ved tilkoblingsmetoden. Apache Ignite kan settes inn mellom Apache Cassandra og et eksisterende applikasjonslag uten endringer i Cassandra-dataene og bare minimale endringer i applikasjonen. Cassandra-dataene lastes inn i Ignite-minneklyngen, og applikasjonen får tilgang til dataene fra RAM i stedet for fra disk, og akselererer ytelsen med minst 1000 ganger. Data skrevet av applikasjonen skrives først til Ignite-klyngen for øyeblikkelig, kontinuerlig forbruk. Deretter skrives den til disk i Cassandra for permanent lagring med enten synkron eller asynkron skriving.

Apache Ignite har også den samme skrivestrategien som Apache Cassandra, så den vil føles kjent for Cassandra-brukere. I likhet med Cassandra er Ignite åpen kildekode, og brukerne drar nytte av et stort og aktivt fellesskap, med støtte tilgjengelig via en rekke fellessider. Som en databehandlingsplattform i minnet gjør Apache Ignite imidlertid organisasjoner i stand til å gjøre mye mer med Cassandra-dataene sine - og gjøre det raskere. Dette er hvordan.

  • Flere datalternativer — ANSI SQL-99 og ACID-transaksjonsgarantier

    Drevet av en ANSI SQL-99-kompatibel motor, tilbyr Apache Ignite ACID-transaksjonsgarantier for distribuerte transaksjoner. SQL Grid In-Memory gir databasemuligheter i minnet, og ODBC og JDBC API-er er inkludert. Ved å kombinere Ignite med Apache Cassandra, kan enhver type OLAP eller komplekse SQL-spørsmål skrives mot Cassandra-data som er lastet inn i Ignite. Ignite kan også brukes i flere moduser, fra konsistens til sanntid, full ACID-overholdelse, slik at organisasjoner kan bruke dataene som er lagret i Cassandra (men lese i Ignite) for en rekke nye applikasjoner og initiativer.
  • Ingen ombygging av Cassandra-data

    Apache Ignite leser fra Apache Cassandra og andre NoSQL-databaser, så å flytte Cassandra-data til Ignite krever ingen endring av data. Dataskjemaet kan også overføres direkte til Ignite som det er.
  • Høyere hastighet for datakrevende applikasjoner

    Å flytte alle Apache Cassandra-dataene til RAM gir raskest mulig ytelse og forbedrer spørringshastigheten sterkt fordi dataene ikke blir lest fra og skrevet til disk. Det er også mulig å bruke Apache Ignite til å cache bare den aktive delen av Cassandra-dataene for å oppnå en betydelig hastighetsforbedring. Ignites indekser ligger også i minnet, noe som gjør det mulig å utføre ultrasnelle SQL-spørringer på Cassandra-dataene som er flyttet til Ignite.
  • Enkel horisontal og vertikal skalering

    I likhet med Apache Cassandra, kan Apache Ignite enkelt skaleres horisontalt ved å legge til noder i Ignite-klyngen. De nye nodene gir øyeblikkelig ekstra minne for caching av Cassandra-data. Imidlertid skalerer Ignite også lett vertikalt. Ignite kan bruke alt minnet på en node, ikke bare JVM-minnet, og objekter kan defineres til å leve på eller utenfor haugen og bruke alt minnet på maskinene. På denne måten skalerer du bare minnemengden på hver node automatisk Ignite-klyngen vertikalt.
  • Økt tilgjengelighet

    I likhet med Apache Cassandra er peer-to-peer Apache Ignite databehandlingsplattform alltid tilgjengelig. Feilen til en node hindrer ikke applikasjoner i å skrive til og lese fra definerte sikkerhetskopinoder. Datadistribusjon er også automatisk ettersom en Ignite-klynge vokser. Fordi Ignite tilbyr sofistikert klyngestøtte, som å oppdage og avhjelpe splittede hjerneforhold, er det kombinerte Cassandra / Ignite-systemet mer tilgjengelig enn et frittstående Cassandra-system.
  • Enklere og raskere enn Hadoop

    Mange organisasjoner som ønsker å gjøre SQL-spørsmål i Apache Cassandra-dataene, kan vurdere å laste dataene inn i Hadoop. Ulempen med denne tilnærmingen er at etter å ha løst ETL- og datasynkroniseringsutfordringene som oppstår, ville spørsmålene til Hadoop fortsatt være relativt sakte. Mens kombinasjonen av Cassandra og Ignite også vil føre til noen små ytelseshit på grunn av det ekstra systemet og caching, utfører spørringer likevel med brennende hastighet, noe som gjør løsningen perfekt for sanntidsanalyse. Og det er mye enklere å administrere forholdet mellom Ignite og Cassandra-data.

Utfordringer med å implementere Cassandra og Ignite

Som nevnt ovenfor innebærer det å kombinere Apache Cassandra og Apache Ignite. Du får naturlig nok et treff i ytelsen - og kostnad og vedlikehold - med å ha to nettverk (som du ville gjort med tillegg av en hvilken som helst annen løsning). Det er en maskinvarekostnad for nye vareservere og tilstrekkelig RAM, og kanskje en abonnementskostnad for en bedriftsgrad og støttet versjon av Apache Ignite. Videre kan implementering og vedlikehold av Ignite kreve at noen organisasjoner ansetter ytterligere ekspertise. Som et resultat er en kostnads ​​/ nytte-analyse garantert for å sikre at de strategiske fordelene ved enhver ny brukstilfelle, sammen med ytelsesgevinster, oppveier kostnadene.

Når du tar denne beslutningen, er følgende hensyn viktige. For det første er Apache Ignite, i motsetning til den forrige generasjonen av databehandlingsløsninger i minnet, som krevde å koble sammen flere produkter, en fullt integrert, enkel å distribuere løsning. Integrering av Ignite med Apache Cassandra er vanligvis en veldig grei prosess. Tenn lysbilder mellom Cassandra og et program, for eksempel Apache Kafka eller en annen klient, som får tilgang til dataene. Ignite inkluderer en forhåndsbygd Cassandra-kontakt, som forenkler prosessen. Programmet leser og skriver deretter ut av Ignite i stedet for Cassandra, så det er alltid tilgang til data fra minne i stedet for fra disk. Ignite håndterer automatisk lesingene og skriver ut av og inn i Cassandra.

For det andre, mens mange fremdeles tenker på dataminnet som uoverkommelig dyrt, har kostnadene for RAM sunket omtrent 30 prosent per år siden 1960-tallet. Selv om RAM fremdeles er pund for pund dyrere enn SSD-er, kan ytelsesfordelen ved å bruke terabyte RAM i en dataklynge i minnet, spesielt for store, oppdragskritiske applikasjoner, gjøre databehandling i minnet til den mest kostnadseffektive nærme seg.

Endelig er Apache Ignite et trygt spill med en moden kodebase. Det oppsto som et privat prosjekt i 2007, ble donert til Apache Software Foundation i 2014, og ble uteksaminert til et toppnivåprosjekt omtrent et år senere - det nest raskeste Apache-prosjektet som ble uteksaminert etter Apache Spark.

Apache Cassandra er en solid, velprøvd løsning som kan være et viktig element i mange datastrategier. Med Apache Ignite kan Cassandra-data gjøres mer nyttige. Apache Ignite-databehandlingsplattformen er en rimelig og effektiv løsning for å gjøre Cassandra-data tilgjengelig for nye OLTP- og OLAP-brukstilfeller, samtidig som de oppfyller de ekstreme ytelseskravene til dagens applikasjoner på nettet. . Den kombinerte løsningen opprettholder den høye tilgjengeligheten og den horisontale skalerbarheten til Cassandra, samtidig som den legger til ANSI SQL-99-kompatible spørringsmuligheter, vertikal skalerbarhet, mer robust konsistens med ACID-transaksjonsgarantier og mer - alt sammen med ytelse som er 1000 ganger raskere enn diskbasert nærmer seg.

New Tech Forum er et sted for å utforske og diskutere ny teknologi i enestående dybde og bredde. Valget er subjektivt, basert på vårt valg av teknologiene vi mener er viktige og av størst interesse for leserne. godtar ikke markedsføringssikkerhet for publisering og forbeholder seg retten til å redigere alt bidratt innhold. Send alle henvendelser til [email protected].

$config[zx-auto] not found$config[zx-overlay] not found