注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

讲给自己听的故事

~~~写给未来的片言只语~~~

 
 
 

日志

 
 

phpCassa按条件查询数据的方法  

2011-08-25 20:43:33|  分类: 笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
phpCassa按条件查询数据的方法 - kiko - 讲给自己听的故事
 
一、对一个条件进行查询,则需要对查询的column做二次索引

<?php
//*** First, create a CF under keyspace which named 'trade';
//create column family users with comparator = UTF8Type and
//       column_metadata = [{column_name: name, validation_class:UTF8Type},
//                          {column_name: email,validation_class:UTF8Type},
//                          {column_name: age, validation_class: LongType,index_type: KEYS}];

//*** Second, you should insert some data under cassandra-cli
//*** Third, run me softly

  require_once('phpcassa/connection.php');  //此处是接口引用
  require_once('phpcassa/columnfamily.php');
try {
/* 
//多节点
    $servers[0] = array('host' => '192.168.1.100', 'port' => 9160);
    $servers[1] = array('host' => '192.168.1.134', 'port' => 9160);
    $servers[2] = array('host' => '192.168.1.144', 'port' => 9160);
    $server_array=array($servers[0],$servers[1],$servers[2]);
//单节点
    $pool = new ConnectionPool('myspace', $servers_array);
*/
    $pool = new ConnectionPool('trade', array('192.168.1.100')); //单节点
    $column_family = new ColumnFamily($pool, 'users');

    $index_exp = CassandraUtil::create_index_expression('age', 30);
    $index_clause = CassandraUtil::create_index_clause(array($index_exp));
    $rows = $column_family->get_indexed_slices($index_clause);


    foreach($rows as $key => $columns) {
      Print_r($columns);
           }

} catch (Exception $e) {
    echo 'Exception: ' . $e->getMessage().'<br>';
      }
?>

结果:
Array ( [age] => 30 [name] => duan ) Array ( [age] => 30 [name] => kiko )


二、如果要做多条件查询,查询条件中所用到的column必须先做二次索引。(参看)

update column family users with comparator=UTF8Type and column_metadata=[{column_name: full_name, validation_class: UTF8Type}, {column_name: birth_date, validation_class: LongType, index_type: KEYS}, {column_name: state, validation_class: UTF8Type, index_type: KEYS}];

<?php
  require_once('phpcassa/connection.php');  
  require_once('phpcassa/columnfamily.php');
try {
    $pool = new ConnectionPool('myspace', array('127.0.0.1'));
    $column_family = new ColumnFamily($pool, 'users');

/*
static cassandra_IndexExpression create_index_expression (mixed $column_name, mixed $value, [classandra_IndexOperator $op = cassandra_IndexOperator::EQ])
0 => 'EQ', 1 => 'GTE', 2 => 'GT', 3 => 'LTE', 4 => 'LT'
*/

    $index_exp1 = CassandraUtil::create_index_expression('age', '32', 1);
    $index_exp2 = CassandraUtil::create_index_expression('state', 'GD');
    $index_clause = CassandraUtil::create_index_clause(array($index_exp1,$index_exp2));
    $rows = $column_family->get_indexed_slices($index_clause);

    foreach($rows as $key => $columns) { // Do stuff with $key and $columns
        Print_r($columns);
    }

} catch (Exception $e) {
    echo 'Exception: ' . $e->getMessage().'<br>';
      } 
?>
  评论这张
 
阅读(429)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018