2

Google appengine の HRD 移行は、私にとって悪夢でした。昨日、55 GB のデータストアを HRD に移行しました。それ以来、多くのクエリとインデックスが壊れています:

いくつかの例:

  • select * from table1 where col1=val1 => query.get() は Python で空を返します。ただし、データストア ビューアーでは機能します。
  • col1=val1 => query.count()>0 の table1 から * を選択します。ただし、query.get() = 空です。
  • select * from table1 where col1=val1 order by col2 desc => 行のほぼ半分が応答で見落とされています。データストア ビューアーでの同じ動作。

これらのテーブルとインデックスを修復するにはどうすればよいですか? この問題に対処するために Google Appengine チームのサポートを受ける方法はありますか? GAE 移行ツールのバグです。

どんな助けにも感謝します。

4

3 に答える 3

4

移行ツールを使用すると、新しいアプリ ID が割り当てられ、すべてのキーが変更されます。

カスタム インデックスを再作成するには:

  1. index.yaml を一時的に空にします。
  2. インデックスをバキュームします (詳細については、Google Application Engine で未使用のインデックスを削除するにはどうすればよいですか?を参照してください)。
  3. すべてのインデックスが削除されるまで待ちます。
  4. index.yaml を復元します。
  5. アプリケーションを再デプロイするか実行して、インデックスを作成しますappcfg.py update_indexes <path>(詳細については、ドキュメントを参照してください)。

他のすべての参照 (キーの ListProperty など) がある場合は、手動で更新する必要がある場合もあります。

編集
App Engine によって自動的に管理される単純な単一プロパティ インデックスは、プロパティの配置時に作成/更新されます。
それらを再生成するには、単純な MapReduce タスクを作成して実行し、既存のすべてのエンティティを配置することをお勧めします。この手順では、すべてのインデックス (index.yaml で定義されているものを含む) を再構築する必要があります。
これはコストのかかるプロセスであるため、最初にいくつかのエンティティを手動で実行して、問題が解決するかどうかを確認します。

于 2012-10-07T15:09:48.853 に答える
1

テーブルは約 2 ~ 3 日で自動的に修復されます。それはHRDの問題です。私の問題は解決しました。

于 2012-10-11T08:37:28.780 に答える