I've read a great deal recently about 'NoSQL' databases for example CouchDB, MongoDB etc. The majority of the websites I've come across by using this mostly are text based websites like the New You are able to Occasions and Source forge.
I'm wondering should you could apply this to websites where payment has become a problem. I'm considering the next issues:
- How good are you able to secure the information
- Do these system offer an easy backup/restore machanism
- How are transactions handled commit/rollback
I've browse the following articles which cover some aspects:
- Can One do transactions and locks in CouchDB?
- Pros/Cons of document based database versus relational database
During these posts the facet of transactions if covered. Nevertheless the questions of security and backup copies isn't covered. Can someone shed some light about this subject?
And when possible, does anybody are conscious of some e-commerce websites which have effectively implemented the document based database.
Just published some ideas on MongoDB and E-commerce: http://kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce/
The overhead which makes RDBMS's so slow, is ensuring atomicity, consistency, isolation, sturdiness, also called Acidity. A few of these qualities are pretty crucial for programs that cope with money. You won't want to lose just one order once the lights venture out.
NoSQL databases usually sacrifice some or all the Acidity qualities in exchange for seriously reduced overhead. For a lot of programs, this really is fine -- if your couple of "diggs" wander off once the lights venture out, it's really no large deal.
To have an ecommerce site, you have to request yourself what you actually need.
- Do you require an amount of performance that the RDBMS can't deliver?
- Do you want the reliability that the RDBMS provides?
Honestly, the response to #2 is most likely "yes", which rules out most NoSQL solutions. And unless of course you are coping with traffic levels similar to amazon . com.com's, an RDBMs, even on modest hardware will most likely match your performance needs all right, particularly if you limit you to ultimately simple queries, and index correctly. Making the response to #one inchno".
You could however, get a RDBMS for transaction data, along with a NoSQL database for non-critical data, like product pages, reading user reviews, etc. However you'd have two times just as much datastore software to set up, and then any associations between your data within the two datastores would need to be handled in code -- there'd be no JOINing your NoSQL database against your RDBMS. This could likely lead to a pointless degree of complexity.
Ultimately, if the RDBMS offers features you'll want for reliability, also it works acceptably for the types of load you will be going through, an RDBMS is most likely the best choice.
Handling financial information is among the places that SQL is really the best tool to do the job. The majority of the NOSQL systems specified for to enhance scalability by accepting a greater chance of data loss or inconsistency. Additionally they generally have limited capabilities to operate reviews total records, since on the typical large website you simply need enough data within the index to locate and display just one record - the relaxation could be completely inaccessible before you be aware of record you're searching for.
When confronted with money, data inconsistency is really a large problem, and when you'll need more scalability than the usual single sql server can provide you with, you are able to afford that you could pay the greater price of scaling sql. Also, the ad-hoc confirming offered by sql is one thing you'd miss if you do not use sql - virtually any information you would like about sales history is trivial to obtain from sql, but potentially requires complex custom code from an item based store.