我正在寻找一个小型数据库,可以“嵌入”到我的Python应用程序中,无需运行单独的服务器,因为您可以使用SQLite或Metakit。我不需要SQL数据库,事实上存储像Python字典或JSON这样的自由格式数据是可取的。也可以通过网络同步的小型“可嵌入”数据库?
另一个要求是能够在服务器上运行数据库实例,并让我的应用程序(客户端)实例将数据库与服务器同步(双向),类似于CouchDB复制可以做。
是否有数据库会这样做?
我正在寻找一个小型数据库,可以“嵌入”到我的Python应用程序中,无需运行单独的服务器,因为您可以使用SQLite或Metakit。我不需要SQL数据库,事实上存储像Python字典或JSON这样的自由格式数据是可取的。也可以通过网络同步的小型“可嵌入”数据库?
另一个要求是能够在服务器上运行数据库实例,并让我的应用程序(客户端)实例将数据库与服务器同步(双向),类似于CouchDB复制可以做。
是否有数据库会这样做?
如果您不需要SQL数据库,那么CouchDB有什么问题?您可以派生一个本地进程来为数据库提供服务,并且您可以轻松编写一个服务器包装程序,以仅允许从您的应用程序访问。我不确定访问的故事,但我相信最新的Ubuntu使用CouchDB来实现可同步的用户级数据。
CouchDB的唯一问题是依赖性和大小。我的应用程序是windows/linux/osx,CouchDB的安装程序是应用程序本身的两倍。 – 2009-11-22 18:47:42
我同意,所需的整个Erlang虚拟机都是可能的大型安装。 CouchDB本身实际上很苗条。但是,我不认为你会找到任何符合你所有需求的东西,而没有大的依赖;同步很难。 – 2009-11-22 18:50:50
看来,如果我想要使用couchdb的花式同步功能,而不是滚动我自己的,我真的需要couchdb! – 2009-11-22 19:38:56
HSQLDB这样做,但不幸的是它是Java而不是Python。
Firebird SQL可能更接近你想要的,因为它似乎有一个Python接口。
我不认为firebird与同步,但你可以指向一个URL,否则显示? – 2009-11-22 17:56:34
看起来像CouchDB的完美工作:2路同步非常简单,无模式JSON文档是原生格式。如果您使用python,couchdb-python是使用CouchDB的好方法。
是的,除了依赖erlang之外,它使得包含couchdb过大。 Erlang似乎有本地代码的编译器,是否有可能以这种方式制作更小的CouchDB包? – 2009-11-22 18:54:56
从你的描述来看,这听起来像你可以通过使用pickle
和FTP获得。
BerkeleyDB可能是另一种选项,它足够轻量。 easy_install bsddb3如果您需要Python接口。
你需要支持2路同步吗? – tosh 2009-11-22 18:09:33
@tosh:是的(将其添加到问题中)。 – 2009-11-22 18:17:50