ich wollte mal aufhöhren mit dem ganzen SQL-Wahnsinn und eine Nicht-
relationale Datenbank ausprobieren.
Meine Wahl wäre da TokyoCabinet (http://tokyocabinet.sourceforge.net),
man könnte aber auch CouchDB oder so nehmen glaube ich.
Als Startpunkt möchte ich eine Fotoalbum-Anwendung bauen. Es gibt also
Fotos und Alben. Ob jedes Foto genau einem oder mehreren/keinem Album
zugewiesen werden kann ist erstmal egal.
Jetzt die Frage:
Wie speichert man die Foto - Album Beziehungen?
Folgendes fällt mir dazu ein
Jedes Album wird als solches gespeichert
Ich speichere eine komplette Album-Instanz in der Datenbank,
gemarshaled, komplett mit dem .fotos Array
album.fotos # => [Foto, Foto, Foto, Foto]
store[key] = Marshal.dumb(album)
Ich speichere nur Foto Objekte und sortiere sie nach Album-Namen
Wenn ich ein Album umbennen möchte, ratter ich durch alle jeweiligen
Fotos und ändere den Album-Namen.
store[key] = { foto: mein_foto, album_name: “”}
Was denkt ihr?
Habt ihr schonmal was mit so welchen Datenbanken gemacht? (Key/Value…
wie nennt man das?)
Wie sind eure Erfahrungen damit?
Ich finde den Ansatz von Dokument-orientierten Datenbanken eigentlich
gut - Speicher… das da! Anstatt speicher… hier und da und da und da
was. Aber es ist trotzdem nicht einfach zu verstehen.
Ja, die Probleme hab ich auch, modellierung mit nicht-relationalen
Datenbanken ist man irgendwie nicht gewöhnt: Wenn ich das richtig
verstehe, dann gibt’s da zwei Optionen, die ungefähr den Objekt-
Relationen entsprechen:
Nesting: Dabei würde man ein Dokument “Album” anlegen und dann die
einzelnen Fotos da ablegen (“einkleben”?!)
referenzen: dabei legt man das Foto an und legt nur die UUID im
“Album” - das kommt der traditionellen Referenz wohl am nächsten.