PySNSの日記の投稿日時表記をUTCからJSTに変更しました。日時計算を複数回実装するのはDRYの原則に反するので、Modelにプロパティーを追加し、そのプロパティーの値を表示するように変更しました.... Read more
Tags » ‘Datastore’
GAE/Pの管理画面でDataStoreを操作
2月 19th, 2011 by adminapp.yamlの末尾に以下の2行を追記しておけば、GAEの管理画面でDataStoreのメンテナンス出来ます。 ::CODECOLORER_BLOCK_4:: .... Read more
GAE/P DataStore vs Memcached
2月 18th, 2011 by admin昨日のDataStoreの書き込み性能の測定の続きで、DataStoreの読み込みとMemcachedの読み書きの性能を測定した。
比較内容
以下の5項目の測定を行った。100バイトの読み書き50回を1セットとして、10回測定しグラフを作成した。
- Store/W
DataStoreへの保存 - Store/R
DataStoreから1レコード取得 - Mem/W
Memcachedへの保存 - Mem/R – s
Memcachedからの読込。データが存在する場合。 - Mem/R – m
Memcachedからの読込。データが存在しない場合。
結果グラフ
縦軸は1回当たりの処理時間(単位ms)、横軸は10回分の測定結果。
結果考察
MemcachedのReadが最も高速で、MemcachedのWrite、DataStoreのRead、DataStoreのWriteと順に遅くなった。平均処理時間と、MemcachedのReadを1とした時の実行時間を表にまとめてみた。
– | Store/W | Store/R | Mem/W | Mem/R-s | Mem/R-m |
時間[ms] | 17.94 | 7.1 | 2.29 | 2.12 | 2.07 |
Mem/R比 | 8.68 | 3.43 | 1.11 | 1.02 | 1 |
この結果から、Memcachedの性能は、DataStoreと比べてReadで3倍程度、Writeで8倍程度高速であることが分かる。Memcachedのキャッシュヒット率が50%を超えるようなサービスであれば、Memcached導入によるパフォーマンスアップが期待できそうだ。
測定用プログラム
GAEのDataStoreは遅い?
2月 17th, 2011 by adminGoogleDataStoreは遅いといわれることが多いので、簡単にベンチマークを取ってみた。
測定方法
1000バイトの文字列と、5000倍バイトの文字列を、100回保存するのにかかる時間を測定した。バラつきを見るために、それぞれ10回ずつ計測した。
測定結果
各行は、指定長さの文字列をDataStoreに100個保存する処理の所要時間(秒)です。
1000バイト
1 2 3 4 5 6 7 8 9 10 | 2.015 2.058 2.050 2.019 2.150 1.720 1.836 1.962 1.923 1.690 |
5000バイト
1 2 3 4 5 6 7 8 9 10 | 1.746 1.874 1.727 1.854 1.986 1.827 2.376 1.890 2.383 5.054 |
まとめ
1000バイトの場合も、5000バイトの場合も、データの保存にかかる時間はほぼ20msである。1個~数個程度のデータを保存する場合は問題にならないが、100件で2秒、1000件で20秒かかってし0まう。CSVのインポート機能などはTaskqueueを使って実装すべきだといえる。
ソースコード
データストアのページを追加
2月 1st, 2011 by adminデータストアのページを追加しました。RDBなら簡単にできる操作も、GAE上のDataStoreだと実現が難しい場合もあります。GAEの性能を100%生かすためには、RDB上での考え方をいったん忘れ、G.... Read more
Google App Engine 1.4.1リリース
1月 8th, 2011 by adminVersion 1.4.1が、2011年1月5日にリリースされていました。変更点は以下のとおりです。データストア関連の機能追加と不具合修正が行われているようです。この修正は、Python環境に対して適.... Read more