2016-06-25 7 views
2

Ich werte derzeit mögliche NoSQL-Technologien für meinen Anwendungsfall aus. Ich habe viele Sensordatenprotokolle (mehrere TBs) und möchte die Daten in einer skalierbaren, effizienten Weise analysieren.Grafikdatenbanken für Sensordaten - Wie modelliert man die Beziehung?

Meine Sensordaten enthalten einen Zeitstempel, eine Position und eine Liste von Sensorattributnamen (z. B. "Temperatur") und Sensorattributwert (z. B. 12,9 ° C). Der Speicherort ist jedoch nicht in allen meinen Dateneinträgen vorhanden. Auch die Liste der Attribute pro Eintrag variiert. So ein Protokolleintrag könnten Daten wie folgt enthalten:

  • sensor_id: 1
  • Ort: lat/lon (Anmerkung: aber nicht immer in jedem Eintrag enthalten)
  • Datumzeit: timestamp_of_log_date
  • attribute_name1: "attribute_value1"
  • attribute_name2: 123123
  • attribute_name3: 0,933
  • attribute_nameN: "attribute_valueN"

Ich bin kürzlich auf Graphdatenbanken gestoßen und finde das Konzept interessant. Ich bin mir nicht sicher, ob mein Anwendungsfall in einer Diagrammdatenbank angewendet werden sollte, weil Beziehungen zwischen meinen Daten fehlen.

Es gibt einige Möglichkeiten, um eine Beziehung zwischen meinen Sensordaten zu modellieren, aber jetzt kann ich nur denken Sie an den folgenden Beziehungen:

  • Datum/Uhrzeit der Einträge Jahr-> Month-> Day-> Stunde-> Minute-> Second
  • Lage der Einträge Continent-> Country-> Bundesland-> Stadt-> Straße/PoI
  • Sensor ID-> Attributnamen

ich meine Daten am abfragt mit georäumlichen Abfragen, Zeit qu eries und "normale" Attributabfragen (field_x < = 1000).

Noch eine Anmerkung: Wenn ich geospatiale Abfragen ausführe, möchte ich normalerweise weitere Datensätze basierend auf dem Zeitstempel des Datensatzes auslesen, der in der räumlichen Abfrage gefunden wurde. Also im Grunde, wenn meine geospatial Abfrage beendet und einen Datensatz mit Timestamp "25.06.2016-20: 40: 30" zurückgibt, möchte ich auch alle anderen Datensätze, die einen Zeitstempel innerhalb einer Minute für jeden Datensatz in der Geospatial-Abfrage gefunden haben.

Neo4j zum Beispiel ist gut in der Verarbeitung von Geospatial-Abfragen, die eine ziemlich häufige Abfrageart für meine Anwendungsfall ist. Aber wie würde ich meine Daten modellieren? Wie sind meine Knoten mit den anderen Knoten verbunden? Müssen sie überhaupt angeschlossen werden?

+0

Sie können Spatial-Plugin für Neo4j verwenden. https://github.com/neo4j-contrib/spatial – piyush121

+1

Während das Aussehen, dass Sie keine Grafikdatenbank benötigen, um mit diesen Daten zu arbeiten. –

+0

@stdob Ich stimme zu, dass ich sicherlich keine Graphdatenbank benötige, um mit diesen Daten zu arbeiten, aber ist das eine schlechte Idee? – j9dy

Antwort

2

Während Sie sicherlich Möglichkeiten finden, Beziehungen mit diesen Daten zu modellieren, die Frage, was werden Sie mit diesen Beziehungen tun? Wenn die Beziehungen in Ihren Daten keinen großen Wert haben, dann macht es keinen Sinn, Neo4j (obwohl es eine großartige Graphdatenbank ist) für die räumlichen Abfragen zu verwenden.

Neo4j glänzt wirklich, wenn Sie Daten verbunden haben und es Wert gibt, der von diesen Verbindungen abgeleitet wird.

+0

Ich habe einen Zeitreihen-Usecase gefunden, der vom OrientDB-Team beschrieben wird. Sie haben ihre Beziehung im Wesentlichen so aufgebaut: Die Zeitreihenknoten sind Jahr-> Monat-> Tag-> Stunde und Stunde, dann Links zu einer Reihe von Log-Einträgen. Das ist fast mein Anwendungsfall, obwohl ich ihn mit räumlichen Daten bereichern würde. Es gibt jedoch eine Sache, von der ich nicht überzeugt bin ... stelle ich meine Standortdaten als eine Eigenschaft in meinen Protokolldatensatz ein oder baue ich eine andere Beziehung dafür auf? Würde es sich auf die Abfrage einer Menge auswirken? Siehe: http://orientdb.com/docs/2.1/Time-series-use-case.html – j9dy

+0

Tut mir leid, ich habe nicht genug Kenntnisse von OrientDB, um zu kommentieren – Luanne

Verwandte Themen