2012-01-21 20 views
0

我正在寻找Cassandra的PHP客户端,它支持CompositeType以及ColumnFamilies/Keyspace(模式)的创建和修改。还没有发现任何支持CompositeType。哪个Cassandra PHP客户端支持CompositeTypes和Comparators?

请帮忙。解决此问题的任何解决方法?

谢谢。

更新:

至于建议的泰米尔我使用下面的语句来创建柱族在卡桑德拉-CLI

CREATE COLUMN FAMILY User 
with comparator = 'CompositeType(UTF8Type,UTF8Type,UTF8Type)' 
and key_validation_class = 'UTF8Type' 
and default_validation_class = 'UTF8Type';  

现在使用pycassa我正在使用下面的更新语句来插入行。

UPDATE User set 
'meta:fullname:none' = 'Praveen Baratam' 
where 
KEY = 'praveen'; 

UPDATE User set 
'meta:using:none' = 'cassandra' 
where 
KEY = 'praveen'; 

UPDATE User set 
'meta:location:none' = 'India' 
where 
KEY = 'praveen'; 

随后我正在做一个范围切片查询使用以下语句。

SELECT 'meta'..'zeta' from User where KEY = 'praveen'; 

SELECT 'meta:a'..'meta:z' from User where KEY = 'praveen'; 

非常感谢泰米尔人的这种解决方法,直到CQL支持Cassandra 1.1中的CompositeType为止。

回答

1

@Praveen,您可以使用phpcassa & cql来解决复合类型问题。尽管phpcassa或cql不支持复合类型,但它适用于我。

例:

$servers = array('127.0.0.1:9160'); 
$pool = new ConnectionPool("Stats",$servers); 
$raw = $pool->get(); 
$rows = $raw->client->execute_cql_query("SELECT 'a:b' from TestColumnFamily WHERE KEY='xxx:1'", cassandra_Compression::NONE); 

但是你必须消毒返回的内容,因为这可能会比特产。

退房this如果使用phpcassa CQL

以上回答有问题的是过时的PHPCassa 1.0.a.1有一个全力支持复合看看这个blog post

+0

您好泰米尔语,非常感谢了小费。如果您可以使用compositeType为CRUD操作指定示例,那将是非常好的。我完全失去了如何使用CompositeInfo将CF1插入/更新到CF中。我目前正在研究pdo_cassandra作为客户端库。我的CF模式是 - 创建具有比较器='CompositeType(UTF8Type,UTF8Type,UTF8Type)' 和key_validation_class ='UTF8Type' 和default_validation_class ='UTF8Type'的列系列用户 ; – Praveen

+0

$ raw-> client-> execute_cql_query(“UPDATE TestColumnFamily set'a:b'='a:b'+ 1,'c:d'='c:d'+ 1 where key ='test'”,cassandra_Compression ::没有);这是我如何使用复合类型更新计数器作为比较器。希望对普通列族有相同的作用 – Tamil

+0

如何使用compositeColumns做范围切片?你能给个例子吗?我正在尝试使用原始的Thrift PHP API。经过这一切,基本的API看起来更容易!除非您检查范围切片是否按预期工作,否则实际上不能确定您使用的是连接字符串或CompositeColumns,我猜。你使用CQLSH验证了吗? – Praveen