14

Python NDB Overviewから撮影:NDBとDB(高速レプリケーションデータストア上)の速度比較は何ですか?

アプリケーションがエンティティを読み取ると、そのエンティティは自動的にキャッシュされたです。これにより、頻繁に読み取られるエンティティの読み込みが高速(かつ安価)になります。

...

データを書き込み、NDB機能(例えば、置く())キャッシュの無効化後に返します。適用フェーズは非同期でとなります。 YouTubeの、Google I/O 2011: More 9s Please: Under The Covers of the High Replication Datastoreに見ることに

、13時:11っぽい、平均待ち時間は、次のとおり

マスタ/スレーブ:

  • 読む:15msの
  • 書き込み:20ms

高レプリケーション:

  • 読む:15msの
  • 書き込み:45ms

どのように大幅にNDBは、アプリのから、これらの速度に影響を与えません見通しive?

編集:特にタイミング統計情報(ミリ秒単位)が不明です。

エクストラクレジット:私はまた、ニック・ジョンソンが[link]んNDBは、クエリ上の任意の速度の利点を提供(2009年に)周り160msでそれぞれ取ってクエリを参照してください聞きましたか?

答えて

10

NDBを使用すると、データストアの呼び出しがアプリの観点からはるかに速く表示されます。

READ:最も良い場合のシナリオは、インスタンスキャッシュまたはmemcacheから読み取ります。ほとんどの場合、これはデータストアからの読み込みよりも大幅に高速です。

WRITE:キャッシュ無効化の直後にNDB put/writeメソッドが戻ります。これは通常の書き込みよりも高速です。だからあなたのアプリの観点からは、それはかなり高速です。ただし、実際の書き込みは非同期に実行されます。

NDBとDB(ハイレプリケーション):アプリの観点から見ると、NDBは明らかな勝利になるはずです。

+0

お返事ありがとうございます!私は特に、ミリ秒単位のタイミングに興味があります。投稿を編集して今すぐ反映させてください。 :) – wTyeRogers

+0

@wTyeRogers正確な数字を知りたい場合は、独自のベンチマークを行う必要があります。 –

+0

@NickJohnson、awesome;ありがとう!これは私の最初のスタックオーバーフローポストであるので、FAQにはないエチケットに関する質問があります。アルバートの投稿を編集して統計情報を追加するのですか、私自身の回答を投稿しますか? (私自身の質問への回答を投稿するのはちょっと奇妙だと感じています。) – wTyeRogers

18

エンティティのサイズや複雑さなど、多くの要因(繰り返しプロパティのプロパティまたはアイテムの数が多いほど複雑な場合)は、ベンチマークする必要があります。

あなたが引用している数字は本当に古く、おそらく現実を反映していません。ほとんどのユーザーの経験は、HRDがM/Sより平均的に遅いということではありません(M/Sのバラツキが非常に高いためです)。

ここではNDBベンチマークが行われました:http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - ただし、古いdbとの数値は比較されません。

実際のアプリケーションでは、Appstatsを使用して操作のタイミングをすばやく行うことができます。

+4

私の最初のスタックオーバーフローポストを知っておいてよかった!私は秘密裏に、NDBのあなたの親密な知識とPythonのX線ビジョンで死に至るまでの統計を分析するあなたの能力を考えれば、あなたが応答者の一人になることを望んでいました。複雑さの点のいくつかを強調していただきありがとうございます。このリンクは非常に役に立ちます。 – wTyeRogers

関連する問題