Ich arbeite an einem node.js-Server und verwende MongoDB mit node-mongo-native. Ich bin auf der Suche nach einem Migrations-Framework für Datenbanken, ähnlich wie bei Rails-Migrationen. Irgendwelche Empfehlungen?
Ich kenne kein spezielles natives.js-Tool für MongoDB-Migrationen. Sie haben jedoch die Möglichkeit, in anderen Sprachen geschriebene Tools zu verwenden (z. B. Mongoid Rails Migrationen ).
Es ist erwähnenswert, dass sich der Ansatz zum Schemadesign und die Datenmodellierung in MongoDB von relationalen Datenbanken unterscheidet . Insbesondere ist es nicht erforderlich, dass eine Sammlung ein konsistentes oder vordefiniertes Schema aufweist, sodass viele der herkömmlichen Migrationsaktionen wie das Hinzufügen und Entfernen von Spalten nicht erforderlich sind.
Jedoch können Migrationen, die Datentransformationen beinhalten, immer noch nützlich sein.
Wenn Ihre Anwendung erwartet, dass Daten in einem bestimmten Format vorliegen (z. B. wenn Sie ein Feld "Name" in "Vorname" und "Nachname" aufteilen möchten), gibt es mehrere Strategien, die Sie verwenden könnten, wenn Sie die Idee nutzen Migrationstools, die in einer anderen Programmiersprache geschrieben wurden, sind nicht ansprechend:
Ich habe gerade ein grundlegendes Migrations-Framework auf Basis von Node-Mongo-Native geschrieben: Ссылка . Es ermöglicht Ihnen, nach oben & amp; nach unten, sowie nach oben / unten zu einer bestimmten Revisionsnummer migrieren. Es basierte ursprünglich auf der Node-Migration, musste aber offensichtlich etwas geändert werden, damit es funktioniert.
Der Revisionsverlauf wird in mongodb gespeichert und nicht im Dateisystem wie node-migrate, sodass die Zusammenarbeit im selben Projekt über eine einzige Datenbank möglich ist. Andernfalls kann jeder Entwickler, der Migrationen ausführt, dazu führen, dass Migrationen mehr als einmal für eine Datenbank ausgeführt werden.
Die Migrationen selbst sind dateibasiert und helfen auch bei der Zusammenarbeit in einem einzelnen Projekt, bei dem jeder Entwickler dieselbe Datenbank verwendet (oder nicht verwendet). Wenn also jeder Entwickler die Migration durchführt, werden alle Migrationsdateien ausgeführt, die noch nicht für seine Datenbank laufen.
Weitere Informationen finden Sie in der Dokumentation .