电子商务/购物车(和结账过程):使用关系型数据库还是NoSQL?

4

对于电子商务网站的购物车(和结算过程)使用情况,使用关系型数据库(RDBMS)还是NoSQL数据库(如MongoDB/Cassandra/others)更好?

从目录角度来看,NoSQL具有灵活的模式、数据/节点的水平扩展等理想用例。

每种方法在购物车用例中的优缺点是什么?

2个回答

17

SQL和noSQL数据库之间存在许多差异,这些差异使得每种存储类型在不同情况下都有其优点和缺点。

由于两种数据库类型最终都可以工作,所以一切都取决于上下文或您的具体实现。

在这种特定情况下(购物车),优缺点可能与数据的一致性可扩展性有关。

noSQL数据库更适用于更“动态”的应用程序(数据分析、IoT、多媒体等)。此类应用程序使用的数据通常没有严格的结构,并且数量非常大。这意味着无需开发复杂的数据库模型,通过单独的“节点”存储大量数据更便宜。这也使得noSQL数据库更易于扩展和扩展。主要问题是缺乏结构。这将使您更难运行分析并跟踪数据库的每个细节。

同时,当您的数据结构良好且大多数一致时,SQL数据库很有用。如您所知,SQL将数据存储在列和行中,如果您想生成详细的数据统计信息,并且还想为应用程序中发生的所有事情保持组织记录,则这为SQL提供了优势。主要缺点是SQL数据库的设计需要更多时间,而且可能更昂贵(可扩展性和物理存储需要更多硬件)。

在性能方面,我认为在这种用例中不会有任何重大差异。

如果您考虑我刚刚写的所有内容,则应该说,在购物车的上下文中,使用SQL模型是正确的选择。购物车不需要大量升级和更改(可扩展性),其数据始终结构化(项目名称、价格等),并且您可能希望跟踪用户在电子商务应用程序中进行的每笔交易(出于问责和安全原因)。

tl;dr 在购物车用例中使用SQL,因为数据是结构化和一致的。

祝您好运!


1

像Cassandra与postgres/mysql这样的东西的优缺点如下:

  • Cassandra更好地处理多个数据中心的高可用性。
  • Cassandra更好地处理高写入量。
  • 由于您将拥有多个副本(而且您不必担心WAL重放或binlog重放或奇怪的主-主复制问题,尽管一些RDBMS插件使MySQL和Postgres比以前更容易),因此Cassandra允许您在不停机的情况下重新启动主机。
  • Cassandra允许您进行更好的扩展(随实例数量线性扩展到大约1200个实例)

  • MySQL/Postgres允许您通过向现有表添加索引来根据业务要求构建查询;Cassandra希望您在开始编写数据之前知道查询并进行数据建模。

  • MySQL/Postgres往往更容易使用,并且您会发现大量的库/UI等可以帮助您入门
  • MySQL/Postgres提供真正的事务/MVCC-Casssandra具有轻量级事务,仅限于对单个键执行操作,并提供较弱的隔离/原子性保证。

然而,如果您不认为您的购物车将处理数千个并发用户,那么它可能并不重要(只要使用具有真实数据耐久性保证的东西):使用您最熟悉的工具。我会使用Cassandra,因为我非常了解Cassandra,但如果您对Cassandra(或其他任何东西)不太熟悉,请使用您最擅长的工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接