什么场景下用Hbase,场景用Hbase
Hbase适用于存储不太复杂但数据很大的数据。列如商城系统中:用户,商品,订单,店铺,卖家,这些数据关系复杂不适合用Hbase。这里面订单数据量很大,而且要频繁拿出来计算,可以考虑只将订单这项存入Hbase。其他方面:
1,数据量达到上亿以上时可以使用Hbase如果只有上千或上百万行,则用传统的RDBMS。
2,不依赖所有RDBMS的额外特性(列数据类型, 第二索引, 事物,高级查询语言等.)
3, 一个建立在RDBMS上应用,需要考虑在Hbase上重新构建。
4, 要想Hbase起到比RDBMS还好的性能和充分的利用,Hbase必须在5个节点以上
目前来说,我认为hbase版本还不稳定,使用起来还是会出现很多潜在的bug,你看看淘宝的使用经验就知道了,所以使用hbase的限制:1. 要有比较强大的IT团队,且有一定的nosq 库表的设计经验,否则你无法发挥hbase的性能优势2. hbase的 有效性还存在一定的问题(nosql CAP理论中的A),因为只要集群中的一个节点宕机了,这个节点上的数据暂时就不能访问了,需要等待一定的时间,进行同步处理,查询数据时,你会发现有部分缺失。当然,也有处理方法,淘宝就是找人专门盯着这些集群,以最快的速度恢复这些宕机的机器4. 查询简单,只能根据key,扫描一条记录,或全表扫描,或根据key范围性扫描,不支持复杂的sql处理,也不会具有关系型数据库的ACID特性.5. hbase基本上是采用hdfs作为存储,你使用hdfs,就得考虑它的 单几点问题,也就是HA问题,当然,目前版本好像提供了HA机制,但好不好用,还待验证总之,hbase目前还是存在很多问题的,想要用好它,你得自己考虑这些问题,且做增强,它还不算一个非常成熟的数据库,我猜想,后期版本会有大改
1.数据查询模式已经确定,且不易改变,就是说hbase使用在某种种特定的情况下,且不能变动。2.告诉插入,大量读取。因为分布式系统对大量数据的存取更具优势。3.尽量少的有数据修改。因为hbase中的数据修改知识在后面添加一行新数据,表示覆盖前一条,大量修改浪费大量空间。(hbase基于hdfs存储不支持修改)以淘宝网为例:淘宝网有一项最近浏览商品的功能,用传统的关系型数据库有以下困难:orderby'耗费性能大;大量数据处理,而且无法分布处理;需要实时看到足迹,无法满足要求,因为数据量太大。而且不能使用缓存技巧(即把一天或者一小时前的数据处理得到结果,写入缓存表,然后给客户,没有时效性)。hbase的优势:有时间戳,适合告诉时间查询;基于行健的查询异常快(行健可参考后面hbase的表结构),特别是最近的数据可能还在memstore里,没有io开销;分布式处理。