HBase是Apache Hadoop项目下的一个子项目,它以GoogleBigTabale为原型,设计实现了高可靠性、高可扩展性、实现读写的列存储数据库,他的本质实际上是一张稀疏的大表,用来存储粗粒度的结构化数据,并且能够通过简单地增加节点来实现系统的线性扩展。
HBase运行在分布式文件系统HDFS之上,利用它可以在廉价PC Server上搭建。HBase集群中通常包含两种角色,HMaster和HRegion server,当表随着记录条数的增加而不断变大后,将会分成一个个Region。每个Region可以由(startey,endkey)来表示,它包含一个startkey道endkey的半闭区间,一个HRegionServer可以管理多个Region,并由HMaster来负责HRegionServer的调度及集群状态的监管。由于Region可分散并由不同的HRegionServer来管理,因此,理论上再大的表都可以通过集群来管理。从感觉上来看,这个HBase数据库和MySql数据库中的分表有类似的功能,只不过这里天生支持将一个大表分割成更小的表。
对于MySQL来说,提高其性能的方法更多是通过分表或者分库的方法,对于一个很大的表来说,根据一定的规则将一个更加大的表来进行划分,划分最常见的算法就是HASH,通过对于某一个表的访问达到一定的上限,这样可以采用分库的方法。
对于MySql中的并发访问,可以考虑使用多个服务器,Master和Slava之间的数据同步,如果Master中变化,生成Binary log,然后slave通过Binary log 推导出SQL语句来更改本地的数据信息
一种新的存储方案,非关系型数据库,NoSQL HBase 和Redis
HBase有更好的伸缩能力,更适合于海量数据的存储和处理,并且HBase能够支持多个Region Server同时写入,并发写入性能十分出色。但HBase本身支持的查询维度有限,难以支持复杂的条件查询,如group by order by join等。这些特点使它的应用场景收到限制,对于Redis来说,它拥有更好的读写吞吐能力,能够支撑更高的并发数,而相较与其他的key-value类型的数据库,Redis能够提供更为丰富的数据类型支持,能更灵活地满足业务需求。
在一个大型分布式网站中所需要使用的技术,比如分布式缓存(memcache)、持久化存储(比如数据库,关系型数据库和非关系型数据库 同时对于关系型数据库中的优化,并发访问过高的处理等)、分布式消息系统(ACTIVEMQ等系统通信机制)、搜索引擎(垂直化搜索引擎),
除了这些还有很多其他的技术支撑,比如实时计算,离线计算,分布式文件系统,日志收集系统,监控系统,数据仓库,CDN系统,负载均衡系统,消息推送系统,自动化运维系统,当然还有很重要的安全问题。
版权声明:本文为博主原创文章,未经博主允许不得转载。