Building a scalable e-commerce data model
resources.fabric.inc
resources.fabric.inc
For the past 2 years I've been working full-time on an open-source headless e-commerce framework (https://www.vendure.io/) so I can attest to this.
Small illustrative example: I have spent the past 2 weeks re-working our tax handling to handle scenarios like this:
- An order contains 5 products, some of which have different tax rates. Order total is $100. - A $10 coupon code reduces the order to $90. - The order is completed and shipped. Later on the customer wants to return and get a refund on one of the items. How much do you refund?
The answer is that you need to prorate (distribute) the $10 discount proportionally over the 5 items, so that when refunding, this order-wide discount is taken into account.
After extensive research (much of which I wrote up here: https://github.com/vendure-ecommerce/vendure/issues/573), I was rather surprised to find that the majority of well-known OSS e-commerce frameworks don't handle this properly.
On top of the things mentioned there are a whole host of other major topics of concern, e.g.
* stock control & tracking
* fulfillment & shipping integration
* payment integration
* promotions
* account management (email verification, password resets etc)
* product images / asset management
* multiple sales channel, multi-currency, multi-language support
For those interested, my project is approaching v1.0 so I've just about got a handle on all of the above. Phew!
Especially fun if the minimum order value for the coupon code was $99 and the product returned costs $5.
But to clarify, calling it an advertisement is not necessarily a condemnation. Content marketing articles can be fine when they actually contain some substance, which I believe this one does.
And thanks for checking out the project and your kind words.
Echoing the comment from rafaelturk about NoSQL, I'd love to see more info on how various industry verticals use DynamoDB as their primary store.
[1] https://anna.voelkl.at/wp-content/uploads/2016/12/ce2.1.3.pn...
Salesforce
/me ducks
I'm guessing those that have grown out of Magento/WooCommerce or even Shopify and Ecwid. Which means enterprise pricing, ie. custom quotes.
We don't surface pricing now. We need to keep our pricing flexible since we don't force businesses to purchase our entire platform like monoliths such as Salesforce and Oracle Commerce Cloud do.
Instead of purchasing Fabric's entire headless commerce platform/product package, many businesses purchase individual or a couple products to start. They integrate these into their existing systems, then purchase more products (SaaS) down the road and integrate those. This increases time to value and removes the need for a total replatform.
For instance, a multi-billion dollar company just purchased our PIM (https://fabric.inc/pim) to start. They also want us to help with system integration. The needs and use cases are just too varied to offer blanket pricing at this point.
This is one of the reason many companies moved back to relational model after dabbling with noSQL. I believe the best way to model it is to use something like PostgreSQL with jsonb docs for some type of data.
If you are interested in noSQL database may be give a try to reactioncommerce (acquired recently), you will begin to hit limitations soon, given integrity constraint and ACID compliance becomes very important for some type of eCommerce data e.g. changing prices and inventory in real time which are consistent and correct. It becomes extremely hard and complex to manage it in application code, which comes free with relational database model.
Once you're at several million in revenue, then you can think about splitting off some parts of your data into document storage solutions for certain efficiency reasons, but that is by no means necessary.
This is a great video on the topic: https://www.youtube.com/watch?v=HaEPXoXVf2k