1

かなり複雑なデータモデルを持つGAE用のアプリケーションを開発しています。Google App Engineとデータベース "Views"

私の理解に基づいて、noSQLデータベース、特にGAEを使用して複雑なデータモデルを処理する良い方法は、データの正規化されていない「ビュー」を使用することです。ブラウザ - クライアントがいくつかのデータを更新したい場合、サーバはいくつかのコアデータに対する書き込みを実行し、 "200 OK"を返してクライアントが続行できるようにし、タスクqueを使用して、 。

通常、SQLジョインを必要とするいくつかのオブジェクトを照会するときはいつでも、必要なすべてのデータが同じ「行」(またはエンティティ、アプリエンジンの場合)。

私が抱えている問題は、このビューの作成と更新はすべて、ライブラリが行うべきことであり、手動で行うべきではないと思われるということです。 GAEと連携してデータの一部のビューを指定し、適切に作成および処理されることを期待できるツールがありますか?私はCouchDBがこれを行うと信じています...

答えて

2

ビューは、より一般的にはRDBMSの機能ではなく、非リッチなものです。あなたが説明しているのは、マテリアライズドビューのようなものですが、有効な解決策ではありますが、共通のものではないため、App Engine用のライブラリはありません。この。

もっと一般的なことは、効率的な読み込みを容易にするように非正規化されたデータを単純に保存し、書き込み時にデータを直接更新することです。

+0

こんにちはニック、お返事ありがとうございます。非常に多くのオブジェクトにコピー(非正規化)されているデータが更新された場合、インスタンス内で行うべき正常な処理は何ですか。たとえば、従業員のファーストネームが変更され、彼の名前が1000年以上にわたる予定にコピーされているとします。 –

+1

@DutrowLLCその特定のケースでは、私は彼らの任命時に彼の名前だったので、彼らは変更すべきではないと主張するだろう。一般的に、問題の値が変更されることを期待するならば、それを逆正規化しないでください。必要がある場合は、ソースを更新し、タスクキューまたはmapreduceタイプのプロセスを使用してすべてを更新します。 –

+0

私はあなたが言っていることを見ていると思います。したがって、1つのオブジェクトが複数の他の場所にコピーされる関係の場合、書き込み時に変更を特定の回数までコピーします。ただし、コピー数が特定のしきい値を超えた場合は、タスクキューを使用しますか?しかし、これのためのライブラリはありません...これは、アプリケーションエンジンとの一般的なシナリオですか? –