2017-09-20 2 views
0

Ich bin ein bisschen ein Noob mit NoSQL & kann nicht für Aerospike über vollständige In-Memory-Cassandra entscheiden.Aerospike über In-Memory-Cassandra?

Anwendungsfall: Für mehrere Dienste in unserer Universität verwendet werden (Von der sozialen Plattform zu internen Finanzanalysen zu Netzwerk-Logging zu Echtzeit-Messaging). Unsere täglichen aktiven Benutzer sind auch konstant (~ 5000). Meine primäre Anforderung ist also nicht, 1M + TPS zu erhalten, sondern die Latenz zu reduzieren und die Konsistenz aufrechtzuerhalten, die die Benutzerdaten so schnell wie möglich liefert. Die DB würde auf 3 Bare-Metal-Servern mit 32-Vcore 128GB-Ram 256GB-SSD laufen, die jeweils in 10Gbit verbunden sind. Die Daten werden Ram nicht überschreiten, da die meisten Daten alle sechs Monate auf einem anderen ElacticSearch Server archiviert werden.

Auch ich habe nichts dagegen, die Herausforderung zu nehmen und ein wenig über-Engineering & es ist in Ordnung, wenn der Cluster schwer einzurichten ist, aber es sollte wenig oder gar keine Wartung für Jahre benötigen.

So über In-Memory-DB schien der Aerospike eine gute Wahl. Dann war ich sehr aufgeregt, um flammend schnell zu gehen, aber dann schaute ich auf Aerospike total garbage? & We use Aerospike heavily. It works just fine. Nun, das brachte mich dazu zu denken, dass dies das beste für mich passt?

Oder soll ich gehen für die komplette In-Memory-Cassandra, die nicht für eine vollständiges optimierten In-Memory-Tabelle & noch weniger performant als Aerospike ist, aber ein besseres Datenmodell fit für mich, nicht Konsistenzprobleme hat und versucht wird, & getestet. (Ich bin fasziniert von ScyllaDB, aber es hat keine In-Memory-Tabellen)

Ich hätte gerne Antworten von Leuten mit Produktionserfahrung mit Aerospike & Cassandra. Bitte sag mir auch, ob ich völlig falsch liege.

+2

Der vernünftigste Weg, diese Frage zu beantworten, besteht darin, auf beiden Systemen einen eigenen Proof-of-Concept zu erstellen und diese für Ihren Anwendungsfall zu vergleichen. –

+2

Der Anwendungsfall "Aerospike Total Garbage" behandelt das Abrufen einer großen Anzahl von Datensätzen mithilfe der Sekundärindex-Abfrage oder -Scan und mit einem Knoten oder mehreren Knoten, die während dieser Vorgänge ausfallen. Wenn es in Ihrem Anwendungsfall darum geht, einen einzelnen Benutzerdatensatz abzufragen (ich nehme an, das ist, worüber Sie sprechen), dann bewerten Sie nicht die Kritik an Ihrem Anwendungsfall. – pgupta

Antwort

4

Mein erster Punkt ist, dass dies keine gültige Stackoverflow-Frage ist. Wenn Sie auf klicken Frage stellen die wie Blockzustände fragen Is your question about programming?

Das Medium Artikel schlecht Meinung von einem gesichtslosen Benutzer geschrieben werden, ohne dass Daten, die Ansprüche zu sichern. Ja, Aerospike hat bugs, wie alle Datenbanken. GCE selbst hat bugs, die eine verteilte Datenbank wie Aerospike beeinflussen können. Ich habe kein Problem im aerospike/aerospike-server Repo auf GitHub gesehen, das über die Probleme dieses Benutzers auf GCE spricht. Normalerweise melden Leute, die ein Softwareprodukt in der Produktion verwenden, einen Fehler, der sie stark beeinträchtigt. Das Fehlen eines Fehlerberichts ist ein "schlechter Geruch" - ist es FUD?

Aerospike wird tatsächlich für hohe Leistung bei hohem Maßstab von vielen customers verwendet. Ich gehe davon aus, dass, selbst wenn der Medium Blogger tatsächlich Aerospike in der Produktion verwendet, es wahrscheinlich nicht in der Größenordnung von 3Mtps gelesen wurde und 1,5Mtps schreibt, die AppNexus für ihre Aerospike-Installation sieht. Der Nachweis, ob es sich um eine geeignete Key-Value-Datenbank für ein Produktionssystem handelt, wird derzeit von echten Kunden genutzt.

Lassen Sie uns Ihre spezifische Frage zur Verwendung von Cassandra oder Aerospike für einen Schlüsselwert-Anwendungsfall behandeln. Sie möchten wahrscheinlich mit qualitativ hochwertigen Benchmarks beginnen, die die beiden vergleichen, aber wie stellen Sie fest, ob diese gut gemacht sind? Aerospike hat eine manifesto darüber veröffentlicht, wie qualitativ hochwertiges Benchmarking von Datenbanken aussehen sollte.

Wenn Sie auf einen Benchmark stoßen, lesen Sie den Post vollständig durch und überprüfen Sie die Objektgrößen, die Anzahl der Objekte, die Größe des Datensatzes und die Länge des Tests. Wenn der Hersteller chose a tiny data set und ihren Test für ein paar Minuten ausgeführt hat, ist es kein gültiger Benchmark.Es kann nichts darüber gelernt werden, wie die Datenbank bei realen, nachhaltigen Lasten über realistische Datengrößen hinweg für längere Zeiträume funktionieren würde.

Im Sinne des Manifests hat Aerospike einen detaillierten Benchmark im Vergleich zu Cassandra und ScyllaDB veröffentlicht. Beide zeigen, dass Aerospike konsistent niedrigere Latenzen mit wenig Variation aufweist, während die anderen Datenbanken wilde Latenzschwankungen aufweisen. Dies liegt an den Architekturunterschieden zwischen der Cache-First-Architektur der ersten Generation von NoSQL wie Cassandra (auch Couchebase, MongoDB usw.) und dem hybrid-memory architecture Design von Aerospike.

In einer Cache-First-Architektur sucht die Datenbank zuerst nach ihren In-Memory-Caches für die Schlüssel und Objekte und geht nur auf die Festplatte, wenn ein Cache-Miss vorliegt. Die Datenbank benötigt dann eine große Latenzzeit, um Daten von SSD in den Speicher zu paging und dann in diesem Speicher zu arbeiten. Solche Datenbanken erwarten die majority of reads to come out of cache. Sobald die Cache-Trefferquote in einen realistischen Bereich fällt (nicht ihre erhofften Werte von 80% - 95%), zeigt eine Cache-First-Datenbank Latenzspitzen an, wenn sie auf die Festplatte geht. Daher benötigt ein Cassandra-Cluster über viele Knoten hinweg viel Arbeitsspeicher.

Im Falle von Aerospike die Hybrid-Speicherarchitektur (HMA) hält den primary index (Metadaten über alle Objekte) in DRAM, und stützt sich auf optimizations around SSD performance die Daten von der Festplatte bei niedriger Latenzzeit direkt zu holen. Zwischen den verschiedenen SSDs gibt es eine große Leistungsspanne (siehe Aerospike on Intel Optane). Daher würden Sie Daten aus dem Open-Source-Tool ACT verwenden, um die nachhaltige Lese-/Schreibleistung der SSD zu verstehen und dennoch 95% der Operationen zu erreichen < = 1ms . HMA benötigt daher sehr wenig Speicher pro Knoten (64B pro Objekt multipliziert mit dem Replikationsfaktor), was zu kleineren Clustern führt. Die Daten werden direkt von der SSD bereitgestellt, so dass Sie selbst bei hoher Skalierung eine konstant niedrige Latenz für Ihre Operationen erwarten können.

Wenn Sie alle Ihre Daten vollständig im Speicher ablegen, sehen Sie sich What's New in Aerospike 3.12? und What's New in Aerospike 3.11? an, da sie Optimierungen für einen solchen Anwendungsfall enthalten. Speziell siehe sprigs und CPU pinning.