1

これまでデータベースに1つのファイルで保存していたデータを保存することを検討しています。どのデータベースまたはデータベースのタイプを使用する必要があるかについて、いくつかのアドバイスを探しています。要件のリストは次のとおりです。

  • データを階層/オブジェクト指向の方法で保存できる必要があります。つまり、car.chassis.color = redのようなキーを持ち、キーに任意の深さを設定する必要があります。
  • これらのオブジェクトの構造は均一ではなく、他のオブジェクトにはないフィールドがあるものもあります。
  • キーに対してクエリを実行できるようにしたいのですが、結合を実行する機能は必要ありません。つまり、外部キーは必要ありません。
  • 一部の値は大きなバイナリブロブ(〜数個の10-100MB、決して> 1GB)であり、かなりの冗長性があるため、組み込みの圧縮が適しています。
  • オープンソースソリューションを探しています。
  • Pythonから使いたいです。

私は最も基本的なMySQLデータベース以外はまったく知らないので、ポインタをいただければ幸いです。

4

1 に答える 1

1

ドキュメントデータベースがあなたのニーズに合うように聞こえます。私が調べる2つは、MongoDBとCouchDB(おそらくCouchbase)です。

CouchとMongoはどちらも、データをJSONとして保存できます。これは、任意の深さのキーを持つデータの要件を満たします。

どちらのデータベースでも、異種のドキュメントを挿入できます。Mongoには、特定のドキュメントにフィールドが存在するかどうかを確認するための$existsという演算子があります。

アドホッククエリについては、MongooverCouchにうなずきます。簡単だと思います。

どちらも結合をうまくサポートしていません。map / reduce機能の両方で可能ですが、それ以外の場合は、結合を行わないと想定されます。

どちらもファイルの追加をサポートしています。Mongoはgridfs(http://docs.mongodb.org/manual/applications/gridfs/)を使用し、Couchは添付ファイル(http://wiki.apache.org/couchdb/HTTP_Document_API#Attachments)を使用します。

MongoにはPythonドライバー(http://docs.mongodb.org/ecosystem/drivers/python/)があり、CouchはHTTP経由で動作するため、Pythonのcurlのようなものだけが必要です。

CouchDBは最近注目を集めていますが、Mongoは今より勢いがあります。

于 2013-03-26T02:54:32.150 に答える