预订系统是否适合 Amazon DynamoDB / NoSQL?

Way*_*ind 4 mysql sql database-design nosql amazon-dynamodb

我正在开发基本的餐厅预订系统,并正在考虑在该项目中使用Amazon DynamoDB。话虽这么说,我什至不确定DynamoDB是否适合这样的事情,或者我是否应该坚持使用MySQL RDS,因为某些查询可能非常复杂。

我需要的功能:

用户将提交包含日期、时间和聚会人数的“查找餐桌”表格。

  1. 检查RESTAURANT表格是否允许日期和聚会规模。
  2. 检查BLOCKED表格以了解封锁日期(节假日和其他关闭时间)
  3. 检查HOURS餐桌以确保餐厅仍在营业。
  4. 根据聚会人数检查TABLEINFO餐桌,ANDRESERVATION餐桌进行比较,确保同一时间该餐桌尚未为其他客人预订

关于DynamoDB数据库设计(特别hash & range是用于此类用途)的任何建议或技巧吗?

或者您认为MySQL数据库更适合此类应用程序?

这是一个快速的数据库设计,可以让您更好地了解我正在尝试做什么。

预订模式

Joh*_*rty 5

我对关系数据库做了很多工作,也对 NoSQL 数据库做了一些工作(只是为了让你知道我来自哪里)。恕我直言,NoSQL 数据库最适合满足以下一个或多个条件的场景:

  1. 数据本质上是扁平的(没有太多关系,几乎就像旧的平面文件)
  2. 有一个明确的“父”类型记录和“子”记录,这些记录足够小/父记录的访问频率足够高,以证明将它们正确嵌入到记录中是合理的。
  3. 您需要在合理范围内自由地添加/填充字段。我喜欢将其视为继承,其中表中的每个项目都共享一些共同的特征(ID、名称),但不同的记录可能具有不同的特征。例如,在线产品目录中可能包含书籍、自行车和 MP3 歌曲。“书籍”项目的记录将包含 ISBN、页数、作者等内容。“自行车”可能包含车轮尺寸和颜色,“MP3”可能包含长度、艺术家、流派等。如果没有严重的重载或将字段留空,则永远不会将所有这些内容放入 RDS 的“项目”表中。NoSQL 数据库允许您将所有这些信息存储在表中,并且仅存储需要它的项目。

您绝对可以使用 Dynamo 的索引功能来构建问题中包含的架构,但您会尝试使 NoSQL 数据库表现得像 RDS。

也就是说:我自己会首先尝试使用 Dynamo 作为学习经验。:)