初めに
機械学習の業務でMongoEngineを使用して非構造化データを取り扱う際の注意点です。誰かのお役に立てれば幸いです。
MongoEngineが遅い
class model(Document):
# 1㎆以上のデータ
big_data = BinaryField()
以下の二つの方法でアクセスしてみます。
m1 = model.objects.first() # it takes 20 seconds by mongoEngine
m2 = db.connection.get_connection().find_one() # it takes 0.9 seconds by pymongo
結論
MongoEngine は、ドキュメントデータを Python オブジェクトにマップするために使用されます。非常に大きな非構造化データを取り扱う場合、アンシリアライズにすごく時間かかるので、 MongoEngine は適切なツールではないため、pymongo を使用する方がいいです。
参考資料