A small “embedded” database that can also be synchronized over the network?

I am looking for a small database that can be "embedded" in my Python application without running a separate server, as can be done with SQLite or Metakit . I don't need a SQL database, in fact, saving free-form data, such as Python or JSON dictionaries, is preferred.

Another requirement is to be able to run a database instance on the server and have instances of my application (clients) to synchronize the database with the server (in two directions), similar to what CouchDB can do replication.

Is there a database that will do this?

+4
source share
6 answers

If you don’t need an SQL database, what happened to CouchDB? You can create a local process for servicing the database, and you can easily write a server shell to allow access only from your application. I'm not sure about the access history, but I believe the latest Ubuntu uses CouchDB to synchronize user level data.

+1
source

From what you describe, it sounds like you can use pickle and FTP.

+2
source

It seems like the perfect work for CouchDB: 2-time synchronization is incredibly simple, and schemes without JSON documents are their own format. If you use python, couchdb-python is a great way to work with CouchDB.

+1
source

Do you need clients to work offline, and then re-synchronize when you reconnect to the network? I don't know if MongoDB can handle a stand-alone client script, but if the client is constantly connected to the network, MongoDB might be a good solution too. It has pretty good python support . Still a separate process, but it may be easier to work on Windows than CouchDB.

+1
source

BerkeleyDB may be another option to test, and it's light enough. easy_install bsddb3 if you need a Python interface.

+1
source

HSQLDB does this, but unfortunately it is Java, not Python.

Firebird SQL may be closer to what you want, as it seems to have a Python interface.

0
source

All Articles