SimpleDBのようなNosqlストアを使用しているときに、主要なスキーマ変更をどのように管理しますか?NOSQLストレージシステムでスキーマの変更を実装する方法
私はまだSQLの考え方をしていることを知っていますが、数週間SimpleDBを使って作業した後、実行中のデータベースに変更を加える必要があります。オブジェクトクラスの1つをビジネス名ではなく一意のIDに変更したいと思います。別のオブジェクトによって参照されるため、これらのオブジェクトの参照値も更新する必要があります。
SQLデータベースを使用すると、クライアントソフトウェアの展開プロセスの一部として一連のSQL文を実行します。明らかに、これはSimpleDBのようなものでは動作しません。
- SQLの更新ステートメントに相当するものはありません。
- SimpleDBが分散しているため、データベースに行った変更がクライアントソフトウェアを実行しているすべてのノードに「フィルタリング」されたことを知る方法はありません。私が考えてい
いくつかのソリューションは、各ドメインには、バージョン番号を持つ
です。クライアントソフトウェアは、使用すべきドメインのバージョンを知っています。あるドメインバージョンから別のドメインバージョンにデータをコピーするコードを記述し、必要に応じて変更します。その後、新しいクライアントソフトウェアをインストールしてから、新しいドメインバージョンにアクセスできます。この方法は、更新処理中にすべての書き込みアクセスを「フリーズ」することができない限り機能しません。
各アイテムには、格納時のフォーマットを示すversion属性があります。クライアントは、オブジェクトをメモリにロードするときにこの属性を使用します。オブジェクトをSimpleDBに書き戻すと、オブジェクトを最新の形式に変換できます。この問題は、新しい形式の書き込みが行われる前に、新しいソフトウェアをすべてのサーバーに展開する必要があるか、古い形式のソフトウェアを実行しているクライアントは、新しい形式を読み取る方法がわからないことです。
これはすべて複雑で、私は何か不足していると思いますか?
おかげ
リチャード