Zünde unter Cassandra mit Apache Ignite ein Feuer an

Nikita Ivanov ist Mitbegründer und CTO von GridGain Systems.

Apache Cassandra ist aus mehreren Gründen eine beliebte Datenbank. Die verteilte Open-Source-NoSQL-Datenbank weist keinen einzigen Fehlerpunkt auf und eignet sich daher gut für Hochverfügbarkeitsanwendungen. Es unterstützt die Replikation mehrerer Rechenzentren, sodass Unternehmen eine höhere Ausfallsicherheit erzielen können, indem sie beispielsweise Daten in mehreren Verfügbarkeitszonen von Amazon Web Services speichern. Es bietet auch eine massive und lineare Skalierbarkeit, sodass eine beliebige Anzahl von Knoten problemlos zu jedem Cassandra-Cluster in jedem Rechenzentrum hinzugefügt werden kann. Aus diesen Gründen setzen Unternehmen wie Netflix, eBay, Expedia und mehrere andere Cassandra seit vielen Jahren für wichtige Teile ihres Geschäfts ein.

Im Laufe der Zeit, wenn sich die Geschäftsanforderungen ändern und die Bereitstellung von Cassandra skaliert, sind viele Unternehmen jedoch durch einige Einschränkungen von Cassandra eingeschränkt, die wiederum die Möglichkeiten einschränken, die sie mit ihren Daten haben. Apache Ignite, eine In-Memory-Computing-Plattform, bietet diesen Organisationen eine neue Möglichkeit, auf ihre Cassandra-Infrastruktur zuzugreifen und diese zu verwalten. So können sie Cassandra-Daten für neue OLTP- und OLAP-Anwendungsfälle verfügbar machen und gleichzeitig eine extrem hohe Leistung erzielen.

Einschränkungen von Cassandra

Eine grundlegende Einschränkung von Cassandra besteht darin, dass es sich um eine festplattenbasierte Datenbank handelt, nicht um eine In-Memory-Datenbank. Dies bedeutet, dass die Leseleistung immer durch E / A-Spezifikationen begrenzt wird, was letztendlich die Anwendungsleistung und die Fähigkeit einschränkt, eine akzeptable Benutzererfahrung zu erzielen. Betrachten Sie diesen Vergleich: Was auf einem In-Memory-System in einer Minute verarbeitet werden kann, würde auf einem festplattenbasierten System Jahrzehnte dauern. Selbst mit Flash-Laufwerken würde es noch Monate dauern.

Während Cassandra eine sehr schnelle Datenschreibleistung bietet, erfordert das Erreichen einer optimalen Leseleistung, dass die Cassandra-Daten nacheinander auf die Festplatte geschrieben werden, damit der Plattenkopf beim Lesen so lange wie möglich scannen kann, ohne dass der Kopf von Ort zu Ort springt . Um dies zu erreichen, müssen die Abfragen einfach sein, ohne JOINs, GROUP BYs oder Aggregation, und die Daten müssen für diese Abfragen modelliert werden. Daher bietet Cassandra überhaupt keine Ad-hoc- oder SQL-Abfragefunktion.

DataStax, ein Unternehmen, das eine kommerzielle Edition von Apache Cassandra entwickelt und unterstützt, hat die Möglichkeit hinzugefügt, Cassandra mit Apache Spark und Apache Solr zu verbinden, um Analysen zu unterstützen. Diese Strategie bietet jedoch nur begrenzte Vorteile, da die Verwendung von Konnektoren eine sehr teure Möglichkeit ist, auf eine Teilmenge der Daten zuzugreifen. Die Daten müssen noch nacheinander festgelegt werden, da sonst die Leistung schlecht ist, da Cassandra einen vollständigen Tabellenscan durchführen müsste. Dies ist ein Scatter / Gather-Ansatz mit hoher Latenzzeit.

Eine weitere potenziell wichtige Einschränkung von Cassandra besteht darin, dass nur eine eventuelle Konsistenz unterstützt wird. Aufgrund der mangelnden vollständigen ACID-Konformität kann es nicht für Anwendungen verwendet werden, die Geld bewegen oder Echtzeit-Inventarinformationen benötigen.

Aufgrund dieser Einschränkungen haben Unternehmen, die die in Cassandra gespeicherten Daten für neue Geschäftsinitiativen verwenden möchten, häufig Schwierigkeiten, dies zu tun.

Geben Sie Apache Ignite ein

Apache Ignite ist eine In-Memory-Computing-Plattform, mit der diese Einschränkungen in Cassandra überwunden und gleichzeitig die Overhead-Kosten des Connector-Ansatzes vermieden werden können. Apache Ignite kann zwischen Apache Cassandra und einer vorhandenen Anwendungsschicht eingefügt werden, ohne dass Änderungen an den Cassandra-Daten und nur minimale Änderungen an der Anwendung vorgenommen werden. Die Cassandra-Daten werden in den In-Memory-Cluster von Ignite geladen, und die Anwendung greift transparent vom RAM statt von der Festplatte auf die Daten zu, wodurch die Leistung um mindestens das 1.000-fache beschleunigt wird. Von der Anwendung geschriebene Daten werden zuerst in den Ignite-Cluster geschrieben, um sie sofort und kontinuierlich zu verbrauchen. Es wird dann in Cassandra zur dauerhaften Speicherung mit synchronen oder asynchronen Schreibvorgängen auf die Festplatte geschrieben.

Apache Ignite hat auch die gleiche Schreibstrategie wie Apache Cassandra, sodass sich Cassandra-Benutzer vertraut fühlen. Wie Cassandra ist Ignite Open Source und seine Benutzer profitieren von einer großen und aktiven Community, deren Unterstützung über eine Reihe von Community-Websites verfügbar ist. Als In-Memory-Computing-Plattform ermöglicht Apache Ignite Unternehmen jedoch, viel mehr mit ihren Cassandra-Daten zu tun - und das schneller. Hier ist wie.

  • Weitere Datenoptionen - ANSI SQL-99- und ACID-Transaktionsgarantien

    Apache Ignite basiert auf einer ANSI SQL-99-kompatiblen Engine und bietet ACID-Transaktionsgarantien für verteilte Transaktionen. Das speicherinterne SQL-Raster bietet speicherinterne Datenbankfunktionen, und ODBC- und JDBC-APIs sind enthalten. Durch die Kombination von Ignite mit Apache Cassandra kann jede Art von OLAP oder komplexer SQL-Abfrage für Cassandra-Daten geschrieben werden, die in Ignite geladen wurden. Ignite kann auch in mehreren Modi betrieben werden, von der eventuellen Konsistenz bis zur vollständigen ACID-Konformität in Echtzeit. So können Unternehmen die in Cassandra gespeicherten Daten (die jedoch in Ignite eingelesen werden) für eine Vielzahl neuer Anwendungen und Initiativen verwenden.
  • Kein Umbau von Cassandra-Daten

    Apache Ignite liest aus Apache Cassandra und anderen NoSQL-Datenbanken, sodass für das Verschieben von Cassandra-Daten in Ignite keine Datenänderungen erforderlich sind. Das Datenschema kann auch unverändert direkt in Ignite migriert werden.
  • Höhere Geschwindigkeit für datenintensive Anwendungen

    Das Verschieben aller Apache Cassandra-Daten in den Arbeitsspeicher bietet die schnellstmögliche Leistung und verbessert die Abfragegeschwindigkeit erheblich, da die Daten nicht ständig von der Festplatte gelesen und auf die Festplatte geschrieben werden. Es ist auch möglich, mit Apache Ignite nur den aktiven Teil der Cassandra-Daten zwischenzuspeichern, um einen signifikanten Geschwindigkeitsschub zu erzielen. Die Indizes von Ignite befinden sich ebenfalls im Speicher, sodass ultraschnelle SQL-Abfragen für die in Ignite verschobenen Cassandra-Daten durchgeführt werden können.
  • Einfache horizontale und vertikale Skalierung

    Wie Apache Cassandra lässt sich Apache Ignite einfach horizontal skalieren, indem dem Ignite-Cluster Knoten hinzugefügt werden. Die neuen Knoten bieten sofort zusätzlichen Speicher zum Zwischenspeichern von Cassandra-Daten. Ignite lässt sich jedoch auch leicht vertikal skalieren. Ignite kann den gesamten Speicher auf einem Knoten verwenden, nicht nur den JVM-Speicher, und Objekte können so definiert werden, dass sie auf dem Heap oder außerhalb des Heaps leben und den gesamten Speicher auf den Computern verwenden. Auf diese Weise wird der Ignite-Cluster durch vertikales Erhöhen des Arbeitsspeichers auf jedem Knoten automatisch vertikal skaliert.
  • Erhöhte Verfügbarkeit

    Wie Apache Cassandra ist auch die Peer-to-Peer-Computerplattform Apache Ignite immer verfügbar. Der Ausfall eines Knotens verhindert nicht, dass Anwendungen auf definierte Sicherungsknoten schreiben und von diesen lesen. Die Datenumverteilung erfolgt ebenfalls automatisch, wenn ein Ignite-Cluster wächst. Da Ignite eine ausgefeilte Clustering-Unterstützung bietet, z. B. das Erkennen und Beheben von Split-Brain-Zuständen, ist das kombinierte Cassandra / Ignite-System besser verfügbar als ein eigenständiges Cassandra-System.
  • Einfacher und schneller als Hadoop

    Viele Organisationen, die SQL-Abfragen in ihre Apache Cassandra-Daten durchführen möchten, ziehen das Laden der Daten in Hadoop in Betracht. Der Nachteil dieses Ansatzes besteht darin, dass die Abfragen in Hadoop nach dem Lösen der auftretenden ETL- und Datensynchronisierungsprobleme immer noch relativ langsam sind. Während die Kombination von Cassandra und Ignite aufgrund des zusätzlichen Systems und des Zwischenspeicherns zu geringfügigen Leistungseinbußen führt, werden Abfragen dennoch mit rasender Geschwindigkeit ausgeführt, sodass die Lösung perfekt für Echtzeitanalysen geeignet ist. Die Verwaltung der Beziehung zwischen Ignite- und Cassandra-Daten ist viel einfacher.

Herausforderungen bei der Implementierung von Cassandra und Ignite

Wie oben erwähnt, ist das Kombinieren von Apache Cassandra und Apache Ignite mit Kosten verbunden. Die Leistung - sowie die Kosten und die Wartung - von zwei Netzwerken sind natürlich beeinträchtigt (wie bei jeder anderen Lösung). Es fallen Hardwarekosten für neue Commodity-Server und ausreichend RAM an, und möglicherweise Abonnementkosten für eine Enterprise-Version und unterstützte Version von Apache Ignite. Für die Implementierung und Wartung von Ignite müssen einige Organisationen möglicherweise zusätzliches Fachwissen einstellen. Infolgedessen ist eine Kosten-Nutzen-Analyse erforderlich, um sicherzustellen, dass der strategische Nutzen eines neuen Anwendungsfalls zusammen mit den Leistungssteigerungen die Kosten überwiegt.

Bei dieser Bestimmung sind die folgenden Überlegungen wichtig. Erstens ist Apache Ignite im Gegensatz zur vorherigen Generation von In-Memory-Computing-Lösungen, bei denen mehrere Produkte zusammengeschustert werden mussten, eine vollständig integrierte, einfach zu implementierende Lösung. Die Integration von Ignite in Apache Cassandra ist normalerweise sehr einfach. Ignite Folien zwischen Cassandra und einer Anwendung wie Apache Kafka oder einem anderen Client, der auf die Daten zugreift. Ignite enthält einen vorgefertigten Cassandra-Anschluss, der den Vorgang vereinfacht. Die Anwendung liest und schreibt dann aus Ignite anstelle von Cassandra, sodass immer auf Daten aus dem Speicher anstatt von der Festplatte zugegriffen wird. Ignite verarbeitet automatisch die Lese- und Schreibvorgänge von und in Cassandra.

Zweitens: Während viele In-Memory-Computing immer noch als unerschwinglich teuer betrachten, sind die RAM-Kosten seit den 1960er Jahren um etwa 30 Prozent pro Jahr gesunken. Obwohl RAM immer noch Pfund für Pfund teurer ist als SSDs, kann der Leistungsvorteil der Verwendung von Terabyte RAM in einem In-Memory-Computing-Cluster, insbesondere für große, geschäftskritische Anwendungen, das In-Memory-Computing zum kostengünstigsten machen Ansatz.

Schließlich ist Apache Ignite eine sichere Wette mit einer ausgereiften Codebasis. Es entstand 2007 als privates Projekt, wurde 2014 an die Apache Software Foundation gespendet und etwa ein Jahr später zu einem Spitzenprojekt abgeschlossen - dem zweitschnellsten Apache-Projekt, das nach Apache Spark abgeschlossen wurde.

Apache Cassandra ist eine solide, bewährte Lösung, die ein wesentliches Element vieler Datenstrategien sein kann. Mit Apache Ignite können Cassandra-Daten nützlicher gemacht werden. Die In-Memory-Computing-Plattform Apache Ignite ist eine kostengünstige und effektive Lösung, um Cassandra-Daten für neue OLTP- und OLAP-Anwendungsfälle verfügbar zu machen und gleichzeitig die extremen Leistungsanforderungen heutiger Web-Scale-Anwendungen zu erfüllen . Die kombinierte Lösung bewahrt die hohe Verfügbarkeit und horizontale Skalierbarkeit von Cassandra und bietet ANSI SQL-99-kompatible Abfragefunktionen, vertikale Skalierbarkeit, robustere Konsistenz mit ACID-Transaktionsgarantien und vieles mehr - und bietet gleichzeitig eine Leistung, die 1.000-mal schneller ist als die festplattenbasierte nähert sich.

Das New Tech Forum bietet einen Ort, an dem Sie neue Unternehmenstechnologien in beispielloser Tiefe und Breite erkunden und diskutieren können. Die Auswahl ist subjektiv, basierend auf unserer Auswahl der Technologien, die wir für wichtig und für die Leser von größtem Interesse halten. akzeptiert keine Marketingmaterialien zur Veröffentlichung und behält sich das Recht vor, alle eingebrachten Inhalte zu bearbeiten. Senden Sie alle Anfragen an [email protected]