2

私はプログラマーを雇って、自分の Web サイト (元々 Django と MySQL を使用して実装) を Google App Engine に移植しました。元の Web アプリのデータベースのサイズは約 2 GB で、最大のテーブルには 500 万行あります。私が理解しているように、これらのコンテンツを移植するために、プログラマーはデータベースを JSON にシリアル化し、それを Google アプリ エンジンにアップロードしています。
これまでのところ、GAE の請求によると、彼のアップロードには 100 時間の CPU 時間が使用されていますが、データベースには約 50 または 100 MB しかロードされていないようです。このような少量のデータに対して妥当な量の CPU 時間ですか? MySQL はこれだけの量のデータを数分でロードできるので、GAE が 1000 倍遅くなる理由がわかりません。彼は何か非効率なことをしていますか?

4

3 に答える 3

2

これは高いようで、クライアントで実行できる多くの作業 (JSON のデコード、エンティティのエンコードと格納) をサーバーに実行させている可能性があります。SDK には既にバルクローダーが用意されています。何らかの理由でそれが適切でない場合は、バルクローダーのベースである remote_api を使用すると、独自に作成するよりも効率的なオプションが提供されます。

于 2011-07-15T01:01:01.617 に答える
1

GB のデータを一括ロードしましたが、(定義したインターフェイスに基づいて) 独自の一括ロード モジュールを作成したところ、25 時間の CPU 時間がかかりました。

詳細については、App Engine Bulk Loader Performanceをご覧ください。

于 2011-07-14T20:42:08.420 に答える
0

それは、彼がデータをどのようにシリアライズしているかに大きく依存します。私は彼が非効率的なことをしているのではないかと強く疑っています。そうです、それはその量のデータにとってばかげています。あなたの非効率性は、おそらく各クエリの転送時間と開始/停止時間にあります。彼が各行をシリアル化し、一度に 1 つずつハンドラーにポストしている場合、私はそれが永遠にかかり、多くの CPU 時間を消費していることを完全に理解できました。

于 2011-07-14T16:53:11.833 に答える