x

Re: Einsatz von SSD für die Datenbank


Geschrieben von amm (Gast) am 24. Oktober 2013 04:52:49: [flux]

Als Antwort auf: Einsatz von SSD für die Datenbank geschrieben von wambacher (Gast) am 23. Oktober 2013 12:50:

Wie Nop bereits geschrieben hatte, ist flate-nodes ein feature up die Node Daten in einer simplen Datei zu speichern. Postgresql ist eine generelle Datenbank, die mehr oder weniger beliebige Daten speichern kann. Das mach Postgres auch eigentlich sehr gut. Allerdings diese flexibilitaet kostet ein wenig overhead. Bei 2 Milliarden Nodes die inzwischen im Planet sind, addieren sich auch ein paar bytes overhead pro Node schnell zu sehr grossen Mengen.

Zum Glueck braucht man die volle Flexibilitaet von Postgres nicht fuer die das Speichern der Nodes fuer den slim mode. Fuer diesen speziellen Zweck weiss man das man lediglich die Koordinaten benoetigt (4 bytes latitude, 4 bytes longitude) und das man sie nur per node_id suchen muss. Weiterhin weis man das die gueltigen node_ids dicht gepackt sind.

Desshalb kann man relativ leicht eine "Spezial Datenbank" erstellen, was das "flat-nodes" feature ist. Es schreibt schlicht 8 byte (lat/lon) linear fuer alle IDs in eine grosse Datei. Da derzeit die hoechste Node_id bei ca 2506700000 liegt, ergibt das eine Datei groesse von ~19 GB. Die postgresql Datenbank dafuer benoetigt hingegen ueber 100GB wenn ich mich nicht taeusche.

Ausserdem benoetigt "flat-nodes" keine Indexe, da die position in der Datei eindeutig durch die node_id gegeben ist. Somit sind lookups O(1). Desweiteren durch die geringere Groesse der Datei, passt mehr davon in den ram cache, wodurch die Geschwindigkeit weiter steigen koennte.

Insofern wuerde ich jedem der einen vollen Planet importiert die Option flatnodes empfehlen!