西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页西西教程数据库教程 → Cassandra Query Language-Cassandra查询语言介绍

Cassandra Query Language-Cassandra查询语言介绍

相关软件相关文章发表评论 来源:本站整理时间:2010/11/1 22:18:42字体大小:A-A+

作者:佚名点击:286次评论:0次标签: Cassandra CQL

  • 类型:文件处理大小:209KB语言:中文 评分:7.0
  • 标签:
立即下载
和SQL(结构化查询语言)类似,Cassandra也即将在未来的发行版本中提供Cassandra查询语句(CQL)。

比如使用Keyspace名称为WebSiteKS,使用CQL表示为:

USE WebSiteKS;

查询Column Family为Standard1,Key为k的值:

SELECT FROM Standard1 WHERE KEY = "k";

更新Column Family为Standard1,Key为k,Column为c的值:

UPDATE Standard1 WITH ROW("k", COL("c", "hello!"));

更多的有关CQL的语法详细信息可以参考官方的文档:https://svn.apache.org/repos/asf/cassandra/trunk/doc/cql/CQL.html

抛开CQL的语法,深入到Cassandra的内部实现,其也无非是解析CQL的操作类型,然后将其转化为内部的操作接口进行调用。

USE语句实现逻辑:

case USE:
clientState.setKeyspace((String)statement.statement);

这里将Keyspace进行了切换,和直接调用Thrift API的setKeyspace效果一致。

SELECT语句实现逻辑:

case SELECT:
SelectStatement select = (SelectStatement)statement.statement;
List<CqlRow> avroRows = new ArrayList<CqlRow>();
avroResult.type = CqlResultType.ROWS;
List<org.apache.cassandra.db.Row> rows = null;
if (!select.getKeyPredicates().isRange())
rows = multiSlice(keyspace, select);
else
rows = multiRangeSlice(keyspace, select);

这与调用Thrift API的mutiSlice或multiRangeSlice效果一致:

UPDATE语句实现逻辑:

case UPDATE:
UpdateStatement update = (UpdateStatement)statement.statement;
validateColumnFamily(keyspace, update.getColumnFamily());
avroResult.type = CqlResultType.VOID;
List<RowMutation> rowMutations = new ArrayList<RowMutation>();
for (Row row : update.getRows())
{
validateKey(row.getKey().getByteBuffer());
RowMutation rm = new RowMutation(keyspace, row.getKey().getByteBuffer());
for (org.apache.cassandra.cql.Column col : row.getColumns())
{
rm.add(new QueryPath(update.getColumnFamily(), null, col.getName().getByteBuffer()),
col.getValue().getByteBuffer(),
System.currentTimeMillis());
}
rowMutations.add(rm);
}
try
{
StorageProxy.mutate(rowMutations, update.getConsistencyLevel());
}
catch (org.apache.cassandra.thrift.UnavailableException e)
{
throw new UnavailableException();
}
catch (TimeoutException e)
{
throw new TimedOutException();
}

这与调用Thrift API的batch_mutate效果一致:

虽然现在CQL功能还很弱,但是又向前迈向了一大步。
    hosts修复软件
    (60)hosts修复软件
    文件是计算机中一个举足轻重的文件,该文件有一个比较大的特点就是没有扩展名。经常在一些电脑个性技巧以及其他领域方面会用到,西西提供文件修复工具软件下载大全。官方介绍是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的地址建立一个关联数据库,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从文件中寻找对应的地址,一旦找到系统会立即打开对应网页,如果没有找...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)