Ich bin auf der Suche nach einer NoSQL-Technologie, die die Anforderung erfüllt, geospatial sowie Zeit Abfragen in großem Maßstab mit anständige Leistung zu verarbeiten. Ich möchte mehrere hundert GBs mit der vorgeschlagenen NoSQL-Technologie zusammen mit Spark in TB-Daten verarbeiten. Dies wird offensichtlich auf einem Cluster mit mehreren Knoten ausgeführt.Welche NoSQL-Technologie für Geospatial und Time Queries?
Arten von Anfragen möchte ich ausführen:
- „normalen“ Abfragen für Attribute wie „Feld < = Wert“
- Grund geospatial Abfragen wie alle Abfragen von Daten, die innerhalb eines bbox beruht.
- Zeitabfragen wie „Datum < = 01.01.2011“ oder „time> = 11:00 Uhr und Zeit < = 14.00“
- eine Kombination aus allen drei Abfragetypen (so etwas wie „Abfrage alle Daten, die wo Lage ist in bbox und Datum 01.01.2011 und Zeit < = 14:00 Uhr und field_x < = 100")
ich zur Zeit der Bewertung, welche Technologien sind möglich für meine usecase aber ich bin überwältigt von der schieren Anzahl der verfügbaren Technologien. Ich habe über populäre Technologien wie MongoDB und Cassandra nachgedacht. Beide scheinen für meinen Anwendungsfall anwendbar zu sein (Cassandra nur mit Stratios Lucene Index), aber es könnte eine andere Technologie geben, die noch besser funktioniert.
Gibt es eine Technologie, die auf der Grundlage dieser Anforderungen stark übertroffen wird?
Ich habe über eine Cassandra-Spaltenfamilie nachgedacht, die folgendes enthält: sensor_id, timestamp, location (nicht in jedem Datensatz verfügbar!), Key, value. Dann haben Sie einen Clustering-Schlüssel auf meinem Feld "Schlüssel", so dass ich mehrere Schlüssel/Werte für jeden logischen Log-Eintrag haben kann. Wenn ich nach einem Ort suche, muss ich immer mehr Daten herausziehen, basierend auf dem Zeitstempel der zurückgegebenen Zeitstempel der Geoquery. Zum Beispiel, wenn meine Geoquery einen Datensatz mit dem Datum "25.06.2016-21: 18: 30" zurückgibt, möchte ich auch die letzten -5 und +5 Minuten lesen. Thats, wo sequentielle Lesevorgänge in wirklich handlich kommen könnten. Theres ein Problem, das ich sehe. [1/2] – j9dy
Nicht alle meine Protokolleinträge enthalten den Speicherort. Wenn ich also nach dem Ort frage, zum Beispiel mit einer "in bbox" -Abfrage, bekomme ich vielleicht einen einzelnen Eintrag, der einen Ort enthält. Dies würde erfordern, dass ich zuerst die Geoquery starte, sie abschließen lasse und danach das Datum/Zeit-Feld jedes zurückgegebenen Datensatzes nehme und einen sequentiellen Chunk basierend auf den -5 und +5 Minuten jedes von der Geoquery zurückgegebenen Datums liest. Dann hätte ich die Daten, die ich wirklich brauche. Ich muss auch auf das "Schlüssel" -Feld filtern, zum Beispiel "where key = velocity OR key = whatever". Ist das ein Problem? Gibt es eine Möglichkeit, dies zu beschleunigen? – j9dy