我的 Python Web 应用程序使用 DynamoDB 作为其数据存储,但这可能适用于在应用程序层完成索引一致性的其他 NoSQL 表。我正在对数据进行非规范化并在几个表中创建索引以方便查找。
例如,对于我的用户表:
* Table 1: (user_id) email, employee_id, first name, last name, etc ...
Table 2: (email) user_id
Table 3: (employee_id) user_id
表 1 是我存储用户信息的“主表”。如果 user_id 已知,则可以在单个 GET 查询中检索有关用户的所有信息。
表 2 和表 3 支持通过电子邮件或employee_id 进行查找,需要先查询这些表以获取 user_id,然后再查询表 1 以检索其余信息。
我担心的是非规范化数据——处理表 1 中的删除以确保从表 2 + 3 中删除匹配数据的最佳方法是什么?还确保插入?
现在我的事件链是这样的:
1. Insert row in table 1
2. Insert row in table 2
3. Insert row in table 3
最后添加“检查”是否有意义?就像是:
4. Check that all 3 rows have been inserted.
5. If a row is missing, remove rows from all tables and raise an error.
还有其他技巧吗?