2009-07-13 46 views
0

我正在尋找可以在編輯器中使用的數據庫庫來替換自定義文檔格式。在我的情況下,該文件將包含一個功能程序。是否有數據庫實現有通知和修訂?

我希望即使在編輯時應用程序數據仍然是持久的,這樣當程序崩潰時,不會丟失任何數據。我知道所有的數據庫都提供這個功能

最重要的是,我想從多個線程,進程,甚至可能是多臺計算機訪問和編輯文檔。

格式:一個簡單的鍵/值數據庫就足夠了。 SQL通常需要被封裝,如果我可以避免陷入沉重的ORM依賴,那將是非常出色的。

修訂:我希望能夠回滾所做的文檔的第一次更改,不僅在一個會話中,而且在會話/程序運行之間。

我需要通知:每個進程必須能夠被通知文檔的更改,以便相應地更新其視圖。

我將這些要求視爲相當基礎,是解決編輯應用程序常見難題的基礎:撤消/重做,對同一數據的多個視圖。因此,數據庫系統應該是輕量級且要求不高的。

感謝您的見解提前:)

+0

我意識到這是相當古老的,但我正在努力的數據庫,將完全滿足您的要求。它被稱爲aodbm(參見http://sf.net/projects/aodbm/)。目前它非常簡單,文件格式可能會在第一次發佈之前發生變化,但它處於可用狀態,並且正在積極開發中。 – 2011-03-17 08:31:11

回答

1

Berkeley DB是支持鎖定和交易的要求不高,重量輕鍵值數據庫。在很多編程語言中都有綁定,包括C++和python。您必須自己實施修訂和通知,但實際上並非那麼困難。

+0

我知道Berkeley DB很長一段時間了,我想這是迄今爲止最好的答案,儘管我不喜歡它);我開發了一個迄今爲止效果相當不錯的原型。如你所建議的那樣,附加功能很容易實現。 – paniq 2009-07-20 09:41:21

0

查看ZODB。它沒有內置通知,因此您需要一個郵件系統(因爲您可能使用單獨的計算機)。但它具有事務處理,您可以永久回滾(除非您打包數據庫,這會刪除以前的修訂版本),您可以直接作爲應用程序的集成部分來訪問它,或者它可以作爲客戶端/服務器運行(當然有多個客戶端),你可以擁有自動持久性,沒有ORM等。

雖然它基於Python,但它幾乎是Python(它基於Pickles)。

http://en.wikipedia.org/wiki/Zope_Object_Database

http://pypi.python.org/pypi/ZODB3

http://wiki.zope.org/ZODB/guide/index.html

http://wiki.zope.org/ZODB/Documentation

1

它可能比你要求什麼更多的權力,但你一定要看看CouchDB

它是一個文檔數據庫,其中「document」被定義爲JSON記錄。 它將文檔的所有更改存儲爲修訂版,以便您立即獲得修訂。 它具有強大的基於JavaScript的視圖引擎來聚合你需要從數據庫中的所有數據。

對數據庫的所有提交都寫入存儲庫文件的末尾,寫入是原子的,這意味着不成功的寫入不會損壞數據庫。

另一個不錯的獎金你會得到的是簡單而靈活的複製和你的數據庫。

查看their homepage

完整的功能列表上的負側(取決於你的觀點)是,它是用Erlang和(據我所知)的事實運行作爲一個外部進程。 ..

雖然我對通知一無所知 - 看起來如果您使用的是複製數據庫,那麼這些更改會立即在數據庫之間複製/同步。除此之外,我想你應該能夠推出自己的通知架構...

+0

我不太確定CouchDB存儲修訂版本。這似乎只是短期的,以允許查看一致性和無鎖查詢。我想,修訂版會不時清除。 – Thilo 2009-07-13 09:18:52

相關問題