背景
[Google App Engine(GAE)] のDatastore を [Master/Slave Datastore(M/S)] から [High Replication Datastore(HRD)] への移行しました。対象としたサービスは大喜利部のサーバサイドプログラムなのですが、Blobを使用しています。
移行した際、Blobkeyは振り直しされるようで、移行後は旧DatastoreのBlobkeyをデータベースに保持するようにしていると、移行後に参照できなくなてしまいます。
[GAE]では[Python]で使用できる、[BlobMigrationRecord]クラスが用意されており、
[.get_new_blob_key(old_key)]というメソッドが用意されているのですが、Javaではこのクラスがなく、以下の方法で回避したので、記録しておきます。
(The BlobMigrationRecord Class)
よって、管理ツールの[Datastore Viewer]でSelect分を実行すると新旧の紐付けが分かるということになります。
(The BlobMigrationRecord Class)
解決方法
あまり記載がなく苦労したのですが、どうやら移行した際のBlobKeyの新旧のBlobkeyは「__BlobMigration__」というKindで管理されているようです。よって、管理ツールの[Datastore Viewer]でSelect分を実行すると新旧の紐付けが分かるということになります。
[ SELECT * FROM __BlobMigration__ ]
つまり、これらを紐づけるようにすれば良い訳です。
つまり、これらを紐づけるようにすれば良い訳です。
[BlobMigrationRecord Class] get_new_blob_key() method for Java
Pythonと同じような[BlobMigrationRecord]の[get_new_blob_key()]メソッドと同じことができるJava版を作ってみましたので掲載しておきます。
自由に使っていただいて問題ないです。
(「いいね」とか「+1」とか「コメント」とかもらえると喜びます)
0 件のコメント:
コメントを投稿