是否存在将复制数据根据应用需求快速读取和数据完整性的数据关系与自动分发更改到复制数据结合起来的NoSQL数据库或"现成的解决方案"?
例子:
实体:
Topic
- id
- title
- first_comment_id
Comment
- id
- topic_id
- text
Documents/Materialized Views:
TopicList
- topic_id
- topic_title
- first_comment_text
当我更改主题标题时,更改将分发到数据库层包含此属性的每个文档。因此,完整性将由数据库管理。
我非常喜欢MongoDB,因为它的无模式行为,所以Oracle或其他关系数据库不是解决方案。
我有一些使用Mongo和加入实体/文档的经验,所以我将对此给出一个答案。你可以在Mongo中创建一个map/reduce查询,输出到一个集合。这个行为真的很好,避免了在新创建的集合"准备好"之前从它读取的问题(在map/reduce完成运行等之前)
为了保持这个集合的更新,我使用了一个外部进程来定时发出map/reduce函数。它允许你对你的查询更任意一点。
我认为这也可以管理一致性,因为每个实体都是权威的,当临时集合再次生成时,您将看到更改。当然,需要注意的是,它不是实时的。