列族数据库简介
1. 说出至少 3 项 Google BigTable 的核心特性
- 开发者可以动态的控制列族中的各列
- 数据值是按照行标识符,列名及时间戳来定位的
- 数据建模者和开发者可以控制数据的存储位置
- 读取操作和写入操作都是原子操作
- 数据行是以某种顺序进行维护的
2. 列与列族的定义
列是列族数据库的基本存储单元。列有名称和值。如
LastName ---> Wilson
某些列族数据库除了名称和值外,还会给列赋予时间戳 time stamp
若干个列可以构成一个行,各行之间可以具备相同的列,也可以具备不同的列。
如果列的数量比较多,最好把相关的列分成组,这些由列构成的组就叫做列族(column family)
3. Google Big Table 为什么要使用时间戳?
时间戳可用来管理列值的各个版本,用户把新值插入 BigTable 数据库后,旧值并不会遭到覆盖。
数据库会给新值打上时间戳,而应用程序则通过时间戳判定列值的最新版本。
4. 列族数据库与键值对数据库之间的异同
1) 相同点
都是键值存储的
2) 区别
列中的值是根据标识符,列名以及时间戳来索引的,
键值对数据库则是根据键来进行索引
5. 列族数据库与关系数据库的对比
列族数据库与关系型数据库都采用某种独特标识符来确定数据行的身份
- 在列族数据库中叫做 row key 行关键字
- 在关系数据库中叫做 primary key 主键
列族是一种由小 map 所构成的大 map。
列族数据库并不支持类型固定的列,它只会把列值视为一串字节,而具体含义则有待应用程序来解读。
6. HBase 所使用的架构方式
HBase 使用由多种 Hadoop 节点所组成的架构,其中包括 namenode, datanode
以及一台维护配置信息的中心服务器 centralized server.
7. 同一行内的读取和写入行为都是原子操作
在读取一组列值的时候,要么能全部读到每一列的值,要么就连任何一列的值都读不到。原子操作
决不能返回只完成了一部分的结果。
8. 列族数据库的适用场合是什么?
适用在那种需要部署在大规模数据库的场合,在那种场合中所使用的数据库需要具备较高的写入性能,
并且要能再大量的服务器及多个数据中心上面运作。
选自《NoSQL 实践指南》