Frage

Angenommen, ich habe ein großes Munmount heterogener JSON-Dokumente (dh benannte Schlüsselwert-Zuordnungen) und eine Hierarchie von Klassen (dh benannte Sets), an die diese Dokumente beigefügt sind. Ich muss eine Datenstruktur einrichten, die zulässt:

  1. CRUD -Operationen auf JSON -Dokumenten.
  2. JSON -Dokumente nach ID abrufen sehr schnell.
  3. Abrufen aller JSON -Dokumente, die an eine bestimmte Klasse beigefügt sind sehr schnell.
  4. Bearbeitungsklassenhierarchie: Hinzufügen/Löschen von Klassen, neu ordnen.

Ich habe zunächst die Idee entwickelt, JSON-Dokumente in einer dokumentorientierten Datenbank (wie CouchDB oder MongoDB) zu speichern und Klassenhierarchie in einem RDF-Speicher (wie 4Store) zu speichern. 1, 2 und 4 werden dann natürlich herausgefunden, und 3 gelöst, indem die Liste der beigefügten Dokument -IDs für jede Klasse im Speicher aufbewahrt wird.

Aber dann stellte ich fest, dass ein RDF-Speicher tatsächlich den dokumentorientierten Teil des Abrufens von JSON-Dokumenten durch ID ausführen könnte. Auf einen ersten Blick scheint dies wahr zu sein, aber ich bin immer noch besorgt darüber 2 und 3. Gibt es einen RDF-Speicher, der in der Lage ist, Dokumente (Knoten) mit einem Geschwindigkeitsdokument-orientierten DB-Servic-Dokumenten abzurufen? Wie schnell wird es dienen 3-ähnliche Fragen? Ich habe ein wenig von RDF -Storagen gehört, das langsam, das Problem der Wiedergabe usw. ist.

Gibt es einen RDF -Speicher, der beispielsweise auch so komfortabel ist, dass sie durch ID nach ID abrufen? Was ist der Unterschied zwischen der Verwendung von dokumentorientiertem und RDF-Speicher zum Speichern, Abrufen und Bearbeiten von JSON-ähnlichen Objekten?

War es hilfreich?

Lösung

Das nächste, was Sie in RDF -Datenbanken verwenden können, werden als Diagramme bezeichnet. In einem benannten Diagramm können Sie eine Reihe von RDF -Dreifachgräben einstellen. Dieser Tripel kann je nach Ihren Anforderungen aus einem oder vielen RDF -Dokumenten gilt. Nehmen wir an, Sie möchten ein mit dem Namen Graph pro RDF -Dokument. Sie können das Diagramm mit einem URI benennen, der den Dateispeicherort eine URL oder eine IRI widerspiegelt. Zum Beispiel ...

http://yourdomain/files/rdf_file_1

oder

file:///home/myrdffiles/file1

4Store ist ein Quad -Store. Quad -Stores unterstützt benannte Graphs und 4Store ist speziell für das Verhalten dieser Weise gestaltet.

Mit 4 Store können Sie den folgenden Befehl ausführen, um Dreifach in einem benannten Diagramm zu gründen:

curl -T your_file.rdf http://your_4store_database/data/http://yourdomain/files/rdf_file_1

Nach /data/ Sie können den Graph Identifier (IRI), in dem die Dreifachs geltend gemacht werden, einsetzen. Sehen 4Store Sparql Server und 4 -Store -Kunde Libs für mehr Details.

Sobald Sie Ihre Daten geltend gemacht haben, können Sie mit SPARQL auch das benannte Diagramm verwenden, um Ihre Abfrage in dieses Diagramm zu lenken:

SELECT * WHERE {
   GRAPH <http://youdomain/files/rdf_file_1> {
        .... some triple patterns in here ....
   }
}

Darüber hinaus unterstützt 4Store JSON, sodass Sie das Sparql -Ergebnis direkt in JSON abrufen können.

Wenn Sie sich für die Verwendung von 4Store entscheiden, finden Sie hier wertvolle Unterstützung: http://4store.org/contact

Andere Tipps

Sie haben diese Frage ursprünglich für Grafikdatenbanken gestellt (wie Neo4j). Deshalb möchte ich ein paar Notizen hinzufügen.

  1. Diagrammdatenbanken verwenden integriert Indizierung Für Knoten (und Beziehungen) erfolgt die schnelle Anfänger nach den Stammknoten Ihrer Dokumente über diese (externe oder in Graphindizes)
  2. Zusätzliche In-Graph-Indizes für Pfade (tatsächlich Bäume bis zur Wurzel) können sauberer modelliert werden, die nur eine Schlüsselwerte suchen)
  3. Wenn Sie Ihre Dokumente als Bäume von Knoten mit Eigenschaften modellieren, können Sie einfache und komplexe CRUD -Operationen ausführen (auch strukturell)
  4. Das Abrufen aller Dokumente eines "Typs" oder "Klasse" kann erneut durch einen Index (Index -Root -Knoten zum Typ) oder in Grafikkategorieknoten erfolgen
  5. Sie können diese "Typen oder Klasse" -Kategorie-Nodes in eine Hierarchie (oder ein Diagramm) einfügen, die dann mit der üblichen Diagrammdatenbank-API bearbeitet werden können
  6. Durch das Durchqueren des Diagramms kann erledigt werden. Traverser / Integrierte Graph -Abfragesprache (z. B. zB Cypher für Neo4j)
  7. Das Laden hierarchischer Daten kann entweder von benutzerdefinierten Importeuren oder einem allgemeineren Subgraphimporteur (z. Geoff)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top