2011年9月18日日曜日

python+botoとSimpleDBで手抜き開発

コツコツとGoogle App Engine上でアプリケーションを開発していたのだが、最近の料金変更を機会に方針を変更することに決めた。要はAmazon Web Service移行である。

で、データベース。GoogleはDatastoreを提供していたが、Amazonは幾つかの選択肢がある。

  • RDS(MySQL)
  • EC2にMySQL
  • SimpleDB
RDSは個人で使うにはちょっと豪華すぎる。今さらMySQLを設置保守するのも面倒。残るはSimpleDBでAmazonの説明によれば
You can get started with Amazon SimpleDB for free. New and existing customers receive 25 SimpleDB Machine Hours and 1 GB of Storage for free each month. Many applications should be able to operate perpetually within these free tier limits.
ということなので、よほど無茶な使い方をしなければ無料で行けそうだ。となるとあとはアプリケーションからの操作だが、これはbotoを使えばなんとかなろう。ただし説明書は絶望的なくらい揃っていない。ソースを読むしかない。以下、メモ。

boto.sdb.db.Modelを継承すれば永続化は簡単。
from boto.sdb.db.model import Model
from boto.sdb.db.property import *

class QuoteModel(Model):
    ticker = StringProperty()
    dt = DateTimeProperty()
    op = FloatProperty()

q = QuoteModel()
q.ticker = "ABC"
q.dt = some_date
q.op = 1.23
q.put()

boto.sdb.db.Queryを使って検索。

from boto.sdb.db.query import Query

query = Query(QuoteModel)
query.order('dt')
q = query.filter('ticker =', ticker)
q = query.filter('dt >=', some_date1)
q = query.filter('dt < ', some_date2)

for r in q:
    #dt順にならんだQuoteModelに対する操作が可能
botoの設定は/etc/boto.cfgにいれておけばよい。あとはPylonsでも組み合わせればいいんですかね。

0 件のコメント:

コメントを投稿