I want a database with low memory needs for any small virtual server with couple of memory. Right now I am tied to SQLite and Kyoto Cabinet or Tokyo, japan Cabinet. The database must have a Ruby interface.
Ideally I wish to avoid key-value-stores, because I've “complex” queries (more complicated than searching for just one key) and tuples as secrets. However I'd rather not possess a fixed schema and steer clear of the look and migration efforts of the SQL database. A database server can also be not essential since just one application uses the database.
Have you got any recommendations and amounts for me personally?
You're searching for an answer that has only a database file with no running server, most likely. For the reason that situation, Sqlite ought to be the ideal choice - If you do not require it, just close the bond and that is it. Sqlite has everything that you'll require from and RDMS (expect for enforcing FK's directly, but that you can do with triggers), having a hardly any memory footprint, so for the reason that situation you're most likely worried much more about the memory your ORM (if any) uses.
Personally, I personally use sqlite for your use situation too, because it is portable and easily accessible and install (which should not function as the problem on the server anyway, however in a desktop application it's).
SQLite3 is a superb fit for what you're attempting to do. It's utilized by lots of companies his or her embedded application database since it is flexible, fast, well examined, and it has a little footprint. It's not hard to create and blow away tables therefore it plays well with testing or single-application-use data stores.
The SQL language it uses is wealthy enough to complete normal things but I'd recommend using Sequel by using it. It is a great ORM and simply allows you address it like a full-blown ORM, or drop completely lower to speaking raw SQL towards the DBM.
BerkeleyDB with SQLite API is the thing you need. http://www.oracle.com/technetwork/database/berkeleydb/overview/sql-160887.html
CouchDB (Use BigCouch. According to CouchDB, but less bugs/problems.):
- really low memory needs.
- HTTP-based interface. Ruby has lots of HTTP clients. HTTP caching (like Varnish) may also speed reads.
- creative/complex queries. You may create indexes and queries on any type in the document (record). You will get very creative with queries because the indexes are extremely prrr-rrrglable.
- You need to schedule a kind of cleanup operation known as "compaction".
- Data will require up more room in comparison with other databases.
- More: http://www.paperplanes.de/2010/7/26/10_annoying_things_about_couchdb.html
If disk is affordable and memory costly, it might create a good candidate to your requirements.
"...another strength of CouchDB, that has shown to serve 1000's of concurrent demands only needed about 10MB of RAM - how awesome is the fact that?!?!Inch (From: http://www.larsgeorge.com/2009/03/hbase-vs-couchdb-in-berlin.html )