Änderungen am CouchDB Document Model?

8

Rails verwendet das Migrationskonzept, um Modelländerungen mithilfe der ActiveRecord-API zu behandeln.

CouchDB verwendet JSON (verschachtelte Maps und Arrays), um seine Modellobjekte darzustellen.

Wenn ich bisher mit CouchDB gearbeitet habe, sehe ich keine guten Möglichkeiten, zu erkennen, wann sich die Struktur des Dokuments geändert hat (abgesehen davon, dass man als Entwickler diszipliniert ist) oder Dokumente von einem alten auf ein neues Modell migriert >

Gibt es bereits vorhandene Funktionen oder haben Sie Best Practices für die Handhabung von Modelländerungen in CouchDB?

    
Kyle Burton 24.09.2008, 21:28
quelle

3 Antworten

9

Zeit für die REDD-Gehirnwäsche. :)

Einer der wichtigsten Punkte des schemalosen Designs von couchdb zielt direkt darauf ab, die Notwendigkeit von Migrationen zu verhindern. Die JSON-Darstellung von Objekten macht es einfach, Ihre Objekte einfach zu ducken.

Zum Beispiel, wenn Sie eine Web-App vom Blog-Typ mit Posts haben und welche ausgefallenen Dinge auch immer in einem Blog gespeichert werden. Ihre Post-Dokumente haben Felder wie Autor, Titel, erstellt, usw. Jetzt kommen Sie und denken Sie an sich selbst, "Ich sollte verfolgen, in welcher Phase der Mond ist, wenn ich meine Posts veröffentlichen ..." Sie können einfach beginnen, moon_phase als hinzuzufügen ein Attribut für neue Posts.

Wenn Sie vollständig sein möchten, würden Sie zurückgehen und alten Posts moon_phase hinzufügen, aber das ist nicht unbedingt notwendig.

In Ihren Ansichten können Sie auf moon_phase als Attribut zugreifen. Und es wird null oder eine Ausnahme oder etwas verursachen. (Kein JS-Experte, ich denke, null ist die richtige Antwort)

Sache ist, es ist nicht wirklich wichtig. Wenn Sie etwas verändern möchten, ändern Sie es einfach. Stellen Sie jedoch sicher, dass Ihre Ansichten diese Änderung verstehen. Was meiner Erfahrung nach nicht viel verlangt.

Wenn Sie wirklich paranoid sind, können Sie auch ein Version / Typ-Attribut speichern, wie in:

%Vor%

Ich hoffe, das hilft.

    
Paul J. Davis 26.09.2008, 18:19
quelle
3

Schauen Sie sich ActiveCouch an: Ссылка

CouchDB ist absichtlich schemalicht, daher gibt es keine Eins-zu-Eins-Zuordnung von Konzepten von den ActiveRecord-Migrationen zu einer CouchDB-Entsprechung. ActiveCouch enthält jedoch Migrationen für die "Ansichten" von CouchDB.

    
Ian Terrell 24.09.2008 23:32
quelle
3

Wenn Sie Schemas haben und trotzdem CouchDB verwenden möchten, erhalten Sie eine "Impedanz-Abweichung".

Trotzdem ist es nicht so schwierig, "Migrationen" zu haben. Fügen Sie jedem Dokument ein schema_version -Element hinzu. Dann haben Sie Ihre "Dokument lesen Funktion" Update enthalten. Etwas wie das:

%Vor%

Wenn Sie die gesamte Datenbank auf einmal aktualisieren möchten, rufen Sie read(doc_id) für jedes Dokument auf.

    
max 04.01.2009 11:07
quelle

Tags und Links