列族数据库从本质上来说是一种键值存储,所以其支持的数据操作类型比较少,像连接这种关系数据库的复杂查询并不被列族数据库支持。同时,大部分的列族数据库也不支持事务,目前Cassandra支持轻量级事务,但这种事务也仅支持少量的几种操作。因此,对事务有需求的应用不应该选择列族数据库。
目前列族数据库支持的基本数据操作主要有get、put、scan及delete。各个数据库对数据操作的实现及描述各不相同,这里以HBase为例来介绍这几种操作。
1)get操作用于获取单行数据。用户可以使用行键值来获取单行的全部数据,也可以使用不同函数缩小获取的数据范围。例如获取指定列族的所有列数据;或者获取指定列的数据;也可以获取指定时间戳范围的数据,对于获取指定时间戳的数据,也可以限制每列返回的版本数;还可以使用自定义的过滤器来过滤数据。
2)put操作用于数据的插入和更新。put需要指定行键,如果行键不存在,则新增一条数据,如果行键已经存在,则对数据进行更新。
3)scan操作用于扫描给定条件下的多行数据。用户可以指定起止行,返回行间的所有数据。和get操作相同,scan操作也可以使用多种函数来限制返回的数据范围。
4)delete操作用于删除数据。delete操作同样需要指定行键,可以删除整行数据,也可以删除指定列族或者指定版本的数据。HBase在执行delete操作时并不会立即删除数据,而是对需要删除的数据加上“墓碑”标志,这些被删除的数据在之后的数据合并过程中才会被清理。