K/V-Datenbanken, wie Daten strukturieren

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hi,

Ich muss sagen, ich verstehe es irgendwie nicht. Ich möchte GPS Koordinaten mit Zeit, User und Track aufzeichnen. Wie das mit einer relationalen Datenbank machbar ist ist mir klar, wie ich das mit einer dokumentenorientieren Datenbank machen würde ist auch etwa klar, aber wie zum Teufel mache ich das mit Redis? Ich weiß dass hier einige Leute von Redis begeistert sind, daher würde ich gerne mal Fragen wie würdet ihr die Daten da sinnvollerweise strukturieren? Ich mein, ich könnte das *irgendwie* machen und dann zigmal neuschreiben, aber vielleicht kann ich ja aus eurer Erfahrung lernen.

grüße,
Leonidas
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Mein Tipp: Schreibe es so, wie du es später wieder lesen willst.

Willst du z.B. später zu einem User + Track alle Tupel mit Zeit und Koordinate finden, mache einen Schlüssel "userID trackID" und lege dort eine Liste an mit Tupeln aus Zeit und Koordinate, ebenfalls geeignet serialisiert, also z.B. "2012-05-29T12:00:03Z 126129 128381".

Willst du wissen, welcher User welche Tracks hat, mache eine Anfrage, die alle Schlüssel der Form "userID *" sucht oder lege dafür nochmals eine eigene Struktur an.

Stefan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also effektiv heißt das "Queries? Besser nicht", richtig? Find ich so nämlich noch etwas mehr eingeschränkt als SQL mit dem Schema, so dass selbst wenn es nicht 100% passt, man sich mit SQL seine Daten immer noch einigermaßen effizient zusammenklauben lassen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Leonidas: Vorweg: Ich habe keine Erfahrung mit Redis.

Wenn ich das richtig verstehe hält Redis den Datenbestand üblicherweise komplett im RAM. Wenn ich dann schaue wie oft ein EXPLAIN bei SQL-Datenbanken enthüllt, das trotz Indexen grosse Tabellen sequenziell durchsucht werden, ist es vielleicht gar nicht so viel ineffizienter.
Antworten