Kürzlich hat mich einer meiner Kunden gebeten, eine Entscheidung über die Auswahl einer Datenbank für ein Industrieprojekt zu treffen (wo es viele Sensoren geben kann, einschließlich einer Kamera für Fotos oder Videos) – wo der Datenfluss riesig ist.
Ich denke darüber nach, entweder MongoDB oder Cassandra zu verwenden. Darüber hinaus bittet mein Client darum, DB zu wählen, deren Programmiersprache T-SQL (SQL Server) ähnlich ist [Ich bin mir nicht sicher, ob eine dieser Sprachen T-SQL ähnlich ist oder NICHT - wenn nicht, dann muss dies möglicherweise der Fall sein Client das verstehen lassen] - Vielleicht haben sie Leute, die T-SQL verstehen können.
Kann mir bitte jemand sagen, welches am besten wäre und warum? Gibt es eine andere DB, die ich dafür verwenden kann?
tldr; Ich werde sagen, dass Cassandra wahrscheinlich die bessere Wahl für Sie ist.
möglicherweise viele Sensoren, einschließlich Kamera für Fotos oder Videos] - Wo der Datenfluss riesig ist.
Aufgrund ihrer protokollbasierten Natur ist das Verfolgen von Sensordaten ein guter Anwendungsfall für Cassandra. Die Fähigkeit, große Mengen an Schreibdurchsatz zu bewältigen, ist eine Stärke von Cassandra, und Sie können linear skalieren, indem Sie so viele Knoten wie nötig hinzufügen, um die Arbeitslast zu bewältigen. Sie werden auch feststellen, dass das Sharding von Replikaten über mehrere Knoten mit Cassandra (aufgrund der Implementierung virtueller Knoten) einfacher zu konfigurieren ist.
Der Client fragt, ob er eine Datenbank auswählen möchte, deren Programmiersprache T-SQL ähnelt
Die Cassandra Query Language (CQL) ist SQL sehr ähnlich. Einige der Befehle sind genau gleich. Dies wurde absichtlich getan, um zu versuchen, die Lernkurve für Cassandra zu senken.
Allerdings ist dies auch ein zweischneidiges Schwert. Obwohl sie sich ähnlich anfühlen, sind CQL und SQL nicht dasselbe. Die Mehrheit meiner Mitarbeiter bei StackOverflow kommt von der Unterstützung von Entwicklern bei CQL-Abfragen, die sie mit einer SQL/relationalen Denkweise angegangen sind. Um es kurz zu machen, Sie können sich in Schwierigkeiten bringen, indem Sie SQL-basierte Annahmen über CQL machen, also müssen Sie und/oder Ihr Kunde damit vorsichtig sein.
MongoDB verwendet eine Javascript-basierte Abfragesprache. Obwohl es SQL nicht im Entferntesten ähnlich ist, kommen erfahrene Javascript-Hacker in der Regel gut damit zurecht.
Einige zusätzliche Warnhinweise zu Cassandra:
Zusammenfassend klingt Cassandra besser für Sie geeignet (vorausgesetzt, Sie erstellen ein gutes Datenmodell und löschen nicht oft), da es diese Kriterien erfüllt:
Zunächst einmal: Wenn Ihr Kunde Sie etwas fragt, das Sie aufgrund Ihrer eigenen Kenntnisse und Erfahrungen nicht gründlich beantworten können, ist es meiner Meinung nach eine sehr schlechte Geschäftspraxis, Vorschläge zu machen.
Die Anforderungen sind auch etwas matschig, um es gelinde auszudrücken.
Wo der Datenfluss riesig ist
Bei richtiger Einrichtung können sowohl Cassandra als auch MongoDB riesige Datenmengen verarbeiten. Nochmal: wenn richtig eingestellt . Beide DBMS erfordern einiges an Wissen und Erfahrung, um die Last effizient zu handhaben. Da es scheint, dass beides weder auf Ihrer noch auf Kundenseite vorhanden ist, ist es kurz- bis mittelfristig unvermeidlich, jemanden einzustellen, der sowohl Wissen als auch Erfahrung hat. Solch eine weitreichende Technologieentscheidung sollte auf Fakten und Analysen basieren, nicht auf bloßen Annahmen oder oberflächlicher Dokumentation.
Außerdem bittet mein Kunde darum, DB zu wählen, dessen Programmiersprache T-SQL ähnelt
Natürlich ist er das, da der Kunde davon ausgeht , dass im Unternehmen vorhandenes Wissen wiederverwendet werden kann. Meistens ist dies eine fehlerhafte Schlussfolgerung, wie @Aaron eloquent beschrieben hat . Ich empfehle dringend, eine Entscheidung nicht nach Zugangssprache zu treffen, sondern nach Eignung für den beabsichtigten Zweck. Wie bereits erwähnt, muss diese Eignung durch die Analyse der Anwendungsfälle und anderer Anforderungen bestimmt werden.
Wenn auch nicht ausdrücklich erwähnt, handelt es sich vermutlich um Zeitreihendaten. Es könnte sich lohnen, einen Blick auf InfluxDB zu werfen , das Teil einer ganzen Sammlung von Software ist, die sich mit Zeitreihendaten befasst, von der Erfassung bis zur Metaanalyse.
Izzy