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
K/V-Datenbanken, wie Daten strukturieren
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
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
-
- 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
@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.
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.