随着各种应用中数据量的快速增长,用户查询和分析任务的复杂度不断增加,数据维度也在增长,快速高效地返回用户查询结果越来越成为大数据系统中的一个重要挑战。在传统的结构化数据处理中,人们利用关系型数据库系统里数据结构化的特点,发展总结出了一套成熟的数据索引、查询优化及查询执行的技术,基本上能够达到有效的优化查询计划、缩短查询响应时间等系统要求。但是在大数据的背景下很难直接利用这套技术,一是大量数据一般都需要一个分布式集群进行分布式存储,查询和分析基本要通过分布并行的计算来进行,这使得传统的单机查询优化技术很难在集群上直接应用;二是大数据环境下的数据往往是非结构化的或者是异构的,那些针对传统的结构化数据所设计的数据索引和查询执行技术已不能有效地发挥作用;三是用户查询和分析需求不能用简单的语义逻辑来表达,这样就使得系统经常需要处理Ad-hoc查询或者复杂的嵌套式查询,传统的查询优化方案很难有效处理这类查询;四是大数据环境下查询经常是实时的交互任务,提出查询请求的用户往往是在线用户,需要及时获得初步查询的结果来更新自己的查询,而传统的数据库优化查询技术无法应对此类需要。
基于以上观察,目前学术界和工业界的一个研发重点就是在大数据系统中实现支持交互式的数据查询。这里的交互性体现在处理用户查询过程中系统及时不断地提供反馈,使得用户能够快速做出反应和根据反馈结果更改或优化下一步的查询条件,来找到最相关和最有意义的结果。实时性是指系统能够快速响应用户的各类不同查询输入,在尽可能短的时间内提供查询结果。
交互式实时查询系统在很多领域都有着广泛的应用,例如,用户上网购买商品,常常会根据某些属性的组合来检索合适的商品,如果系统反馈的时间过长,用户很可能失去耐心,不再购买。这类查询在电子商务、电信和金融等诸多领域都有着非常广泛的应用。(www.daowen.com)
实现交互式实时查询系统大体上有两种思路。一种思路是在分布式环境下通过增加硬件资源(CPU、内存等)来减少数据查询的时间。在这种思路的指导下,Google开发出了Dremel系统,主要用于Web数据的分析与查询。受到Dremel的启发,很多企业开始研发类似的产品,目前比较具有代表性的就是Cloudera公司的Impala系统。在Dremel之外,Apache社区开发了Apache Drill系统,该系统与Dremel的应用场景略有不同,但是都能在极短的时间内对海量的数据进行查询和分析。另一种思路则在数据精度和查询时间的延迟上进行了权衡,以牺牲一定的数据精度来换取查询时间上的大幅度减少。这类系统的典型代表有美国加州大学伯克利分校的AMP实验室开发的BlinkDB等,以及数据库领域经典的在线聚合技术。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。