一、传统DB与大数据DB
随着互联网落地场景越来越盛行,各工具五花八门,数据也会越来越大,传统的数据库已经很难支撑大数据。传统数据库如sqlserver、oracle、mysql、plsql。
传统数据库处理结构化数据,遵循固定的格式,如关系型数据,尤其擅长处理事务型数据。而大数据db可存储结构化、非结构化数据,能够处理各种各样的数据,包括图片、文本、视频。
在扩展性方面,虽然传统DB能保存大量数据,但到了PB级别甚至TB级别时,传统db性能会急剧下降,而且费用变得昂贵,各方面变得复杂。大数据DB理论上无限扩展,有足够的存储资源就能把数据存储起来,无需过多的内存及CPU。
在一致性方面,传统DB遵循ACID原则,数据一致性强。通过CAP理论,大数据DB保证最终一致性,即牺牲了一致性来保证网络分区容忍性+可用性。
最终在支持结构化查询语言sql方面,传统DB因是这方面的创造者固然支持良好,大数据DB也在往这方面发展,整体成熟性还待时间发展,部分工具已经成熟了。
二、主流大数据存储工具
网上很多主流工具的介绍,这里做简单介绍。
1、HDFS
HDFS作为早期第一批存储工具,为大数据做出了很大贡献。HDFS作为hadoop最基本的存储工具,能处理大PB级别,能通过副本机制、分区特性提升可用性,能降低存储成本。
正如其能够存储大批量数据,所以做不到低延迟的查询,复杂的查询需要各种job来做处理。注意使用HDFS时,减少小文件的使用,大量小文件会导致元数据效率低下。
2、Cassandra
Cassandra支持CQL,与SQL有些区别,不支持SQL的复杂查询,可存储结构化或半结构化数据,很容易能实现DB扩展。
3、HBase
HBase ali使用的较多,一般用在QPS并发高的场景。但其不支持sql,查询有限制,所以在需求阶段就定好哪些能实现及不能实现。比如命中rowkey、二级索引。
4、Elasticsearch
es也是使用较多的查询引擎,多用于数据量大的实时分页查询,或日志查询。但es会消耗较多的资源、查询语句支持较差。现在越来越多业内解决方案使用doris来代替es,更多考虑的是成本及doris支持跨表查询,但es的全文检索doris无法代替。
5、Apache Doris
Doris最初由百度开发,后贡献给apache基金会。其主要优点在于非常适用OLAP场景,无缝切合mysql,使用mysql驱动进行jdbc连接。缺点在于大规模部署有有待验证,高并发场景因MPP架构小概率会出现简单sql语句查询变慢的情况。
6、ClickHouse
Clickhouse在单表大数据量查询上没有DB能与之匹配,它在设计之初针对单表查询,在join联表查询上表现一般般。Clickhouse比较消耗cpu,join查询比较消耗内存,高并发场景不建议使用clickhouse,并发不高低延迟场景建议使用clickhouse。毕竟,doirs也在模仿clickhouse的技术。
三、工具选择的因素
HDFS:适合存储大量经常不变的数据。
Cassandra:适合扩多个数据中心复制、宽列存储、高可用场景。
HBase:适合随机读写场景。
Elasticsearch:全文检索。
Apache Doris:OLAP、高并发、多表查询。
Clickhouse:OLAP、低延迟、单表查询。
四、常见问题
1、HDFS 元数据过载问题
Hive中元数据DB一般使用mysql存储,解决问题一般是使用分区、读写分离、索引查询优化等。
2、Cassandra的热点问题
设置分区建,均衡数据分布。
3、HBase的Region热点问题
使用Rowkey随机值
4、Elasticsearch的版本升级问题
es升级很坑,很多时候不兼容以前的版本。无解,一步一个脚印
5、Elasticsearch查询性能低下
使用keywork精确匹配
6、Apache Doris在大数据量复杂查询时,性能不好
使用物化视图、增加BE节点或数量。根据MPP架构,一般情况下BE节点越多,性能会越好(BE节点到达某个数性能提高有限)。
可以关注本人的公众号,多年经验的原创文章共享给大家。