最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结。
前几篇文章重点介绍MySQL索引相关的知识,从索引优点、索引结构演化过程,到SQL查询过程、执行计划,再到最后的索引优化,错过的朋友可以回顾下前几篇文章:
后面会开始介绍HBase索引相关的,和MySQL对比下,以加深对索引的理解,本篇先介绍下HBase,它的一些特性和整体架构,为后面介绍索引做准备,通过介绍,你会了解到:
- 为什么会出现HBase
- HBase的特性
- HBase的整体架构
部分内容摘录了几个博友的文章,最后会给出文章链接,感谢他们的精彩分析。
为什么会出现HBase
任何一个技术的出现都是有原因的,了解它为什么出现,以及它解决了什么问题,更有助于理解它的特性和设计思想。
MySQL瓶颈
MySQL是一个关系型数据库,有很高的数据一致性和持久性保证,当访问量特别高时,特别是写入操作,会有很大的O性能瓶颈。
虽然可以通过主从读写分离、分库分表的方式解决,但随着数据量不断增大、并发不断增高,MySQL应用开发越来越复杂,也越来越具有技术挑战性。
另外,分表分库的规则的设定都是需要经验的,虽然有Cobar、MyCat、Sharding-JDBC、TDDL、DBProxy中间件层来屏蔽开发者的复杂性,但是避免不了整个架构的复杂性。
分库分表的子库到一定阶段又面临扩展问题,需求的变更可能又需要一种新的sharding。
MySQL的扩展性差、大数据下IO压力大、表结构更改