Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 速度、CouchDB视图和备选方案_Database_Performance_Couchdb - Fatal编程技术网

Database 速度、CouchDB视图和备选方案

Database 速度、CouchDB视图和备选方案,database,performance,couchdb,Database,Performance,Couchdb,我有一个大数据集,我想查询它。查询不会更改,但基础数据会更改。根据我所读的,我可以构造一个“视图”并查询它。此外,我还了解到Coach DB知道在数据更改时如何更新视图,因此我认为再次查询视图仍然很快 我的问题是,我是否正确地理解了咨询委员会的观点?我不需要CouchDB的任何其他功能,我甚至不需要SQL,我所需要的只是对不断变化的数据进行快速相同的查询。我能用点别的吗?比如说,如果我使用好的老MySQL,它真的会比CouchDB慢吗(阅读:在上述场景中,各种DBs的性能大致如何?)。鉴于您提供

我有一个大数据集,我想查询它。查询不会更改,但基础数据会更改。根据我所读的,我可以构造一个“视图”并查询它。此外,我还了解到Coach DB知道在数据更改时如何更新视图,因此我认为再次查询视图仍然很快


我的问题是,我是否正确地理解了咨询委员会的观点?我不需要CouchDB的任何其他功能,我甚至不需要SQL,我所需要的只是对不断变化的数据进行快速相同的查询。我能用点别的吗?比如说,如果我使用好的老MySQL,它真的会比CouchDB慢吗(阅读:在上述场景中,各种DBs的性能大致如何?)。

鉴于您提供的信息,我认为没有人能够回答您的问题

关系数据库中的索引类似于CouchDB视图。在这两种情况下,它们都存储一个预排序的数据实例,并且数据库使该实例与规范数据保持同步。这两种类型的数据库都透明地使用索引/视图来加速索引/视图所针对的表单的后续查询

如果没有索引/视图,查询必须扫描整个
n
数据记录集合,并在
O(n)
时间内执行。当查询受益于索引/视图时,它将在
O(logn)
时间内执行


但这是关于数据量的性能曲线的一个非常宽泛的说法。一个给定的数据库在某些情况下可能具有如此快速的性能,以至于无论发生什么情况,它的性能都会超过另一个产品。很难概括品牌X总是比品牌Y快。确定具体案例的唯一方法是在两个数据库中尝试该案例并衡量绩效。

您的评估完全正确。享受吧


唯一值得一提的性能技巧是,如果您从视图中发出所需的所有数据,并且从不使用“包含文档”功能,您可能会看到性能提升,因为“包含文档”会导致CouchDB返回主数据库并检索导致该视图行的原始文档。换句话说,您可以
emit()
将所需的所有内容放入视图索引中(更多空间但更快),或者您可以使用对原始文档的引用(更少空间但更慢)。

我知道索引是预排序的(即O(log N)),但我认为视图会自动填充新更新的数据,所以根本就没有搜索。换句话说,我认为视图与索引非常不同,性能如何。。。顺便说一句,你说我提供的信息不够,你能更具体一点吗?比如数据量?我还认为,查询保持不变和数据更改比其他任何事情都重要……哪种产品具有最佳性能在很大程度上取决于您的特定查询以及您定义的索引/视图。这就是我所说的信息不足的意思。每个产品都有其优缺点,因此只有在知道需要优化哪些查询后才能进行优化。此外:如果索引包含结果中所需的所有列,则可以使用索引来避免搜索。这称为覆盖指数。当然,在许多RDBMS品牌中,一次只能为一个表中的列定义索引,因此它可能不如CouchDB视图灵活。