海量数据查询的一些关键技术
- MPP架构,数据并行化处理
- 垂直切分,列式存储,列存储只需要将需要查询的数据列load到内存即可,且列式存储压缩比很高,例如bigtable/hbase等列族数据存储、dremel/impala的parquet数据格式。
- 水平切分,数据sharding,newsql或者传统数仓都是这么做的,一般是基于key range。除非有大量的hotspot的查询,否则不会用hash方式。
- code gen。把查询的SQL转化为一种bytecode,然后利用利用LLVM进行目标代码优化,同事可以利用SIMD加速等。pgsql,spark,impala 有这方面的工作。
- 单机内存管理优化,抛弃JVM垃圾回收机制,自己管理管理内存;cache friendly、cache oblivious。JVM系叫做off heap memory,例如hbase的bucket cache。如果cache置换较为频繁,内存压力较大时,建议使用堆外内存方式。spark生态圈是有专门的组件alluvia来管理堆外内存。
- 分级存储,memory+ssd+sas/sata分别作为不同的级别的存储介质,热点数据放在high performance tier。Hbase的bucket cache可以配合为ssd存储。
- query predicate push down,查询谓词下推,在一个查询计划执行过程中
- 将filter谓词选择尽量放在前面步骤执行,例如大表jion,提前进行where过滤,可以有效减少中间结果集的大小,降低网络传输带宽等;
- 将聚集运算提前汇总,例如mapreduce里面的combinator就是最简单的一种;
- 其实数据存储格式中最好也包含一些 索引信息,把谓词下推到存储引擎层实现。
- data locality。数据本地化,尽量减少网络传输。例如一个大表join一个小表,将小表广播/复制到大表sharding分片所在的所有节点,在这些节点以大表的sharding跟小表做join然后汇总。hive这种简单的mr处理就很难做到data locality,而mpp的olap数据库这方面要好很多。
- cost based query optimization。接着上述问题,如何判断一个表是小表还是大表呢?两个大表join时,需要进行分布式的hash join还是nested loop join?谓词可否在join前下推,索引是否有效?等等诸如此类的问题的衡量和判断以及策略选择,需要实现一个基于代价的查询计划优化器,查询计划优化器根据一个查询计划的生成树,判断每个策略的代价,选择最小代价的路径生产查询计划;而这个搜索的过程是个NP问题,需要用到启发式搜索的方法。GreenPlum的cbo查询计划优化器ORCA是做的不错的。分布式的cbo还需要支持分布式的表分析。实现的技术难度比较大。
- 索引技术,分布式存储依然可以依赖索引,例如hbase主键索引、二级索引等,Hfile的数据格式优化,主要就是单个hfile内部数据的索引粒度切分。当然分布式的索引会比单机索引技术复杂很多,例如dremel、imapla之类选择放弃索引而采用全表扫描,因为索引有时候也有反作用,太大的索引导致加载数据的时间过程,不如进行暴力扫描。
- bloom filter,主要用于在一个大数据空间判断一个key是否存在本地,有可能存在假阳性。
- data cube技术,以空间换时间,是dremel/impala的另外一个反面。dermal没索引,而data cube可以理解为按照任意一组子列组合做聚集索引,提前把任意一种group by的查询方式,提前统计好存下来。例如apache kylin正式采用这种技术,适合查询大小不经常变化的数据集,增量数据太多太频繁时,build cube的时间比较长影响查询效果。data cube其实是一种物化视图,物化视图跟索引本质上类似,以预计算的冗余数据加速查询的效率。
- 关系数据库与nosq的主要区别,就是nosq去掉了ACID和查询优化器。
海量数据查询的一些关键技术相关推荐
- 工业智联网: 基本概念、关键技术与核心应用
来源:王飞跃科学网博客 作者:王飞跃, 张军, 张俊, 王晓 摘要:本文首先阐述了工业网联技术的演化过程,重点讨论了工业智联网产生的技术和时代背景.然后探讨了工业智联网的基本概念.内涵与应用领域. 本 ...
- 大数据治理需要具备哪些能力和关键技术?
在企业数据建设过程中,大数据治理受到越来越多的重视.从企业数据资产管理和提升数据质量,到自服务和智能化的数据应用,大数据治理的内容在不断发展和完善,其落地实施的过程中会遇到各种各样的难题和挑战.本篇文 ...
- 大数据治理工程师_大数据治理关键技术解析(转自EAWorld)
在企业数据建设过程中,大数据治理受到越来越多的重视.从企业数据资产管理和提升数据质量,到自服务和智能化的数据应用,大数据治理的内容在不断地发展和完善,其落地实施的过程中会遇到各种各样的难题和挑战.本篇 ...
- 分布式服务下的关键技术(转)
系统架构演化历程-初始阶段架构 初始阶段的小型系统 应用程序.数据库.文件等所有的资源都在一台服务器上通俗称为LAMP(linux.apache.mysql.php). 特征: 应用程序.数据库.文件 ...
- 虚拟专题:知识图谱 | 医学知识图谱构建关键技术及研究进展
来源:<大数据> 医学知识图谱构建关键技术及研究进展 谭玲1, 鄂海红1, 匡泽民2, 宋美娜1, 刘毓1, 陈正宇1, 谢晓璇1, 李峻迪1, 范家伟1, 王晴川1, 康霄阳1 1 北京 ...
- 大数据治理关键技术解析
转载本文需注明出处:微信公众号EAWorld,违者必究. 在企业数据建设过程中,大数据治理受到越来越多的重视.从企业数据资产管理和提升数据质量,到自服务和智能化的数据应用,大数据治理的内容在不断地发展 ...
- 干货分享:大数据可视决策关键技术有哪些?分析篇
一.什么是数据可视化 俗语有曰:文不如表,表不如图.数据可视化就是借助于图形化手段,把最基本的数据进行处理.运算之后,通过可视化技术,深度挖掘.呈现背后深层次的指标.规律,并结合不同行业业务需求,清晰 ...
- 大数据关键技术、及计算模式介绍,以及大数据与云计算、物联网的关系
大数据指数据与大数据技术这二者的综合,而大数据技术,是指伴随着大数据的采集.传输.处理和应用的相关技术,通过一系列非传统的工具来对大量的结构化.半结构化和非结构化数据进行处理,从而获得分析和预测结果的 ...
- 德勤《全球AI发展白皮书》出炉!八大新趋势,三个关键技术一文扫尽【附下载】...
来源:智东西(zhidxcom) 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云+ ...
最新文章
- ubuntu下查看caj文件
- php的$_server例子,php全局变量$_SERVER的四个例子
- 自制 Word、Excel 批转 PDF 工具
- 【NLP保姆级教程】手把手带你RNN文本分类(附代码)
- Atom 和 Sublime Text 相比哪个好?
- C++软件调试与异常排查从入门到精通系列汇总
- PS照片排版1寸2寸等及照片规格
- CSPS2019Day2T1(Emiya家今天的饭)题解
- python习题20190130
- linux lzma命令,linux lzma安装
- 优化MySchool数据库设计(SQL Server)
- 建模知识2: ROC、AUC、K-S曲线
- 人脸定点:关键点检测方法汇总
- VCS编译仿真警告Warning
- 机器学习中的数学基础(一):高等数学
- matlab矩阵分块与把分块矩阵还原
- C++学习的一些经历
- 解决 / 小程序安卓机图片无法显示的问题+发布审核问题
- 笔记: 计算天区面积的方法
- 医院实验室lis系统开发带源码