使用NoSQL数据库时创建连接对象是否合理?

时间:2011-07-04 11:49:49

标签: sql database-design join nosql

假设我要标记公司,用户,时间序列数据等各种对象。我提前知道我会想要查询查找标签为X 的所有公司。

现在,我可以向每个对象添加一个标记行,然后MapReduce查询的答案。

或者,我可以丢弃该行并创建一个TagAssociation对象,该对象会将Tag ObjectID与另一个ObjectID相关联(例如CompanyUser,{{1 }})。然后我可以更快地完成这些查询,并且没有MapReduce。但后来我觉得我只是在使用友好的NoSQL接口使用RDBMS实践。 NoSQL中的这些连接对象是否合理,或者我没有正确使用NoSQL?

2 个答案:

答案 0 :(得分:1)

您所描述的实际上是一个索引 - 预先存储具有特定标记的项目列表以加快查询速度。设置索引有更容易/更惯用的方法。

另外,您是否考虑过如何查询TagAssociation对象?那不是仍然使用MapReduce来查询Tag和Company属性吗?

答案 1 :(得分:1)

通常map / reduce用于非常大的数据集,而不是快速我需要这种信息。为此,人们设置自制索引(有时会将它们从当前数据中映射/减少)。

另一种方法是playOrm,它可以进行连接等(但不要在整个表上的分区上)。以这种方式,如果你可以获得1月的分区或者帐户1234的分区,并使用普通的SQL查询它,并将其与其他东西连接。 playOrm使用典型的noSQL索引模式在幕后为你做索引。

后, 迪安