DynamoDB 建模关系数据(餐厅菜单示例)

DynamoDB modeling relational data (restaurant menus example)

我正在 AWS 上创建一个网络平台,让我所在社区的餐馆老板能够创建菜单。我正在从关系数据库模型转向 NoSQL 解决方案,并想知道组织这些数据的最佳方式。我目前的关系模型如下:

Table 'restaurants': id (int / primary key), name, owner (int)
Table 'categories': id (int / primary key), restaurant (int), parent (int)
Table 'items': id (primary key), name, category (int)

只应允许所有者访问 create/update/delete 个地点、类别和项目。

鉴于所有权限制,您会推荐什么作为非规范化解决方案?我正在考虑执行以下操作:

Table 'restaurants': id (primary key), owner (sort key), categories (list of ids)
Table 'categories':  id (primary key), restaurant (id), items (list of item objects), subcategories (list of category ids)

想知道将所有类别数据包含在餐厅内是否更好table。例如,如果用户是相关餐厅的所有者,则用户应该只能将项目添加到类别中,这将需要额外的查询,如上所述。

主要取决于您如何使用数据。如果通常 Restaurant 是满的,可以在 restaurants table.

如果您只对一个类别进行大量操作,例如许多只对食物感兴趣而不对饮料感兴趣,那么最好在类别上完成此操作。

我认为对于某些餐厅来说,最好将其分类并保留餐厅级别、地址、phone、营业时间等方面的通用数据。

我觉得写不重要,好像90%以上都是看网站。0

也许是缓存解决方案? Redis ?内存缓存?这会加快更多。