ここまでで、レガシー SQL データベースから CouchDB への変換をいくつか行いました。私はいつも少し違うアプローチをしていました。
- SQL-DB の主キーを Document-Id として使用しました。これにより、ドキュメントの重複を恐れることなく、何度もインポートすることができました。
- 一括インポートではなく、行ごとのインポートを行いました。デバッグが容易になります。インターネット接続で 1 秒あたり 5 ~ 10 件の挿入が見られました。これは電光石火の速さではありませんが、私にとっては十分な速さでした。私の最大のデータベースは、合計 20 GB の 600.000 ドキュメントです。インポート中に行ごとにデータベースが肥大化するため、圧縮を時々実行します。次に、行が巨大でない限り、15.000行はあまり聞こえません。
私のインポートコードは通常次のようになります。
def main():
options = parse_commandline()
server = couchdb.client.Server(options.couch)
db = server[options.db]
for kdnnr in get_kundennumemrs():
data = vars(get_kunde(kdnnr))
doc = {'name1': data.get('name1', ''),
'strasse': data.get('strasse', ''),
'plz': data.get('plz', ''), 'ort': data.get('ort', ''),
'tel': data.get('tel', ''), 'kundennr': data.get('kundennr', '')}
# update existing doc or insert a new one
newdoc = db.get(kdnnr, {})
newdoc.update(doc)
if newdoc != db.get(kdnnr, {}):
db[kdnnr] = newdoc