上面说了Column family,那么我之前说的Row key是啥东东,其实你可以理解row key为RDBMS中的某一个行的主键,但是因为Hbase不支持条件查询以及Order by等查询,因此Row key的设计就要根据你系统的查询 需求来设计了额。我还拿刚才那个Feed的 列子来说,我们一般是查询某个人最新的一些Feed, 因此我们Feed的Row key可以有以下三个部分构成<userId><timestamp><feedId>, 这样以来当我们要查询某个人的最进的Feed就 可以指定Start Rowkey为<userId><0><0>,End Rowkey为<userId><Long.MAX_VALUE><Long.MAX_VALUE>来 查询了,同时因为Hbase中 的记录是按照rowkey来 排序的,这样就使得查询变得非常快。
三 Hbase的优缺点
1 列的可以动态增 加,并且列为空就不存储数据,节 省存储空间.
2 Hbase自动切 分数据,使得数据存储自动具有水平scalability.
3 Hbase可以提 供高并发读写操作的支持
Hbase的缺点:
1 不能支持条件查 询,只支持按照Row key来 查询.
2 暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.
关于数据库伸缩性的一点资料:
http://www.jurriaanpersyn.com/archives/2009/02/12/database-sharding-at-netlog-with-mysql-and-php/
http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/