2009-10-24 80 views
12

所以我正在尋找各種關鍵:值(其中值是嚴格的單個值或可能是一個對象)存儲與Python一起使用,並已找到一些有前途的。至今我還沒有具體的要求,因爲我正處於評估階段。我正在尋找什麼是好的,什麼是壞的,這些東西處理得好還是不好等角落案例,我相信你們中的一些人已經嘗試過了,所以我很樂意聽到你們的發現/問題/等等。在各種關鍵:價值商店與Python。 http://www.danga.com/memcached/蟒蛇客戶 -哪些關鍵:值存儲使用Python?

memcached的:http://pypi.python.org/pypi/python-memcached/1.40http://www.tummy.com/Community/software/python-memcached/

CouchDB的 - 蟒蛇http://couchdb.apache.org/客戶:http://code.google.com/p/couchdb-python/

東京暴君 - http://1978th.net/tokyotyrant/蟒蛇客戶:http://code.google.com/p/pytyrant/

Lightcloud - http://opensource.plurk.com/LightCloud/基於我在主要看在東京暴君,用Python編寫

R EDIS - http://redis.io/蟒蛇客戶: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個內存,每秒14,000個插入,16,000秒讀取。沒有真正的優化,很好。

memcachedb聲明的數據量爲每秒17,000到23,000次插入,每秒44,000到64,000次讀取。

我也想知道其他人如何加速明智。

+0

重要價值商店?你的意思是數據庫? – Soviut 2009-10-24 07:52:03

+2

有關您的要求的更多信息? (數據庫大小,條目數量等) – peufeu 2009-10-24 08:01:36

+1

好吧,CouchDB並不是一個關鍵:價值存儲本身,它是一個文檔數據庫,因爲存儲的數據不僅僅是任意數據,而是一個json文檔。那麼這個問題就變成了爲什麼你要更具體地尋找?無模式數據庫,還是它真的只是一個關鍵:你需要的價值商店?如果你想要Schemaless數據庫,你應該在該列表中包含ZODB。 – 2009-10-24 08:01:41

回答

6

這主要取決於您的需要。

閱讀Caveats of Evaluating Databases瞭解如何評估它們。

+0

迄今爲止我見過的最好的網頁之一。 – Kurt 2009-10-25 03:48:00

-1

亞馬遜的SimpleDB如何?

有一個名爲boto的開源python庫,用於連接Amazon Web服務的python。

+3

效率(主要是等待時間,遠程=慢)和成本,我寧願在本地運行它。 – Kurt 2009-10-24 16:59:53

3

貨架(存儲在文件dictonaris /標準Python模塊)

ZODB - persisatnce對象數據庫(Python對象數據庫,沒有SQL)

更持久化工具: http://wiki.python.org/moin/PersistenceTools

+0

不錯,我不會認爲使用「持久性」作爲關鍵字,但它是有道理的。 – Kurt 2009-10-25 03:47:10

+0

我也很喜歡這個問題。這樣你就擁有了Python語言的本地數據庫。你需要的程序是這樣的(僞代碼警告)a = load_database(數據庫)newtable = {} newtable ['key'] ='value'a ['new_table'] = newtable a.save – 2009-10-25 14:10:17

3

我5分錢:

您是否需要分佈式系統具有太字節大小的數據或大量的寫入性能?

那麼,他們你需要一個大關鍵:值/ BigTable/Dynamo類型的東西。 Cassandra,Tokyo Tyrant,Redis等都會這樣做。您需要確保客戶端庫支持分片,以便您可以有多個數據庫進行寫入。在測試數據後,只能由您自己決定使用哪一種,看起來像您認爲需要的數據。

您是否需要從Python以外的其他系統/語言訪問數據?

由於這些數據庫根本沒有數據結構,如果可以從其他語言/客戶端訪問,那麼您的數據庫取決於您在其中存儲的內容。但是,如果您需要此CouchDB是一個不錯的選擇,因爲它將數據存儲爲JSON文檔,因此您可以獲得互操作性。雖然CouchDB對於真正的海量數據和分片有多好。

您是否需要與Python或分佈式多服務器存儲之外的其他語言的互操作性?

使用ZODB。

+2

Best part:use ZODB 。如果你需要擴展它,那麼有一個服務器(見ZEO)。 – 2009-11-07 22:59:39