"Eine Graphdatenbank - transformiert a- & gt; RDBMS "
Die Neo4j Seite scheint zu implizieren, dass was auch immer Sie in RDBMS tun können, Sie in Neo4j tun können.
Bevor Sie sich für Neo4j als Ersatz für ein RDBMS entscheiden, müssen einige Zweifel beantwortet werden.
Ich interessiere mich für Neo4j für
Dies ist eine NoSQL-Lösung, an der ich mich für ihre Funktionen interessiere, nicht für hohe Leistung.
Frage: Gibt es in Neo4j Probleme, die es als RDBMS-Ersatz ungeeignet machen ?
Ich bin besonders besorgt über diese:
Dies ist ein extrem breites Thema, das alles von der Modellierung und Implementierung bis hin zu IT und Support umfasst. Es ist unmöglich, all diese Fragen wirklich zu beantworten, besonders ohne Details zu Ihrer Situation. Sie scheinen jedoch Optionen und Möglichkeiten zu erkunden. Also gebe ich nur ein paar allgemeine Denkanstöße als jemanden weiter, der eine Reihe von Systemen implementiert hat.
Jeder scheint zu glauben, dass sein neues Datenbankparadigma ein Ersatz für relationale Datenbanken ist. Also, nimm diese Behauptungen mit einem Körnchen Salz.
Ich mag es, in drei grundlegenden Modellen zu denken: Relational, Document und Graphing. Abhängig von Ihrem Problemraum ist eine oder mehrere davon die richtige Antwort. Ich würde keine finanziellen Transaktionen in irgendetwas tun, außer relational (SQL Based). Wenn Sie ein CMS erstellen, ist eine Dokument-DB der richtige Weg. Wenn meine Anwendung Netzwerke (Straßen, Personen, Verbindungen, Netzwerke usw.) modelliert, verwende ich Neo4J.
Was die Produktionsqualität angeht, gibt es in jeder Kategorie solide Optionen. Relational hat eine Menge. Für Dokumentendatenbanken würde ich MongoDB oder ein höheres JCR System wie Apache Jackrabbit gehen. Für die grafische Darstellung habe ich nur Erfahrung mit Neo4j und es ist für mich felsenfest.
Was auch immer Sie tun, kaufen Sie nicht den Hype, dass "Wir haben die eine Technologie, die all Ihre Probleme löst". Es ist nicht da und es verengt dein Denken.
Ich bin überzeugt, dass Neo4j inzwischen ein guter Ersatz für relationale Datenbanken ist.
aber
Obwohl es die Replikation unterstützt und Neo es explizit als Big-Data-Produkt vermarktet, kann ich nicht bestätigen, dass es skalierbar genug ist und ich habe keine Sicherheitsaspekte untersucht.
In den letzten Releases (jünger als die obige Frage) kann man Indizes für Labels definieren, die wie Indizes für Tabellen in einer relationalen Datenbank funktionieren und O (log (n)) Lookups erlauben.
(fyi: Neo4j hat keine Tabellen, aber jeder Knoten (~ = Zeile) kann verschiedene Labels haben, vergleichbar mit Gmail-Labels. Dies ist flexibler: Sie brauchen nicht zu wählen, ob Sie Autos und Fahrräder in einen legen Fahrzeugtabelle oder nicht: ein Fahrrad würde sowohl ein: Fahrzeug und a: Fahrradaufkleber haben.)
Um die ursprüngliche Frage zu beantworten: Neo4j unterstützt kaum die Schemaerzwingung . Neo-Advises, die automatisierte Konsistenztests für Ihre Datenbank implementieren, die Sie als Teil Ihres Veröffentlichungszyklus auf Ihrer Akzeptanztest-Instanz ausführen.
Wenn Sie eine Unternehmensdb wie Oracle verwenden, erhalten Sie viele, viele Funktionen, die möglicherweise Teil von neo sind. Dazu gehören:
Wenn Sie den Großteil der Funktionalität Ihrer Anwendung selbst in Code implementieren wollen und nicht die Struktur und die erweiterten Funktionen eines rdbms benötigen oder wenn Ihre Datenstrukturen für eine graph basierte Datenbank besser geeignet sind als alle anderen bedeutet Probe neo. Es gibt einen Grund, warum die meisten Unternehmens-Apps einen der traditionellen rdbms-Server verwenden, aber dies ist möglicherweise nicht immer der Fall in der Zukunft
Tags und Links database nosql neo4j graph-databases rdbms