对亿级别的数据聚合(亿级别的数据量数据库)

今天小编要给小伙伴们分享的是对亿级别的数据聚合(亿级别的数据量数据库),请大家认真阅读文章,希望能够有所帮助。如果有对POS机办理、POS机申请、POS机领取、POS机代理有意向的小伙伴,可以添加本网站客服微信进行咨询(YBBSTY)。

文章目录:

  • 1、10亿级流数据交互查询,为什么抛弃mysql选择voltdb
  • 2、mysql 怎么处理亿级数据
  • 3、怎么处理海量数据
  • 4、怎么在Excel中处理上亿条数据吗
  • 5、怎么提高亿级别 mysql group by order by 效率

10亿级流数据交互查询,为什么抛弃mysql选择voltdb

10亿级流数据交互查询,为什么抛弃mysql选择voltdb

作者 谭正海、武毅 发布于 2022年8月18日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!讨论

分享到:微博微信FacebookTwitter有道云笔记邮件分享

稍后阅读

我的阅读清单

大数据时代,随着数据量的爆炸式增长,对于数据的处理速度要求也越来越高,以往基于MySQL的数据处理方案已不能满足大吞吐、低延迟的写入和高速查询的场景;百分点综上所述出了一套完整的解决方案,本文就带你一同了解VoltDB在流数据交互查询的应用实践。

流式数据交互查询场景

在百分点,每天有10亿条记录产生,针对这些大量实时产生的数据,不仅要做到实时写入,类似推荐调优、数据验证等查询要在秒级响应。有简单的单条验证,也有几个小时或一天的聚合计算,也有基于几千万/几亿数据表间的联合聚合查询。例如如下SQL查询:

对于前期的MySQL方案,虽然已经根据一定规则做了人工的分库,但是对于上面SQL中的表Event落在单机上的数据量达到几千万,Result表也近千万,在这样的大表之间进行复杂的联合聚合查询,MySQL查下来要花费30分钟左右,甚至更长,或是没响应了。

因此在针对同时要求大吞吐、低延迟的写入和高速查询的场景下,基于MySQL的现存方案完全不能实现。在不放弃SQL语句的便利基础上,经历过多种选型和方案调研,最终选择了VoltDB来解决此类问题。

相关厂商内容

携程的推荐及智能化算法及架构体系实践

Autodesk基于Spark自建大数据平台的实践经验

大数据与电商四大核心要素

阿里巴巴数据研发体系的建立和管理之道

苏宁云商数据平台实时化实践

相关赞助商

QCon上海2022.10月20~22日,上海·宝华万豪酒店,精彩内容抢先看!!

如上图,线上的全量流量,通过Streaming总线同时到达VoltDB和离线Hive表。不同的是,数据写入VoltDB使用实时方式,写入Hive使用批量方式。新的数据要求在极短的延迟内马上写入VoltDB待查询;批量写入Hive的数据也可以做到小时级以内刷写到对应分区。。

VoltDB简介

VoltDB是一种开源的极速的内存关系型数据库,由Ingres和Postgres联合创始人Mike Stonebraker带领开发的NewSQL,提供社区版本和商业版本。VoltDB采用shard-nothing架构,既获得了NoSQL的良好可扩展性以及高吞吐量数据处理,又没有放弃传统关系型数据库的事务支持—ACID。

一般VoltDB数据库集群由大量的站点(分区)组成,分散在多台机器上,数据的存储与处理都是分布在各个站点的,架构图如下所示:

如上图,集群有3个节点、每个节点1个站点构成。因此图中的表都只分成3个区,当然也可以分成更多的区,那么一张表在单个节点上则存在多个分区。

详细在使用上涉及以下几个概念:

客户端可以连接集群中任意一个节点,集群中所有节点是对等的,采用的同样是水平分区的方式;

每张表指定一个字段作为分区键,VoltDB使用该键采用哈希算法方式分布表数据到各个分区。事实上VoltDB中存在两种类型的表,一种是分区表,还有一种叫做”Replicated table”。”Replicated表”在每个节点存储的不是某张表的部分数据,而是全部数据,适用于小数据量的表。

这里我们主要看重分区表,分区表的分区字段的选择很重要,应该尽量选择使数据分散均匀的字段。

VoltDB支持的客户端语言或接口:

C++

C#

Erlang

Go

Java

Python

Node.js

JDBC 驱动接口

HTTPJSON 接口 (这意味着所有能实现http请求语言,都能编写VoltDB的客户端程序,且非常直观)

mysql 怎么处理亿级数据

1、数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引。这是一个基本的新闻系统的简单模型。现在往里面填充数据,填充10万篇新闻。 

2、最后collect 为 10万条记录,数据库表占用硬盘1.6G。OK ,看下面这条sql语句:select id,title from collect limit 1000,10; 很快;基本上0.01秒就OK,再看下面的select id,title from collect limit 90000,10; 从9万条开始分页。

3、8-9秒完成。

4、看下面一条语句:select id from collect order by id limit 90000,10; 很快,0.04秒就OK。因为用了id主键做索引当然快。

怎么处理海量数据

在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题,它的主要难点有以下几个方面:

一、数据量过大,数据中什么问题都可能存在。

假如说有10条数据,那么大不了每条去逐一检查,人为处理,假如有上百条数据,也可以考虑,假如数据上到千万级别,甚至 过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么问题都可能存在,例如,数据中某处格式出了问题,尤其在程序处理时, 前面还能正常处理,突然到了某个地方问题出现了,程序终止了。。

二、软硬件要求高,系统资源占用率高。

对海量的数据进行处理,除了好的方式,最重要的就是合理使用工具,合理分配系统资源。一般问题,假如处理的数据过TB级,小型机是要考虑的,普通的机子假如有好的方式可以考虑,不过也必须加大CPU和内存,就象面对着千军万马,光有勇气没有一兵一卒是很难取胜的。

三、要求很高的处理方式和技巧。

这同样是本文的写作目的所在,好的处理方式是一位工程师长期工作经验的积累,同样是个人的经验的综上所述。没有通用的处理方式,但有通用的原理和规则。

下面我们来详细介绍一下处理海量数据的经验和技巧:

一、选用优秀的数据库工具

现在的数据库工具厂家比较多,对海量数据的处理对所使用的数据库工具要求比较高,一般使用Oracle或者DB2.微软 公司最近发布的SQL Server 2005性能也不错。此外在BI领域:数据库,数据仓库,多维数据库,数据挖掘等相关工具也要进行选择,象好的ETL工具和好的OLAP工具都十分必要, 例如Informatic,Eassbase等。笔者在实际数据分析项目中,对每天6000万条的日志数据进行处理,使用SQL Server 2000需要花费6小时,而使用SQL Server 2005则只需要花费3小时。

二、编写优良的程序代码

处理数据离不开优秀的程序代码,尤其在进行复杂数据处理时,必须使用程序。好的程序代码对数据的处理至关重要,这不仅仅是数据处理准确度的问题,更是数据处理效率的问题。良好的程序代码应该包含好的算法,包含好的处理步骤,包含好的效率,包含好的异常处理机制等。

三、对海量数据进行分区操作

对海量数据进行分区操作十分必要,例如针对按年份存取的数据,我们可以按年进行分区,不同的数据库有不同的分区方式,不 过处理机制大体相同。例如SQL Server的数据库分区是将不同的数据存于不同的文件组下,而不同的文件组存于不同的磁盘分区下,这样将数据分散开,减小磁盘I/O,减小了系统负荷, 而且还可以将日志,索引等放于不同的分区下。

四、建立广泛的索引

对海量的数据处理,对大表建立索引是必行的,建立索引要考虑到详细问题,例如针对大表的分组、排序等字段,都要建立相应 索引,一般还可以建立复合索引,对经常插入的表则建立索引时要小心,笔者在处理数据时,曾经在一个ETL步骤中,当插入表时,首先删除索引,然后插入完 毕,建立索引,并实施聚合操作,聚合完成后,再次插入前还是删除索引,所以索引要用到好的时机,索引的填充因子和聚集、非聚集索引都要考虑。

五、建立缓存机制

当数据量增加时,一般的处理工具都要考虑到缓存问题。缓存大小设置的好差也关系到数据处理的成败,例如,笔者在处理2亿条数据聚合操作时,缓存设置为100000条/Buffer,这对于这个级别的数据量是可行的。。

对亿级别的数据聚合

六、加大虚拟内存

假如系统资源有限,内存提示不足,则可以靠增加虚拟内存来解决。笔者在实际项目中曾经遇到针对18亿条的数据进行处理, 内存为1GB,1个P42.4G的CPU,对这么大的数据量进行聚合操作是有问题的,提示内存不足,那么采用了加大虚拟内存的方式来解决,在6块磁盘分区 上分别建立了6个4096M的磁盘分区,用于虚拟内存,这样虚拟的内存则增加为 4096*6 + 1024 =25600 M,解决了数据处理中的内存不足问题。

七、分批处理

海量数据处理难因为数据量大,那么解决海量数据处理难的问题其中一个技巧是减少数据量。可以对海量数据分批处理,然后处 理后的数据再进行合并操作,这样逐个击破,有利于小数据量的处理,不至于面对大数据量带来的问题,不过这种方式也要因时因势进行,假如不允许拆分数据,还 需要另想办法。不过一般的数据按天、按月、按年等存储的,都可以采用先分后合的方式,对数据进行分开处理。

八、使用临时表和中间表

数据量增加时,处理中要考虑提前汇总。这样做的目的是化整为零,大表变小表,分块处理完成后,再利用一定的规则进行合 并,处理过程中的临时表的使用和中间结果的保存都非常重要,假如对于超海量的数据,大表处理不了,只能拆分为多个小表。假如处理过程中需要多步汇总操作, 可按汇总步骤一步步来,不要一条语句完成,一口气吃掉一个胖子。

九、优化查询SQL语句

在对海量数据进行查询处理过程中,查询的SQL语句的性能对查询效率的影响是非常大的,编写高效优良的SQL脚本和存储 过程是数据库工作人员的职责,同样是检验数据库工作人员水平的一个标准,在对SQL语句的编写过程中,例如减少关联,少用或不用游标,设计好高效的数据库表 结构等都十分必要。笔者在工作中试着对1亿行的数据使用游标,运行3个小时没有出结果,这是一定要改用程序处理了。

十、使用文本格式进行处理

对一般的数据处理可以使用数据库,假如对复杂的数据处理,必须借助程序,那么在程序操作数据库和程序操作文本之间选择, 是一定要选择程序操作文本的,原因为:程序操作文本速度快;对文本进行处理不容易出错;文本的存储不受限制等。例如一般的海量的网络日志都是文本格式或者 csv格式(文本格式),对它进行处理牵扯到数据清洗,是要利用程序进行处理的,而不建议导入数据库再做清洗。

十一、定制强大的清洗规则和出错处理机制

海量数据中存在着不一致性,极有可能出现某处的瑕疵。例如,同样的数据中的时间字段,有的可能为非标准的时间,出现的原因可能为应用程序的错误,系统的错误等,这是在进行数据处理时,必须制定强大的数据清洗规则和出错处理机制。。

十二、建立视图或者物化视图

视图中的数据来源于基表,对海量数据的处理,可以将数据按一定的规则分散到各个基表中,查询或处理过程中可以基于视图进行,这样分散了磁盘I/O,正如10根绳子吊着一根柱子和一根吊着一根柱子的区别。

十三、避免使用32位机子(极端问题)

目前的计算机很多都是32位的,那么编写的程序对内存的需要便受限制,而很多的海量数据处理是必须大量消耗内存的,这便要求更好性能的机子,其中对位数的限制也十分重要。

十四、考虑操作系统问题

海量数据处理过程中,除了对数据库,处理程序等要求比较高以外,对操作系统的要求也放到了重要的位置,一般是必须使用服务器的,而且对系统的安全性和稳定性等要求也比较高。尤其对操作系统自身的缓存机制,临时空间的处理等问题都需要综合考虑。

十五、使用数据仓库和多维数据库存储

数据量加大是一定要考虑OLAP的,传统的报表可能5、6个小时出来结果,而基于Cube的查询可能只需要几分钟,因此处理海量数据的利器是OLAP多维分析,即建立数据仓库,建立多维数据集,基于多维数据集进行报表展现和数据挖掘等。

十六、使用采样数据,进行数据挖掘

基于海量数据的数据挖掘正在逐步兴起,面对着超海量的数据,一般的挖掘软件或算法往往采用数据抽样的方式进行处理,这样 的误差不会很高,大大提高了处理效率和处理的成功率。一般采样时要注意数据的完整性和,防止过大的偏差。笔者曾经对1亿2千万行的表数据进行采样,抽取出 400万行,经测试软件测试处理的误差为千分之五、客户可以接受。

还有一些方式,需要在不同的问题和场合下运用,例如使用代理键等操作,这样的好处是加快了聚合时间,因为对数值型的聚合比对字符型的聚合快得多。类似的问题需要针对不同的需求进行处理。

海量数据是发展趋势,对数据分析和挖掘也越来越重要,从海量数据中提取有用信息重要而紧迫,这便要求处理要准确,精度要高,而且处理时间要短,得到有价值信息要快,所以,对海量数据的研究很有前途,也很值得进行广泛深入的研究。

怎么在Excel中处理上亿条数据吗

当需要在Excel中对数据进行分类计算时,除了使用数据透视表,还可以使用分类汇总命令。与数据透视表不同的是,它可以直接在数据区域中插入汇总行,从而可以同时看到数据明细和汇总。下面是分类汇总的使用方式:

在进行分类汇总前,需保证数据具有下列格式,即数据区域的第一行为标题行,数据区域中没有空行和空列,数据区域四周是空行和空列,如下图是几种商品在一些城市的销售数据。此外,假如数据区域在应用分类汇总前已被设置成Excel 2003列表或Excel 2007表,需将其转换为普通区域。因为对于Excel 2003列表或Excel 2007表不能使用分类汇总。。

一、仅对某列进行分类汇总

例如上例中需要对各城市的销售量进行分类汇总,方式如下:

1. 首先对数据按需要分类汇总的列(本例为“城市”列)进行排序。

选择“城市”列中的任意单元格,在Excel 2003中单击工具栏中的排序按钮如“A→Z”。在Excel 2007中,选择功能区中“数据”选项卡,在“排序和筛选”组中单击“A→Z”按钮。

2. 选择数据区域中的某个单元格,在Excel 2003中单击菜单“数据→分类汇总”。假如是Excel 2007.则在“数据”选项卡的“分级显示”组中单击“分类汇总”。

3. 在弹出的“分类汇总”对话框中,在“分类字段”下选择“城市”,在“汇总方式”中选择某种汇总方式,可供选择的汇总方式有“求和”、“计数”、“平均值”等,本例中选择默认的“求和”。在“选定汇总项”下仅选择“销售额”。

4.单击确定,Excel将按城市进行分类汇总。

二、对多列进行分类汇总

如上例中需要同时对“城市”列和“商品名称”列进行分类汇总,可以插入嵌套分类汇总。

1.对数据进行多列排序,即进行多关键字排序。

首先选择数据区域中的某个单元格。

在Excel 2003中,单击菜单“数据→排序”。弹出“排序”对话框,其中主要关键字选择“城市”,次要关键字选择“商品名称”,其他选择默认。

假如是Excel 2007.在“数据”选项卡的“排序和筛选”组中单击“排序”命令,在弹出的“排序”对话框中,单击“添加条件”按钮添加次要关键字排序条件,然后主要关键字选择“城市”,次要关键字选择“商品名称”,其他选择默认。

2.对“城市”列进行分类汇总(外部分类汇总)。

按上述方式打开“分类汇总”对话框,在“分类字段”下选择“城市”,在“汇总方式”中选择默认的“求和”,在“选定汇总项”下仅选择“销售额”。单击“确定”。

3.对“商品名称”列进行分类汇总(嵌套分类汇总)。

再次打开“分类汇总”对话框,在“分类字段”下选择“商品名称”,取消选择“替换当前分类汇总”,单击“确定”。

这时Excel将按“城市”列和“商品名称”列对“销售额”进行分类汇总。

假如不需要显示明细数据,可以单击左侧的分级显示符号,如本例中右上角的数字和左侧的减号来隐藏明细数据。

三、删除分类汇总

在“分类汇总”对话框中,单击“全部删除”即可。

怎么提高亿级别 mysql group by order by 效率

1、使用用索引

注意有些问题下不可以使用索引来提高Order By语句的查询性能。

这里需要注意的是,并不是任何问题下都可以通过使用索引来提高Order Byz子句的查询效率。如对不同的关键字使用这个语句、混合使用ASC模式和DESC模式、用于查询条件的关键字与Order By语句中所使用的关键字不同、对关键字的非连续元素使用Order By子句、在同一条语句中使用不同的Order BY 和Group BY表达式、使用的表索引的类型不可以按顺序来保存行等问题,就不能通过使用索引来解决Order By语句的排序问题。此时就需要另想他法。如可以重新调整表结构或者查询语句,以满足使用这个特性的特定条件。。

一般问题下,为了避免使用Order By语句导致的查询速度变慢的问题,先是需要考虑使用索引来解决问题。假如不可以通过索引来解决问题,那么可以通过缓存在一定程度来缓解。如可以增加soft_buffer_size变量的大小、根据实际问题调整Read_buffer_size变量的大小、更改tmpdir目录将其指向具有大量空闲空间的专用文件系统等等。有时候管理员可以使用这个特性将负载均匀分布到多个目录中去。

2、使用Explain关键字来确认是否可以通过索引来解决Order BY速度问题。

如可以通过使用explain select * from ad_user where is_active=’Y’ order by value(即在常规的查询语句前面加上一个explain关键字),用来判断是否可以使用索引来提高查询的效率。

判断的方式是:假如这个查询语句中,有一个using filesort这个字段,那么就非常的抱歉,不能通过使用索引来提高这个语句的查询效率。反之,没有这个字段,则说明可以通过索引来提高查询效率。

3、分页优化

分页程序原理很简单,这里就不多说了。

对亿级别的数据聚合的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于和亿有关的数据、对亿级别的数据聚合的信息别忘了在金讯POS机网站上进行查找喔。

 

总结:以上就是小编对"对亿级别的数据聚合(亿级别的数据量数据库)"的详细解答,有需要办理POS机的小伙伴可以直接在本网站填写表单或者添加客服微信(YBBSTY)进行免费领取,本网站支持办理新款的拉卡拉4G电签版POS机、拉卡拉4G大POS机、拉卡拉智能POS机等,如果大家在使用POS机的过程中遇到了任何问题,可以联系客服微信或者拨打4006689516售后电话解决问题!

原创文章,作者:mrqq,如若转载,请注明出处:http://www.lakalal.com/5058.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注