1. 列族数据库的基本组件
键空间,行键,列,列族
2. 什么是键空间 keyspace?
键空间 keyspace 是列族数据库的顶级数据结构,它在逻辑上能够容纳列族,行键以及与之相关的其他数据结构。
一般来说,每个数据库应用都会有自己的一套键空间。
键空间有些类似于关系型数据库的 schema
3. 什么是 row key ?
行键用来分辨列族数据库中各个数据行的身份,其用途与关系数据库的主键有些相似。
要想准确的定位某个数值,除了 row key,还需要用到列族的名称,列的名称,以及时间戳等版本排序机制。
row key 还可用来对数据进行分区和排序
HBase 中各个数据行是按照行键的字典顺序来保存的。
4. 什么是列?
列是数据库用来存放单个数值的数据结构。
HBase 只是把列值简单的表示成字节串,由于不需要验证数据类型,可以尽量降低数据库的开销。
5. 什么是列族?
列族是相关的列所构成的集合。
经常需要同时使用的列应该放在同一个列族之中,如客户的地址信息,诸如街道,城市,州,邮编
应该合在一起放在同一个列族里面。
列族数据库的各个数据行之间可以有所变化,而不需要像关系型数据库那样必须把每列都填满。
6. 列族数据库的列与关系数据库的列有何区别?
关系型数据库表格中的列没有列族数据库的列那样灵活。
1) 向关系数据库中添加新列必须修改 schema definition 纲要定义,而向列族数据库中添加新列则只需要在客户端程序里给出列名即可。
2) 列族数据库的各个数据行之间可以有所变化,而不需要向关系数据库那样必须把每列填满
3)关系型表格中所存放的数据不一定非要按照某种预先定义好的顺序来维护
7. 什么样的列应该归入同一个列族里面?
经常需要一起使用的那些列应该放到同一个列族里面,如客户的地址信息,街道、城市、州等就应该合在一起放在同一个列族里面
8. 分区在列族数据库中的用途是什么?
分区是数据库的一种逻辑子集。数据库通常会根据数据的某个属性来把一组数据存放在某个分区中。
列族数据库集群中的每个节点或服务器可以维护一个或者多个分区。
很多台服务器上面可能都分别存放着同一个分区的多份拷贝,这样能够提升读取和写入操作的成功率,即便在服务器出现故障时,
这些操作也依然可能成功。