最近我在研究NoSQL数据库。我需要关于如何针对给定问题以最优化和有效的方式存储数据的建议。我现在针对的是MongoDB。但是它应该和CouchDB一样。我需要关于NoSQL/MongoDb和数据/模型结构的建议
比方说,我们有这3种型号:
Story:
id
title
User:
id
name
Vote:
id
story_id
user_id
我希望能够查询数据库,这些问题:
- 谁投了票?
- 此用户投票的内容?
我做简单的用一个关系数据库工作时加入。问题是,我应该如何存储这些对象的数据才能达到最高效率。
例如,如果我保存投票对象作为故事的一个子集合它不会是容易得到的信息 - “什么是用户投票支持”。
那么,事实上,我想在投票模型中存储更多信息。例如:created_at,ip,user_agent。 我应该将数据存储在用户集合的故事列表中吗? – 2009-11-30 19:10:08
您可以将投票存储为一个子文档数组,每个文档类似于'{story_id:...,created_at:...,ip:...}'等,然后查询变为'find({'stories .story_id':...})'。你也可以索引。 – mdirolf 2009-11-30 21:17:13
那么我有一个相当大的数据库与几个M记录,并将测试上述情况。 – 2009-12-01 07:01:08