2009-11-22 29 views
4

我正在尋找一個小型數據庫,可以「嵌入」到我的Python應用程序中,無需運行單獨的服務器,因爲您可以使用SQLiteMetakit。我不需要SQL數據庫,事實上存儲像Python字典或JSON這樣的自由格式數據是可取的。也可以通過網絡同步的小型「可嵌入」數據庫?

另一個要求是能夠在服務器上運行數據庫實例,並讓我的應用程序(客戶端)實例將數據庫與服務器同步(雙向),類似於CouchDB複製可以做。

是否有數據庫會這樣做?

+0

你需要支持2路同步嗎? – tosh 2009-11-22 18:09:33

+0

@tosh:是的(將其添加到問題中)。 – 2009-11-22 18:17:50

回答

1

如果您不需要SQL數據庫,那麼CouchDB有什麼問題?您可以派生一個本地進程來爲數據庫提供服務,並且您可以輕鬆編寫一個服務器包裝程序,以僅允許從您的應用程序訪問。我不確定訪問的故事,但我相信最新的Ubuntu使用CouchDB來實現可同步的用戶級數據。

+0

CouchDB的唯一問題是依賴性和大小。我的應用程序是windows/linux/osx,CouchDB的安裝程序是應用程序本身的兩倍。 – 2009-11-22 18:47:42

+0

我同意,所需的整個Erlang虛擬機都是可能的大型安裝。 CouchDB本身實際上很苗條。但是,我不認爲你會找到任何符合你所有需求的東西,而沒有大的依賴;同步很難。 – 2009-11-22 18:50:50

+0

看來,如果我想要使用couchdb的花式同步功能,而不是滾動我自己的,我真的需要couchdb! – 2009-11-22 19:38:56

0

HSQLDB這樣做,但不幸的是它是Java而不是Python。

Firebird SQL可能更接近你想要的,因爲它似乎有一個Python接口。

+0

我不認爲firebird與同步,但你可以指向一個URL,否則顯示? – 2009-11-22 17:56:34

1

看起來像CouchDB的完美工作:2路同步非常簡單,無模式JSON文檔是原生格式。如果您使用python,couchdb-python是使用CouchDB的好方法。

+0

是的,除了依賴erlang之外,它使得包含couchdb過大。 Erlang似乎有本地代碼的編譯器,是否有可能以這種方式製作更小的CouchDB包? – 2009-11-22 18:54:56

1

您是否需要客戶端脫機工作,然後在重新連接到網絡時重新同步?我不知道MongoDB是否可以處理離線客戶端場景,但如果客戶端始終在線,MongoDB也可能是一個很好的解決方案。它有很漂亮的goode python support。仍然是一個單獨的進程,但可能比CouchDB更容易在Windows上運行。

2

從你的描述來看,這聽起來像你可以通過使用pickle和FTP獲得。

1

BerkeleyDB可能是另一種選項,它足夠輕量。 easy_install bsddb3如果您需要Python接口。