Is it possible to use a non relational database be in an Order management system for an e-commerce company with a large number of orders everyday, like Amazon? Can the benefits of Non Relational databases (scalability, reliability etc) be exploited in this scenario, or, is it impossible to give up ACID properties and hence mandate that only a relational DB be used for this purpose?
It's certainly possible. Whether it is a good idea or not is another matter.
I personally wouldn't use nosql in the use case you described for two major reasons:
Interoperability - chances are your order system will have to interface with multiple back end systems all written around the relational database model. Mapping back from nosql to relational will be extra work and can introduce bugs.
reporting - reporting is a big feature of an ordering platform. You will regularly need to pull reports based on the ordering data to fine-tune the sales process. Reporting is much harder to do well in a nosql database.
I don't think anyone's ordering has outgrown most RDBMS ability to scale. The data are structured, so there is no benefit to NoSQL there. Unlike a Facebook or Twitter post, millions of people don't need to see every step of your transaction in real time.
I think a NoSQL database may be an advantage in a bidding/auction situation, but trasnfer to SQL when you process the bill. I'd like to think my bank is a little more rigid in processing my checking account than my chats with support.
It sounds like you're asking whether a NoSQL database can feature ACID. For that, we'll look at the CAP theorem, which states that a distributed system can provide at most two of the following three properties:
- Partition Tolerance
If you have a system that is geographically distributed, like Amazon's Dynamo, then the communication latency between partitions already means you have #3 above. Therefore, you must choose between consistency and availability.
For an eCommerce company, an unavailable website leads to lost revenue and irritated customers. So many dot-coms instead aim for "eventual consistency". Therefore, they give-up ACID.
Can NoSQL databases be used in e-commerce companies for order management?
You can always normalizes it once it gets to your order processing systems.
You need to optimize your e-commerce site for performance (if noSql is your way to do that, so be it). Then you can push/pull all you order data in to your order into Order processing/accounting systems normalizing it at at that time. All your financials and other reporting will be based off your accounting systems, NOT the eCommerce site.