一种海量结构化数据检索方法

(整期优先)网络出版时间:2020-12-14
/ 2


一种海量结构化数据检索方法

韦香良、石志中

北京锐安科技有限公司 邮编: 100000

摘要:随着互联网不断的发展壮大以及大数据时代的来临,海量数据严峻的考验人们对数据的存储和处理能力;在大数据环境下,传统关系型数据库已经慢慢无法解决快速增长的数据,迫切的需要寻找一种有效的数据存储和检索方案,来解决与日俱增的数据需求。本文提出如何使用分布式的系统来替代传统的关系型数据库,解决传统关系型数据库在面临海量数据时,存储数据有限,检索性能差,且存在单机节点故障等问题。从而实现海量数据的高效检索方法,并导论了其中的近实时的检索和查询关键技术,实测结果表明,在千万级、亿级的数据量下,该方法可获得极高的检索性能,并能够很方便地集成到现有的业务系统,完全可以满足海量结构化数据的存储和检索需求。

关键词:海量数据,关系型数据库,分布式存储系统,Elasticsearch


  1. 传统关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

  1. 传统关系型数据库面临的挑战

随着时代的发展,互联网进入到了人们的日常生活,工作、学习、生活都离不开互联网;网络已经成为了一种新的生活方式,据调查显示,有超过70%接受调查的人说网络已经成为生活的必须,有10%的人每周上网超过20个小时。随着社会计算的兴起,人们习惯于在网上分享和交流信息。比如,社交网站Facebook拥有庞大的用户群,而且在不断增长。这些用户每天发出的日志以及分享的资料更是不计其数,其数据量已经达到PB级别,传统的解决方案已经不能很好地处理这些数据。


  1. 分布式数据库的兴起

随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。分布式数据库是数据库技术与网络技术相结合的产物,在数据库领域已形成一个分支。20世纪90年代以来,分布式数据库系统进入商品化应用阶段,传统的关系数据库产品均发展成以计算机网络及多任务操作系统为核心的分布式数据库产品,同时分布式数据库逐步向客户机/服务器模式发展。


  1. 什么是Elasticsearch分布式数据库


Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库,无论是开源还是私有,但它也仅仅只是一个库。为了充分发挥其功能,我们还需要使用Java并将 Lucene 直接集成到应用程序中。 由于Lucene 非常复杂,使用起来非常不方便,于是Elasticsearch便应运而生。它使用 Java 编写,内部采用 Lucene 做索引与搜索,但是它的目标是使全文检索变得更简单,简单来说,就是对Lucene 做了一层封装,它提供了一套简单一致的 RESTful API 来帮助我们实现存储和检索。当然,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确地形容:

  1. 一个分布式的实时文档存储,每个字段可以被索引与搜索;

  2. 一个分布式实时分析搜索引擎;

  3. 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。

由于Elasticsearch的功能强大和使用简单,维基百科、卫报、Stack Overflow、GitHub等都纷纷采用它来做搜索。现在,Elasticsearch已成为全文搜索领域的主流软件之一。


  1. Elasticsearch分布式数据库如何解决关系型数据库面临的挑战


对于分布式数据库里把ElasticSearch也作为一种分布式数据库是有原因的,如果需要快速查询,但列很多,HBase的SQL支持不太好,使用不方便。而ES对于前端工程师开发非常简单,不需要对分布式数据库内核了解很深就可以很快使用起来,而只需要了解RestfulAPI就可以了,并且也很方便。ES底层都是分布式的Lucene,如Github使用Elasticsearch搜索20TB的数据,包括13亿的文件。ES的模型比较清晰比较简单,就两个步骤,一个步骤是怎么把数据建索引,建完索引主要是做查询,怎么把SQL的语句做查询。

5fd6d9977f4fa_html_74793537e0cad422.jpg

ES最重要的是建索引,每个的记录都会根据需求建索引,这么做有好有坏,如果突然来了100亿条记录,建索引的时间会很长,对于业务索引是不能忍受的。所以如果支持离线建立索引,后面实时增量建索引这样会更好,ES时下已发展的比较成熟,现在能对接的接口都能支持,所以是非常方便的。 在上亿条数据的索引库中,精确查询数据能在毫秒级别内返回,性能远远优于Mysql关系型数据库。

  1. 总结

大数据时代背景下,业务系统的数据急速增长,传统的关系型数据库在存储和检索方面存在诸多不足,本文研究的基于Elasticsearch分布式搜索引擎的海量数据存储与检索,利用Elasticsearch对索引的易扩展、易管理、易维护等特点来解决海量数据的高效检索问题。实验证明,基于这种Elasticsearch的海量数据检索方法在检索效率和扩展性、容错性方面较于传统的关系型数据库有较大的优势,可以满足业务系统的高效检索需求,论文研究的方法不仅仅使用与海量的用户注册数据,同时也可以满足其他类型的结构化数据的存储与检索,使用该方法,可以从根本上解决传统数据库面临的问题。

  1. 参考文献

[1]Elasticsearch实战与原理解析,北京:电子工业出版社,2019

[2]深入理解Elasticsearch(原书第3版),北京:机械工业出版社,2019-12-01

[3]数据库、类型和关系模型,北京:机械工业出版社,2007-01-01

[4]分布式系统原理与范型,北京:清华大学出版社,2010-09-01

2