I hear a great deal about couchdb, but after reading through some documents about this, I still do not get why for doing things and just how.
Would you clarify this mystery for me personally?
It is a non-relational database, open-source, distributed (incremental, bidirectional replication), schema-free. A CouchDB database is an accumulation of documents each document is a lot of string "secrets" and corresponding "values" (which may be amounts, strings, lists, dates, ...). You could have indices, queries, sights.
If your relational DB feels limiting for you (you discover schemas too rigid, can't spread the DB engine deal with a really large amounts of servers, etc), CouchDB may be worth thinking about (it's probably the most interesting of the numerous non-relational DBs which are emerging nowadays).
But when all your work happily matches a relational database, that is what you most likely wish to keep using for production work (despite the fact that "experimenting" with a few non-relational DB continues to be really worth your time and effort, only for personal growth and edification, that's not the same as moving huge production systems over from the relational DB!-).
It may sound like you ought to be reading through Why CouchDB
To quote from wikipedia
It's not a relational database management system. Rather than storing data in rows and posts, the database handles an accumulation of JSON documents. The documents inside a collection do not need to share a schema, but retain query capabilities via sights.
CouchDB supplies a different model for data storage than the usual traditional relational database for the reason that it doesn't represent data as rows within tables, rather it stores data as "documents" in JSON format.
This difference in data storage model is exactly what differenciates CouchDB from items like MySQL and SQL Server.
When it comes to programatic use of CouchDB, it exposes a Relaxation API which you'll access by delivering HTTP demands out of your code
I really hope it has been somewhat useful, though I acknowlege it might not get my minimal knowledge of the merchandise
I am not even close to a specialist(all I have done is adjust it some...) but here's how I am considering utilizing it:
Usually when I am creating an application I have got a lot of application servers behind a lot balancer. Frequently occasions, I have got sticky periods to ensure that each user will return to exactly the same application server throughout that session. What I am considering doing is possess a couchdb instance associated with each application server.
That method for you to use that local couchdb to gain access to user preferences, product data...whatever data you have that does not need to be perfectly current.
So...now you have data on these local CouchDBs. CouchDB enables replication. So, every fixed period of time, merge the information back(every X seconds?) into it's peers to ensure that they're current.
In general you should not need to bother about conflicts b/c each appserver has it's own CouchDB and customers are affixed to the appserver, plus you've got eventual consistency because you have got replication.
Does that answer your question?
An example happens when you say suffer from people data either in an internet site or application. Should you trigger wanting to create the information and the individuals' information seperate, which makes a great situation for CouchDB, which stores data in documents instead of relational tables. Inside a production deployment, my customers may finish up adding adhoc data about 10% of those plus some other funny particulars for an additional selected 5%. Inside a relational context, this might equal to lots of redundancy although not for CouchDB.
And it is not nearly the truth that CouchDB is non-relational: if you are too concentrate on that, you are missing the purpose. CouchDB is blocked in to the web, all that you should begin with is HTTP for creating and making queries (GET/PUT/Publish/Remove...), and it is Peaceful, plus the truth that it's portable and ideal for peer to see discussing. Additionally, it may offer web programs with what is called as 'CouchApps', where CouchDB totally supports the images, CSS, markup as data saved under special documents known as design documents.