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 ?内存缓存?这会加快更多。
我正在 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 ?内存缓存?这会加快更多。