2012-10-19 5 views
11

Ich frage mich, warum Neo4j eine Kapazitätsgrenze für Knoten und Beziehungen hat. Die Grenze für Knoten und Beziehungen ist 2^35 1, was ein "kleines" Bit mehr als die "normale" 2^32 Integerzahl ist. Gemeinsame SQL-Datenbanken zum Beispiel mysql speichert dort Primärschlüssel als int (2^32) oder bigint (2^64) 2. Können Sie mir die Vorteile dieser Entscheidung erklären? Meiner Meinung nach ist dies ein entscheidender Punkt bei der Auswahl einer Datenbank.Warum gibt es dieses Kapazitätslimit für Knoten und Beziehungen in neo4j?

+0

Sie haben alle diese Einschränkungen in Neo4j 3.0 entfernt. Siehe meine Antwort [unten] (http://stackoverflow.com/a/37033847/1925109). – Hassan

Antwort

11

Es ist eine künstliche Grenze. Sie werden es in nicht allzu ferner Zukunft entfernen, obwohl ich keine offizielle ETA gehört habe.

Oft genug stoßen Sie auf einer einzelnen Maschine auf Hardwarelimits, bevor Sie dieses Limit tatsächlich erreichen.

Die aktuelle Option besteht darin, Ihre Diagramme manuell auf verschiedene Maschinen zu übertragen. Nicht ideal für einige Anwendungsfälle, aber in anderen Fällen. In Zukunft werden sie Daten automatisch teilen können - auch keine ETA.

Update: Ich habe ein bisschen mehr über Neo4j Storage Interna gelernt. Der Grund, warum die Grenzen genau sind, liegt darin, dass die ID-Nummern auf der Platte als Zeiger an mehreren Stellen gespeichert sind (Knotendatensätze, Beziehungsdatensätze usw.). Um es um eine weitere Potenz von 2 zu erhöhen, müssten sie 1 Byte pro Knoten und 1 Byte pro Beziehung erhöhen - es ist derzeit so weit gepackt, wie es geht, ohne dass mehr Bytes auf der Festplatte benötigt werden. Erfahren Sie mehr unter dieser großen Blog-Post: http://digitalstain.blogspot.com/2010/10/neo4j-internals-file-storage.html

Update 2:
Ich habe gehört, dass in 2.1 werden sie diese Grenzen um eine andere Größenordnung zuzunehmen höher, als sie derzeit sind.

0

Ab neo4j 3.0 werden alle diese Einschränkungen entfernt.

Die dynamische Zeigerkomprimierung erweitert den verfügbaren Adressraum von Neo4j nach Bedarf, sodass Grafiken jeder Größe gespeichert werden können. Das stimmt: Keine 34 Milliarden Knotenlimits mehr!

Für weitere Informationen besuchen Sie bitte http://neo4j.com/blog/neo4j-3-0-massive-scale-developer-productivity.