当前位置: 首页 > 面试题库 >

NoSQL数据库如何对聚合函数(AVG,SUM等)执行

潘英豪
2023-03-14
问题内容

我们需要定期处理相当大的数据集(30-40GB)。它有很多按时间排序的值(以及更多信息),但我们基本上需要按月执行一些数学运算。

我们的第一种方法是使用MySQL数据库来备份数据,因为我们对引擎和关系方法有一定的经验。但是,该过程耗时太长,我们想知道NoSQL方法是否可以做得更好。

基本上,我们需要表达的数据是:

Value: { NumericalValue, Year, Month }
Entity: List of 'Value'

我们处理此列表三次,执行简单的数学运算,当我说“处理”时,我的意思是遍历数据集并执行演算。当一切都结束时,我们具有相同的结构(但具有不同的数据):

Value: { NumericalValue, Year, Month }
Entity: List of 'Value'

现在是我们发现最大问题的时候,我们需要计算一些平均数,这需要很多时间。当我们重复此过程几次时,我认为最耗时的任务是:

1)将数据集导出到MySQL。这意味着很多来自文本文件的插入。

当数据转换时:

2)计算一些包含带有LIMIT的聚合函数(AVG,SUM)的查询。3)使用整个数据集计算一些包含聚合函数的查询。

通常,即使添加了一些索引,我们也会感觉花费的时间太长(某些查询需要20分钟)。任何技巧或解决方法将不胜感激。我觉得NoSQL数据库不是专门为此设计的,但是也许有些经验可以有所帮助:)。

谢谢你的时间,


问题答案:

您的任务非常适合Columnar数据库。面向列的NoSQL(例如Cassandra)数据库将数据表存储为数据列的一部分,而不是数据行。这大大提高了聚合速度。这与依赖硬盘进行存储的系统有关。如果不是这种情况(例如内存数据库),则有更多选择可以降低性能。



 类似资料:
  • 本小节介绍 MySQL 常见的聚合函数,实际业务中诸如 总数、平均值、总和 这样的数据是没有存储在数据表中,如需要获取这些数据时,使用 MySQL 的聚合函数可以获取它们,MySQL 主要的聚合函数有 AVG、COUNT、SUM、MIN、MAX,本小节介绍 AVG、COUNT、SUM。 1. AVG函数求平均值 以 teacher 表为例,先查所有 teacher 信息: SELECT * FRO

  • 问题内容: 我正在用SQL编写此查询: 首先,我将进行分组,但是接下来,会发生什么? 问题答案: 如果你有这样的事情 分组后 因此,下面的查询将返回45作为DepartmentId 3的“最高平均工资”

  • 本文向大家介绍NoSQL数据库,包括了NoSQL数据库的使用技巧和注意事项,需要的朋友参考一下 这些用于大型分布式数据集。关系数据库可以有效地处理一些大数据性能问题,而NoSQL数据库可以轻松解决此类问题。在分析可能存储在云的多个虚拟服务器上的大型非结构化数据时,非常有效。

  • 本文向大家介绍初识NoSQL NoSql数据库入门 NoSql数据库基础知识,包括了初识NoSQL NoSql数据库入门 NoSql数据库基础知识的使用技巧和注意事项,需要的朋友参考一下 做了一年的大一年度项目了,对于关系型数据库结构还是有些了解了,有的时候还是觉得这种二维表不是很顺手。在看过一篇文章之后,对NoSQL有了初步的了解,(https://keen.io/blog/5395834921

  • 我试图为自己创建一个使用DynamoDB的简单应用程序。我从未在高级级别上使用过非关系型数据库,只是在这里和那里存储一个值。 该应用程序是一个记录器。我将记录一些东西,迪纳摩将记录日期并计算一天。 例如,一个用户今天记录多件事情,它只会说今天的日期和记录的时间:5 然后,我可以进行查询,以获取过去一周/一天/一个月内所有logged_times的总和。 我的问题是如何构造一个NoSQL数据库来完成

  • NoSQL(Not Only SQL),指的是非关系型的数据库。随着Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoD