我有大数据集,我想查询。查询不会更改,但基础数据会更改。从我读到的,我可以构建一个“视图”并查询它。另外,我读到Couch DB知道如何在数据更改时更新视图,因此我假设再次查询视图仍然很快。
我的问题是,我是否正确理解了CounchDB的观点?我不需要CouchDB的任何其他功能,我甚至不需要SQL,我想要的是对更改数据的快速相同查询。我可以用别的东西吗?如果我会使用,比如说,旧的MySQL会比CouchDB慢(读取:在上面的场景中,各种DB会如何执行?)。
答案 0 :(得分:2)
您的评估完全正确。享受!
唯一值得一提的性能技巧是,如果您emit()
从视图中获取所需的所有数据并且从不使用?include_docs
功能,您可能会看到提升,因为include_docs会导致CouchDB返回进入主数据库并检索导致该视图行的原始文档。换句话说,您可以emit()
在视图索引中需要的所有内容(更多空间但更快),或者您可以将引用用于原始文档(更少的空间但更慢。)
答案 1 :(得分:1)
根据您提供的信息,我认为没有人能回答您的问题。
关系数据库中的索引类似于CouchDB视图。在这两种情况下,它们都存储预先排序的数据实例,数据库使该实例与规范数据保持同步。两种类型的数据库都透明地使用索引/视图来加速索引/视图所针对的表单的后续查询。
如果没有索引/视图,查询必须扫描整个n
数据记录集合,并在O(n)
时间内执行。当查询受益于索引/视图时,它将在O(log n)
时间内执行。
但是,就数据量而言,这是非常广泛的性能曲线。给定的数据库在某些情况下可以具有如此快速的性能,无论如何它都会超出另一种产品。很难概括出品牌X总是比品牌Y更快。确定特定案例的唯一方法是在两个数据库中尝试这种情况并衡量绩效。