views:

272

answers:

2

I'm deciding between go for a NON-SQL engine or a regular SQL one for a document managment system for small bussines.

I have experience with firebird/sql server and found a good track of reliability (specially with firebird).

This market is full of crappy "servers" (clon-made PC, the mayority), cheap harddisk, rarely use of RAID or anything like that, some are in locations where a power-off is normal, some not have a UPS, etc... (I will include off-site auto-backup to external servers, but that no change the internal setup). (I know about end-user education about such proper setups, but is stupid depend on that, so stick to te point)

From the desing point of view, a schema-less database is the way to go for my system, but, I worry if any of the actual solutions (MongoDb, Tokyo Cabinet, etc) are like firebird and survice crash, malfunctions & abuse so data corruption is very rare.

The plan is store the office documents there & provide a central repository.

+2  A: 

Hi,

Check out Neo4j. It is a graph database (schema-free) that can be used like a document or key/value store.

Neo4j has been in production for many years in environments like you describe. Unlike many other NOSQL databases Neo4j actually flushes data to disk and uses a transaction log to recover from an inconsistent state. It also has real transactions (full ACID) that can span multiple operations and treat them as a single unit (which also seems to be a feature that is frequently left out in many other NOSQL stores).

-Johan

(Disclaimer: I am part of the Neo4j team)

Johan
Thta mean that Mongo/Tokyo not flush data to disk and have not recovery from crash??
mamcx
You can find at least some information about crashes and MongoDB here: http://www.mongodb.org/display/DOCS/Durability+and+Repair
nawroth
A: 

CouchDB has the reliability you need:

The CouchDB file layout and commitment system features all Atomic Consistent Isolated Durable (ACID) properties. On-disk, CouchDB never overwrites committed data or associated structures, ensuring the database file is always in a consistent state.

Look at the ACID Properties section here for more info.

With CouchDB you also get easy backup and replication.

I've no code in production using CouchDB yet, but so far I'm very happy with the tests and the development process with CouchDB.

filippo
Look better than mongo. Is sad, because mongo look easier to code, and the idea to use map reduce for everything.. yuck!. But data integrity is better...
mamcx
I haven't tried Mongo yet. I do mainly web programming and CouchDB with json and the REST API is a perfect fit there.You might need some time to get used to think your application in terms of documents and map reduce views, but then it becomes natural. Also the user mailing list is very helpful if you need advise for design, view implementation, etc...
filippo