dedlfix: Welche Datenbank nehme ich am besten? :)

Beitrag lesen

Tach!

Ich kann dir da nur generelle Hinweise geben.

Ich habe ein Stochastisches Netzwert (Graph) gebaut, welchen ich dauerhaft auf meinem rechner speichern möchte und diesen möchte ich auch in regelmäßig Abständen updaten - das alles möchte ich in java machen.

Java ist vermutlich kein Problem. Das ist soweit verbreitet, dass es für jedes in Frage kommende System eine Anbindung geben sollte.

  1. Jeder knoten meines Graphen soll folgende Struktur erhalten:
    Knoten:
    a) Zeilen nummer
    b) gewicht (double oder int)
    c) name (string)

Kann man mit einer einfachen Tabelle abbilden.

  1. Jeder knoten bekommt eine zeile und in jeder spalte steht dann, welche anderen knoten von diesem einen knoten aus erreichbar sind.

Bei relationalen DBMS sollte man das nicht in eine Zeile bringen, weil das schlecht durchsuchbar ist. Mit MySQL kannst du auf solche Mehrfachdaten keinen gescheiten Index legen. Jede Beziehung bekommt einen eigenen Datensatz. Wenn es eine Baumstruktur ist (jedes Element kann zwar belibig viele Nachfahren haben, aber nur einen Vorfahren), dann reicht auch ein Parent-Verweis zu jedem Knoten in der Knoten-Tabelle.

  1. Mein ziel ist es dabei, bei millionen knoten, schnell einen pfad mit jeweiligen gewichten durchlaufen zu können.

Das ist mit einer relationalen Datenbank aufwendig, weil du hier rekursiv drauf losgehen musst. Für jeden nächsten Schritt braucht es das vorhergehende Ergebnis. Baumstrukturen kann man zwar mit Nested Sets abbilden, aber das bringt dir hier nichts, weil du keine kompletten Teilbäume abfragen möchtest, sondern dich per Gewicht vorwärts hangeln willst. Ein RDBMS bringt dir meiner Meinung nach keinen direkten Vorteil. Es kommt darauf an, ...

ich möchte bei bekannter zeilennummer, diese zeile sehr schnell erreichen können.

... dass die Elemente bei der Menge der Daten schnell gefunden werden. Und das sollte mit jeder sortierten Liste möglich sein. Verfahren dazu sind sattsam bekannt.

könnt ihr mir sagen, mit welcher Datenbank ich sowas hinbekomme? eventuell mit mysql? oder geht es eventuell simpler?

MySQL kannst du dafür nehmen, aber viel mehr als einen Key-Value-Store brauchst du meiner Einschätzung nach nicht (wobei ich nicht ausschließen möchte, dass diese auch gründlich daneben liegen kann).

dedlfix.