YupDB万亿秒查之六脉神剑(上)
YupDB是面向海量数据背景下的多维度、高融合、企业级实时检索数据库。其具备万亿数据量下实时、多维、秒级检索及分析能力,同时还具备数据安全性及完整性高的特点。
YupDB是如何做到万亿数据秒级查询的呢?下面就来了解一下。
1、利用索引技术
- - - YupDB是面向海量数据背景下的企业级实时检索数据库。能够对大量数据进行存储,并且能够提供高效的查询效率。其底层依赖于大数据生态系统内的部分组件,例如HDFS、YARN、ZooKeeper、kafka、Spark等。除此之外YupDB还使用了Lucene技术对数据进行创建索引,利用索引技术进行快速数据定位,数据过滤。YupDB在Lucene技术之上有针对性的进行了调整,使其能够支持实时数据的索引创建,批量数据的索引创建,满足了更多的使用场景。
2、 利用更多的磁盘来响应查询。
- - - 由上面的架构图可以看出,YupDB底层依赖于HDFS做海量数据的存储。HDFS分布式文件系统,底层对硬件的依赖需要多台服务器,每台服务器下挂在多块数据硬盘。当有大量数据落到YupDB表内时,数据最终会存储到HDFS文件系统,HDFS会对数据进行切分,将一个大数据分成多个小数据,最终存储到服务器的各个磁盘上。数据存好以后,当有用户需要查询数据时,查询请求最终作用在多个磁盘上,多个磁盘同时进行数据读取。
注:硬件(磁盘)的推荐。
对于大数据集群的硬盘有以下策略的推荐,即单台服务器容量固定的情况下,尽量多的配磁盘的数量。例如一个服务器的容量为24T,第一种配置方式为6块4T的硬盘,第二种为12块2T的硬盘,我们悠闲呢选择第二种。
由于YupDB对磁盘IO是强依赖的,所以尽量多的配置磁盘的数量。
3、利用异构实现数据的灵活存储
- - - 异构(固态硬盘+机械硬盘)存储是HDFS原生支持的功能。YupDB在此技术的基础之上研发了灵活的数据机制。可以让用户根据自己的实际情况动态调整存储策略。
A:索引、数据分离
- - - 根据实际的业务场景,将所有数据的索引文件,全部存储到SSD硬盘上,将数据文件全部存储到机械硬盘上。
数据量很大的情况下,数据的索引文件也会很大,如果索引存储在机械硬盘上,那么在通过索引查询数据时读数据就会比较慢(机械硬盘的IOPS较低),若放在SSD硬盘上,则利用固态硬盘的高IOPS做到快速读取数据,从而更快的定位数据。
B:数据副本分离
- - - YupDB依赖HDFS,数据会存储到HDFS之上。YupDB可以将一份数据副本存储到SSD上,其余的数据副本存储到机械硬盘上。YupDB的查询引擎在查询时优先在SSD硬盘上查询。同样利用固态硬盘的高IOPS做到快速读写数据。
C:表维度冷热数据分离
- - - 对于在表的维度上有着明确的冷热数据的情况下。YupDB可以将热表的数据全部存储到SSD上,冷表的数据存储到机械硬盘上。
例如,10张表中,有3张表为热表,业务对这三张表的访问很多并且要求高效返回,剩余的7张表访问量不大。此时YupDB可将这3张热表的数据全部放到SSD上,剩余7张表的数据存到机械硬盘上。利用固态硬盘的高IOPS做到热数据的快速读写数据。
D:时间维度冷热数据分离
- - - 对于在时间维度上有着明确的冷热数据的情况下,YupDB可以做到让热数据存储到SSD上,冷数据存储到机械硬盘上。
例如某业务7天内的数据访问量很高,7-15天的数据访问量其次,15天以前的数据访问量较低。此时YupDB可将近7天内的数据和索引全部存储到SSD上,7-15天的部分索引存储到SSD,剩余部分索引和数据文件存储到机械硬盘上,15天以前的数据倒排表存储到SSD上,剩余的索引和数据全部存储到机械硬盘上。利用固态硬盘的高IOPS做到热数据的快速读写数据。
以上四种存放机制可以根据实际的业务需求自由组合。
注:YupDB依赖的集群在没有SSD异构的情况下YupDB依然可以使用。若有SSD效率会更快。