如何在表中插入一个新行,其主键是复合的?

时间:2012-06-25 18:26:49

标签: clojure cassandra hector

我用cqsql创建了这个表--cql3 shell:

CREATE TABLE Stats (
 gsd          blob,
 period       int,
 tid          blob,
 sum          int,
 uniques      blob,
PRIMARY KEY(gid, period, tid)
);

我正在使用clj-hector包装器库。

我创建了集群和密钥空间对象:

(def clstr (h/cluster "Test Cluster" "localhost"))

(def ksp (h/keyspace clstr "mks"))

考虑到以前的结构,如何插入新行?如果您不熟悉clj-hector,Hector的代码肯定会起作用,我会将其变形为Clojure。

3 个答案:

答案 0 :(得分:1)

我相信,但尚未验证,您要插入两列:

行键是gsd

的值

一列有一个复合名称,其值为period,值为tid和literal" sum"列值为和

第二列有一个复合名称,其值为period,值为tid,以及文字" uniques"列值为唯一的

答案 1 :(得分:0)

gid,句点,tid表示为"正常"来自cql查询的列。

但你可能最好使用datastax / java-driver或其中一个clojure包装器,hector基于thrift,它只对cql3有部分支持所以我不确定这是否会工作

无耻插件:查看https://github.com/mpenet/aliahttps://github.com/mpenet/hayt

答案 2 :(得分:0)

您可以参考http://clojurecassandra.info/articles/kv.html这是一个(相当通用的)CQL操作指南,适用于使用Cassandra和Clojure的人。您可以使用简单的CQL语法,其余的由C *内部处理:

INSERT INTO users (gsd, period, tid, sum, uniques) VALUES (?, ?, ?, ?, ?);

对于blob,我强烈建议使用Prepared Statements,实际上:http://clojurecassandra.info/articles/kv.html#toc_4

如果您愿意,可以结帐Cassaforte:https://github.com/clojurewerkz/cassaforte 启动并运行它非常容易。