I believed of beginning a task that very clearly requires a persistent store. I had been going to unwillingly pick a RDBMS, after i discovered articles which briefly mentions CouchDB. Appears some developments in DB technology have happened since i have last looked, and so i thought I'd request here about databases before I acquired in it.
Listed here are my criteria. ( I list the factors again in the finish, so if you wish to skip the explanations just scroll lower. )
The project is free and I won't be asking anything for this, so ideally the database is free and free. In addition the program needs to operate on both Linux and Home windows.
You will find areas of the project that has to maintain C++. The project isn't big enough code smart to warrant utilizing a second language. So essentially the entire factor is going to be C++.
This project won't have anything related to the net, so ideally the database won't require detritus of the web library.
The objects I wish to store fall under 1 of 2 groups: a fundamental object along with a container object. The main difference being objects that are containers will contain much more objects, ie: a areas of parts problem. I want a database that may handle such cases cleanly and effectively.
I additionally expect the schema to evolve quickly, a minimum of initially. I alse suspect that a few of the old data simply won't squeeze into the brand new schemas. So I must keep different versions from the schema around. Win possible, I must have the ability to transform data in a single to schema into another schema.
For that application to operate the way in which intended, people would need to exchange large portions of database with one another. And So I want simple methods for posting and conveying data, that we could automate to some extent.
Finally it might be nice when the database could in someway be simulated in unit tests.
Individuals are my needs. I've duplicated them below to really make it simpler for individuals responding to.
Non-technical needs 1. Free ideally free. 2. Operate on Home windows and Linux
- Includes a C++ interface.
- Has the capacity to handle a non-web application, ideally without Relaxation.
- Are designed for a "areas of parts" problem fairly well.
- Are designed for multiple indexes.
- Has kind of idea of schema version, are designed for multiple schema versions, and may migrate tables in one schema to a different.
- Must have an easy mechanism for move data in one demonstration of the database to a different.
- Ideally has some mechanism for testing.
HDF5 is really a binary format which reacts as an hierarchical database. It's binding and libraries for C++ and python (I just use the second) which is accustomed to store large levels of data, such as the ones produces in a few physics and astronomy experiments.
I have checked out a couple of nosql databases a while ago (had an different requirement than than you though - needed that it is a stand alone server). Those that I recall as particularly interesting are Redis and Kyoto Cabinets. Take a look.
BTW, you do not mention any performance requirement. If that's the case, have you thought about SQLite? Simple, embedded, stable, along with the versatility of SQL in the end. With prepared statement the performance penalty of SQL shouldn't be high.
EDIT: ooops, just observed that you simply requested this at least a year ago... Well, possibly you are able to inform us what you've selected :)