【发布时间】:2012-09-09 14:21:11
【问题描述】:
我的 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 支持通过电子邮件或员工 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.
还有其他技巧吗?
【问题讨论】:
-
出于好奇,您是否考虑过使用 SQL 数据库?这种数据听起来比其他任何东西都更适合 SQL。
标签: python nosql amazon-dynamodb