mysql データベースから DynamoDB にデータ (21M 行) を転送したいと考えています。boto Python API と django 1.3.1 を使用して、mysql からデータをエクスポートし、DynamoDB に転送しています。以下はコードです:
conn = boto.connect_dynamodb()
start_date = datetime.date(2012, 3, 1)
end_date = datetime.date(2012, 3, 31)
episode_report = TableName.objects.filter(viewdt__range=(start_date, end_date))
#Paginate 21 million rows in chunks of 1000 each
p = Paginator(episode_report, 1000)
table = conn.get_table('ep_march')
for page in range(1, p.num_pages + 1):
for items in p.page(page).object_list:
item_data = {
'id': int(items.id),
'user_id': format_user(items.user), #Foreign Key to User table
'episode_id': int(items.episode.id), #Foreign Key to Episode table
'series_id': int(items.series.id), #Foreign Key to Series Table
'viewdt': str(items.viewdt),
}
item = table.new_item(
# Our hash key is 'id'
hash_key= int(items.id),
# Our range key is 'viewdt'
range_key= str(items.viewdt),
# This has the
attrs=item_data
)
item.put()
問題は、プロセスが 12 時間以上実行されていて、まだ 3M 行を転送していることです。プロセスをスピードアップするためのアイデアはありますか?
より多くのスレッドを作成し、転送を並列化して、それが役立つかどうかを確認します。
ありがとう。