成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Cassandra查詢語句CQL的小技巧

數據庫
今天我們要討論的是NoSQL數據庫中的Cassandra查詢語句CQL小技巧,希望對大家有所幫助。

和SQL(結構化查詢語言)類似,Cassandra也即將在未來的發行版本中提供Cassandra查詢語句(CQL)。

比如使用Keyspace名稱為WebSiteKS,使用CQL表示為:

  1. USE WebSiteKS; 

查詢Column Family為Standard1,Key為k的值:

  1. SELECT FROM Standard1 WHERE KEY = "k"

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

  1. 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語句實現邏輯:

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

這里將Keyspace進行了切換,和直接調用Thrift API的setKeyspace效果一致。

SELECT語句實現邏輯:

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

這與調用Thrift API的mutiSlice或multiRangeSlice效果一致:

UPDATE語句實現邏輯:

  1. case UPDATE:   
  2.     UpdateStatement update = (UpdateStatement)statement.statement;   
  3.     validateColumnFamily(keyspace, update.getColumnFamily());   
  4.     avroResult.type = CqlResultType.VOID;   
  5.     List<RowMutation> rowMutations = new ArrayList<RowMutation>();   
  6.     for (Row row : update.getRows())   
  7.     {   
  8.         validateKey(row.getKey().getByteBuffer());   
  9.         RowMutation rm = new RowMutation(keyspace, row.getKey().getByteBuffer());   
  10.         for (org.apache.cassandra.cql.Column col : row.getColumns())   
  11.         {   
  12.             rm.add(new QueryPath(update.getColumnFamily(), null, col.getName().getByteBuffer()),   
  13.                    col.getValue().getByteBuffer(),   
  14.                    System.currentTimeMillis());   
  15.         }   
  16.         rowMutations.add(rm);   
  17.     }   
  18.     try   
  19.     {   
  20.         StorageProxy.mutate(rowMutations, update.getConsistencyLevel());   
  21.     }   
  22.     catch (org.apache.cassandra.thrift.UnavailableException e)   
  23.     {   
  24.         throw new UnavailableException();   
  25.     }   
  26.     catch (TimeoutException e)   
  27.     {   
  28.         throw new TimedOutException();   
  29.     } 

這與調用Thrift API的batch_mutate效果一致:

雖然現在CQL功能還很弱,但是又向前邁向了一大步。

更多關于Cassandra的文章:http://www.cnblogs.com/gpcuster/tag/Cassandra/

原文鏈接:http://www.cnblogs.com/gpcuster/archive/2010/11/01/1866668.html

【編輯推薦】

  1. MongoDB CEO談NoSQL的大數據量處理能力
  2. 拋棄關系數據庫 PHP程序員應了解MongoDB的五件事
  3. MongoDB,無模式文檔型數據庫簡介
  4. 關系數據庫的末日是否已經來臨
  5. 扔掉沉沒成本 嘗試關系數據庫替代品OODBMS
責任編輯:彭凡 來源: 博客園
相關推薦

2023-09-25 13:15:50

SQL數據庫

2010-06-01 16:43:07

Cassandra內部

2022-07-04 08:51:43

條件語句JavaScript

2021-02-03 10:46:31

SQL數據庫技巧

2018-12-26 09:25:30

SQL ServerSQL語句數據庫

2011-03-01 16:30:55

Oracle

2011-03-11 16:25:53

Oracle數據庫

2021-11-29 11:11:45

SQL查詢技巧

2022-11-16 09:04:36

SQL查詢SELECT

2024-01-30 08:43:26

IF 語句JavaScripJS

2010-10-27 16:14:24

Oracle參數查詢命

2024-04-12 08:28:38

優化查詢語句PostgreSQL索引

2023-10-09 18:13:14

MySQL數據庫查詢

2021-07-16 10:31:29

MySQLDump技巧

2009-10-09 14:45:00

ccna小技巧ccna

2022-11-03 07:30:41

CQLJPQLHQL

2018-11-28 12:30:58

Python命令行編程語言

2021-12-16 10:53:23

shell命令腳本

2015-02-04 10:32:57

Objective-CSwift

2014-05-22 14:15:45

Android系統定制小技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超级碰在线 | 伊人91在线 | av电影手机在线看 | 免费一区二区三区 | 精品视频网 | 夜夜骚视频 | 久久久久99 | 亚洲人成在线播放 | 国产成人网| 天天爽夜夜操 | hdfreexxxx中国妞 | 男女羞羞视频在线 | 欧美日韩一区二区电影 | 亚洲高清av| 91精品国产91久久久久久 | 亚洲精品9999久久久久 | 久久久久久国产精品免费免费狐狸 | 91精品国产91久久久久久最新 | 国产精品久久久久久久久 | 欧美一区二区三区在线观看 | 欧美h| 国产在线精品一区二区三区 | 国产精品综合色区在线观看 | 日韩av在线一区 | 毛片av免费在线观看 | 日韩欧美网| 欧美精品一二三 | 婷婷综合激情 | 免费观看成人鲁鲁鲁鲁鲁视频 | 国产区在线观看 | 国产精品18hdxxxⅹ在线 | 精品亚洲一区二区三区四区五区高 | 久久在看| 超碰在线97国产 | 午夜99 | 亚洲精品黄色 | www.久久精品视频 | 免费久久久久久 | 免费黄色大片 | 国产欧美一区二区精品忘忧草 | 久久日本 |