私は node.js サーバーで作業しており、MongoDB を node-mongo-native で使用しています。Rails の移行に似た db 移行フレームワークを探しています。推奨事項はありますか?
2 に答える
MongoDB の移行を行うための特定のネイティブ Node.js ツールについては知りませんが、他の言語で記述されたツールを使用するオプションがあります (たとえば、Mongoid Rails Migrations )。
MongoDB でのスキーマ設計とデータ モデリングへのアプローチは、リレーショナル データベースとは異なることに注意してください。特に、コレクションが一貫したスキーマまたは事前に宣言されたスキーマを持つ必要はないため、列の追加や削除などの従来の移行アクションの多くは必要ありません。
ただし、..データ変換を伴う移行は依然として有用です。
アプリケーションがデータを特定の形式にすることを期待している場合 (たとえば、「名前」フィールドを「名」と「姓」に分割したい場合)、移行ツールを使用するという考えが書かれている場合に使用できる戦略がいくつかあります。別のプログラミング言語では魅力的ではありません:
- アプリケーションロジックでデータの違いを処理するため、古いデータ形式と新しいデータ形式の両方が受け入れられます (おそらく、レコードが更新されたときに新しい形式に一致するように「アップグレード」します)。
- 1 回限りのデータ移行を行うスクリプトを作成する
- MongoDB ヘルパーをnode-migrateに貢献する
node-mongo-native に基づく基本的な移行フレームワークの作成が完了しました: https://github.com/afloyd/mongo-migrate。これにより、上下に移行したり、特定のリビジョン番号に上下に移行したりできます。当初は node-migrate に基づいていましたが、機能させるには明らかに少し変更する必要がありました。
リビジョン履歴は、node-migrate のようなファイル システムではなく、mongodb に保存されるため、単一のデータベースを使用して同じプロジェクトでコラボレーションできます。そうしないと、移行を実行している各開発者が、データベースに対して複数回移行を実行する可能性があります。
移行自体はファイルベースであり、各開発者が同じデータベースを使用している (または使用していない) 単一のプロジェクトでのコラボレーションにも役立ちます。そのため、各開発者が移行を実行すると、そのデータベースに対してまだ実行されていないすべての移行ファイルが実行されます。
詳細については、ドキュメントを参照してください。