1

開発の過程で、ソフトウェアの特定の側面を実行するためにデータベースにデータを追加する必要があるタスクに遭遇しました。これが発生するたびに、通常は移行を行ってオブジェクトを作成します。しかし、これは意図しない方法で移行を使用しているようです。raketask を使用することもできますが、すべての環境に追加する必要があるものについてはあまり意味がありません (単に移行するのではなく、機能させるために開発者の介入が必要です)。

これは、データの移行が必要であるという考えにつながります-そして、それが存在しないので私が理解するのは非常に自然な考え方であり、それには正当な理由があるに違いありません.

では、なぜデータ移行が問題にならないのでしょうか? または、代わりに、そのようなタスクはどのように機能する必要がありますか?

4

1 に答える 1

0

移行内でデータ操作が完全に有効な場合をいくつか想像できます。

  1. 「product_code」列 (「XYZ-12345」形式) は、「manufacturer_code」(「XYZ」) と「seq_number」(「12345」) に分割されます。2 つの列を追加し、古い列の値に基づいてそれらを更新し、最後に古い列を削除するシーケンスは、アトミック操作と考えることができます。

  2. StatusCode モデル。注文ステータスのルックアップ テーブルで、Active / Canceled / Completed などの値があります。注文処理プロセスに変更を加え、現在保留中になっているとします。これは前の例ほど明白ではなく、多くの人がこれに異議を唱えますが、このシナリオでは移行によって新しい StatusCode レコードを追加することは受け入れられると思います。ただし、このようなアプローチでは、すべてのステータス コードを移行 (およびデータがスキーマ ダンプに反映されないため、シード) によって常に維持し、動作中のアプリケーションからそれらを操作できないようにする必要があります。

どちらの場合も、データが単独で変更されることはなく、常に構造的な変更、または少なくともアプリケーション コードの変更が伴うことに注意してください。

于 2013-10-31T22:03:06.403 に答える