对于电子商务网站的购物车(和结算过程)使用情况,使用关系型数据库(RDBMS)还是NoSQL数据库(如MongoDB/Cassandra/others)更好?
从目录角度来看,NoSQL
具有灵活的模式、数据/节点的水平扩展等理想用例。
每种方法在购物车用例中的优缺点是什么?
SQL和noSQL数据库之间存在许多差异,这些差异使得每种存储类型在不同情况下都有其优点和缺点。
由于两种数据库类型最终都可以工作,所以一切都取决于上下文或您的具体实现。
在这种特定情况下(购物车),优缺点可能与数据的一致性和可扩展性有关。
noSQL数据库更适用于更“动态”的应用程序(数据分析、IoT、多媒体等)。此类应用程序使用的数据通常没有严格的结构,并且数量非常大。这意味着无需开发复杂的数据库模型,通过单独的“节点”存储大量数据更便宜。这也使得noSQL数据库更易于扩展和扩展。主要问题是缺乏结构。这将使您更难运行分析并跟踪数据库的每个细节。
同时,当您的数据结构良好且大多数一致时,SQL数据库很有用。如您所知,SQL将数据存储在列和行中,如果您想生成详细的数据统计信息,并且还想为应用程序中发生的所有事情保持组织记录,则这为SQL提供了优势。主要缺点是SQL数据库的设计需要更多时间,而且可能更昂贵(可扩展性和物理存储需要更多硬件)。
在性能方面,我认为在这种用例中不会有任何重大差异。
如果您考虑我刚刚写的所有内容,则应该说,在购物车的上下文中,使用SQL模型是正确的选择。购物车不需要大量升级和更改(可扩展性),其数据始终结构化(项目名称、价格等),并且您可能希望跟踪用户在电子商务应用程序中进行的每笔交易(出于问责和安全原因)。
tl;dr 在购物车用例中使用SQL,因为数据是结构化和一致的。
祝您好运!
像Cassandra与postgres/mysql这样的东西的优缺点如下:
Cassandra允许您进行更好的扩展(随实例数量线性扩展到大约1200个实例)
MySQL/Postgres允许您通过向现有表添加索引来根据业务要求构建查询;Cassandra希望您在开始编写数据之前知道查询并进行数据建模。
然而,如果您不认为您的购物车将处理数千个并发用户,那么它可能并不重要(只要使用具有真实数据耐久性保证的东西):使用您最熟悉的工具。我会使用Cassandra,因为我非常了解Cassandra,但如果您对Cassandra(或其他任何东西)不太熟悉,请使用您最擅长的工具。