日期:2014-05-16  浏览次数:20396 次

cassandra api概览
Cassandra的thrift api在0.3后发生大幅改变,在往后的小版本,0.4,0.5和0.6的改变都是向后兼容的。这份文档主要解释与说明在0.5到0.6版本的变化。
Cassandra的客户端api都是基于thrift构建的。值得指出的,这些文档提到的默认值,并是被所有基于thrift api的各种语言所支持的。所有基于thrift的cassandra例子和模板都可以在ThriftExamples上找到。更多关于cassandra客户端可以看ClientOptions。
注意:在文档中会类比SQL/关系型数据库讲解cassandra客户端api。关系型数据库和cassandra的数据存储很少有相似之处。更多信息请看cassandra的数据模型。
名词解析
Keyspace:包含多重列集合,相当于关系型数据库中的database。
CF:CF是某个特定Key的数据集合,相当于关系数据库中的table,在storage-conf.xml中定义(需要重启服务器才生效),每个CF存放一个单独的文件。
SCF:一种特殊的column的数据集合。
Key:一个唯一的字符串,标识一行CF。行需要一个唯一的字符串来标识,列是通过名称来标识的。thrift的java客户端总是使用utf-8编码的,但是如果你使用的是非java的客户端,那么你可能需要首先手动转码成utf-8。(这主要说明了thrift不支持不同平台间的互操作性)。
Column:一个元组,它包含一个名称,值及时间戳,名字在行中是唯一的。

异常信息
NotFoundException:被请求的特定列不存在。
InvalidRequestExeption:无效的请求可能意味着Keyspace或CF不存在,导致无效请求的原因可能是必要参数丢失或者参数格式不对。
UnavailableException:不是所有的备份都需要被创建和读取的。
TimeOutException:数据节点的读取或者写入过程中没有在配置文件中规定的时间间隔内响应请求(默认是10s)。当节点的请求过大时,导致负载过高或者系统当机时但是失败检测器无法检测到(一般是时间超过30s)。
TApplicationException:内部服务器有错或者无效的thrift方法(可能是因为使用旧版本thrift客户端去访问新版本的cassandra服务器)。
AuthenticationException:无效的身份验证的请求(用户不存在或者凭据无效)
AuthorizationException:无效授权请求(用户没有权限访问keyspace)