2009-11-22 28 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接口。