2009-10-24 2 views
12

私はさまざまなkey:value(値は厳密に単一の値かオブジェクトか)をPythonで使用するために保存しています。いくつか有望なものを見つけました。私はまだ評価段階にあるため、具体的な要件はありません。私は何が良いのか、何が悪いのか、これらのことがうまくやっているのか、そうではないのかなどを探しています。皆さんの一部がすでにそれらを試してきたと確信しています。 /等。いろいろなキーの上で:Pythonを使ったバリューストア。 http://pypi.python.org/pypi/python-memcached/1.40http://www.tummy.com/Community/software/python-memcached/どのキー:Pythonで使用する値ストアですか?

のCouchDB - http://couchdb.apache.org/のpythonクライアント:http://code.google.com/p/couchdb-python/

東京タイラント - http://1978th.net/tokyotyrant/のpythonクライアント:http://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/ベース - http://www.danga.com/memcached/のpythonクライアント

のmemcached:私はで主に探しています東京タイラント、Pythonで書いて

R EDIS - http://redis.io/のpythonクライアント:http://pypi.python.org/pypi/txredis/0.1.1

MemcacheDB - http://memcachedb.org/

は、だから私は、数字キーや「テキストの短い文字列」の値を生成するために、単純な数を使用して(単にキーを挿入し、それらを読んで)ベンチマーク開始しました:

memcached:CentOS 5.3/python-2.4.3-24.el5_3.6、libevent 1.4.12-stable、memcached 1.4.2、デフォルト設定、1ギガヘルツ、14000インサート/秒、16,000秒の読み取り。本当の最適化はありません。

memcachedbのリクエスト数は、1秒あたり17,000〜23,000件、1秒あたり44,000〜64,000件です。

他の人たちがどのように速度を上げていくのか、私は疑問に思います。

+0

キーバリューストア?あなたはデータベースですか? – Soviut

+2

あなたの必要条件に関する詳細情報は? (データベースのサイズ、エントリの数など) – peufeu

+1

CouchDBはキーではありません:バリューストアそれ自体はドキュメントデータベースです。格納されるデータは単なるデータではなくjsonドキュメントです。ですから、あなたはもっと具体的に探しているのですか? Schemalessデータベース、またはそれは本当に単なるキーですか、必要な値ストアですか? Schemalessデータベースが必要な場合は、そのリストにZODBを含める必要があります。 –

答えて

6

これは主にあなたの必要性によって異なります。

Caveats of Evaluating Databasesを読んで評価方法を理解してください。

+0

これまで見た中で最高のページの一つです。 – Kurt

-1

AmazonのSimpleDBはどうですか?

pythonがAmazon Webサービスに接続するためのオープンソースのPythonライブラリbotoがあります。

+3

効率(待ち時間はほとんど、リモート=低速)とコスト、私はむしろそれをローカルで実行したいと思います。 – Kurt

3

シェルフ(ファイル/標準のpythonモジュールでdictonarisを格納)

ZODB - persisatnceオブジェクトデータベース(Pythonオブジェクトデータベース、無SQL)

より持続性ツール: http://wiki.python.org/moin/PersistenceTools

+0

ニース、私はキーワードとして "永続性"を使用するとは思わなかったが、それは理にかなっている。 – Kurt

+0

私はこのaproachの方がさらに好きです。このようにして、Python言語にネイティブなデータベースができます。あなたがプログラムで必要とするものは次のようなものです(擬似コード警告)a = load_database(データベース)newtable = {} newtable ['key'] = '値' a ['new_table'] = newtable a.save –

3

私の5セント:

テラバイトサイズのデータ​​または大量の書き込みパフォーマンスを備えた分散システムが必要ですか?

さて、あなたはbig key:value/BigTable/Dynamoタイプのものが必要です。 Cassandra、Tokyo Tyrant、Redisなどがそうです。クライアントライブラリがシャーディングをサポートしているので、複数のデータベースに書き込むことができるようにする必要があります。ここで使用するものは、必要と思うように見えるデータでテストした後にのみあなたが決定することができます。

Python以外のシステムや言語からデータにアクセスできる必要がありますか?

これらのデータベースは、データに構造を持たないため、ストアするデータに依存する他の言語/クライアントからアクセスできます。しかし、このCouchDBが必要な場合は、そのデータをJSONドキュメントに格納するので、相互運用性が得られます。本当に大量のデータとシャーディングでCouchDBがいかに優れているかは不明です。

Pythonや分散型マルチサーバストレージ以外の言語との相互運用性は必要ありませんか?

ZODBを使用してください。

+2

ベストパート:ZODBを使用。それを拡大縮小する必要がある場合は、そのためのサーバーがあります(ZEOを参照)。 –

関連する問題