使用 Alia/Hayt 以编程方式为 Clojure 类型生成 Cassandra CQL
Programmatically generating Cassandra CQL for Clojure type using Alia/Hayt
我有一个空白的 Cassandra 2.1 数据存储,我正尝试使用 Alia 和 Hayt 从 Clojure 中的键空间向下以编程方式填充它。这被用作从客户端接收 JSON 数据的 Web 服务端点后面的数据存储。
我希望能够将传入数据解析为 Clojure 实例,稍微更改该数据(例如,将另一个键值对添加到映射中)并将数据插入到数据存储中这样我以后就可以将它作为 Clojure 实例检索。
除了我无法创建 Cassandra 乐于将我的 Nippy 编码数据放入其中的适当列外,一切都如我所料!
我是否遗漏了什么(我目前的代码)?
(def alia-cluster (cluster {:contact-points ["127.0.0.1"]}))
(def session (connect alia-cluster))
(execute session
(create-keyspace :ks
(if-not-exists)
(with {:replication {:class "SimpleStrategy"
:replication_factor 1}})))
(execute session
(use-keyspace :ks))
(execute session
(create-table :d
(if-not-exists)
(column-definitions [[:k :XXXXX]
[:primary-key :k]])))
(set-nippy-collection-encoder!)
(set-nippy-decoder!)
我已经尝试了 XXXX 中的几乎所有内容 - 但似乎没有任何效果!
如有任何建议,我们将不胜感激。
干杯!
我认为 :bytes 不是 CQL 中的有效类型,它应该是 :blob。那就是说 nippy 编解码器中存在错误(标记为实验性)。它现在已修复,如果你拉 2.5.2 这应该工作:
(use 'qbits.alia)
(use 'qbits.alia.codec.nippy)
(def c (cluster {:contact-points ["localhost"]}))
(def s (connect c))
(set-nippy-decoder!)
(set-nippy-collection-encoder!)
(execute s "use ks;")
(execute s "insert into d (k) values (?);" {:values [[1 2 3]]})
(execute s "select * from d;")
(这应该也适用于 hayt)
干杯
我有一个空白的 Cassandra 2.1 数据存储,我正尝试使用 Alia 和 Hayt 从 Clojure 中的键空间向下以编程方式填充它。这被用作从客户端接收 JSON 数据的 Web 服务端点后面的数据存储。
我希望能够将传入数据解析为 Clojure 实例,稍微更改该数据(例如,将另一个键值对添加到映射中)并将数据插入到数据存储中这样我以后就可以将它作为 Clojure 实例检索。
除了我无法创建 Cassandra 乐于将我的 Nippy 编码数据放入其中的适当列外,一切都如我所料!
我是否遗漏了什么(我目前的代码)?
(def alia-cluster (cluster {:contact-points ["127.0.0.1"]}))
(def session (connect alia-cluster))
(execute session
(create-keyspace :ks
(if-not-exists)
(with {:replication {:class "SimpleStrategy"
:replication_factor 1}})))
(execute session
(use-keyspace :ks))
(execute session
(create-table :d
(if-not-exists)
(column-definitions [[:k :XXXXX]
[:primary-key :k]])))
(set-nippy-collection-encoder!)
(set-nippy-decoder!)
我已经尝试了 XXXX 中的几乎所有内容 - 但似乎没有任何效果!
如有任何建议,我们将不胜感激。
干杯!
我认为 :bytes 不是 CQL 中的有效类型,它应该是 :blob。那就是说 nippy 编解码器中存在错误(标记为实验性)。它现在已修复,如果你拉 2.5.2 这应该工作:
(use 'qbits.alia)
(use 'qbits.alia.codec.nippy)
(def c (cluster {:contact-points ["localhost"]}))
(def s (connect c))
(set-nippy-decoder!)
(set-nippy-collection-encoder!)
(execute s "use ks;")
(execute s "insert into d (k) values (?);" {:values [[1 2 3]]})
(execute s "select * from d;")
(这应该也适用于 hayt)
干杯