1

各テナントが数千から10万のドキュメントを持つことができるマルチテナントGAEアプリを実行しています。
現時点では、MVC JavaScript クライアント アプリ (spine.js を使用したアプリの管理部分) を作成しようとしています。CRUD エンドポイントと、一度に大量のシリアル化されたオブジェクトを取得する機能が必要です。この特定のジョブでは、appengine が遅くなります。シリアル化されたオブジェクトをブロブストアに保存しようとしましたが、読み取り/書き込みとブロブストアへの更新の間に時間がかかりすぎて、アプリが非常に遅くなります。

これらの操作をappengineで行うために、外部マシンでnosql dbを使用することを考えました。いくつかのオプションは、mongodb、couchdb、または redis です。しかし、それだけの量のデータと、異なるテナントからの同時要求/挿入で、それらがどれほど優れたパフォーマンスを発揮するかはわかりません。

20 のテナントがあり、各テナントに 50,000 のドキュメントがあるとします。これらのデータベースはこの負荷を処理できますか?

これは正しい方法ですか?

4

2 に答える 2

2

blobstore の代わりに、はるかに高速な通常の appengine データストアを使用してみませんか? ドキュメントを Blob プロパティとして通常のエンティティに保存するだけです。エンティティのサイズが 1 MB を超えないようにしてください。その場合、データを複数のエンティティに分割する必要があります。そのように、何百万もの大きなブロブを持つアプリケーションを実行します。さらに高速化するには、memcache またはインメモリ キャッシュを使用します。はるかに高速な結果整合性でエンティティをフェッチすることを検討してください。一括操作または非同期 API を使用して、できるだけ多くのデータベース操作を並行して実行します。

于 2012-07-04T06:14:30.953 に答える
0

appengine からこれらの外部マシンへの呼び出しを行うオーバーヘッドは、現在見ているパフォーマンスよりも悪くなります (私は予想します)。すべてを appengine 以外のマシンに移行しないのはなぜでしょうか。

ソファについて話すことはできませんが、mongo または redis は、正しくセットアップされ、ニーズに十分な馬力を備えている限り、深刻な負荷を確実に処理できます。

于 2012-07-03T22:17:34.407 に答える