假设我要标记公司,用户,时间序列数据等各种对象。我提前知道我会想要查询查找标签为X 的所有公司。
现在,我可以向每个对象添加一个标记行,然后MapReduce查询的答案。
或者,我可以丢弃该行并创建一个TagAssociation
对象,该对象会将Tag
ObjectID与另一个ObjectID相关联(例如Company
,User
,{{1 }})。然后我可以更快地完成这些查询,并且没有MapReduce。但后来我觉得我只是在使用友好的NoSQL接口使用RDBMS实践。 NoSQL中的这些连接对象是否合理,或者我没有正确使用NoSQL?
答案 0 :(得分:1)
您所描述的实际上是一个索引 - 预先存储具有特定标记的项目列表以加快查询速度。设置索引有更容易/更惯用的方法。
另外,您是否考虑过如何查询TagAssociation对象?那不是仍然使用MapReduce来查询Tag和Company属性吗?
答案 1 :(得分:1)
通常map / reduce用于非常大的数据集,而不是快速我需要这种信息。为此,人们设置自制索引(有时会将它们从当前数据中映射/减少)。
另一种方法是playOrm,它可以进行连接等(但不要在整个表上的分区上)。以这种方式,如果你可以获得1月的分区或者帐户1234的分区,并使用普通的SQL查询它,并将其与其他东西连接。 playOrm使用典型的noSQL索引模式在幕后为你做索引。
后, 迪安