Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Cassandra中将集合作为行插入_Java_Cassandra_Cql - Fatal编程技术网

Java 在Cassandra中将集合作为行插入

Java 在Cassandra中将集合作为行插入,java,cassandra,cql,Java,Cassandra,Cql,我是卡桑德拉的新手。我有一个场景,我将发送一组要保存的对象。例如,一个人和他的联系人。如果我必须使用类似 public boolean addContacts(String personId, Collection<Contact> contacts){ // My Cassandra code to save this collection as individual rows (bulk execution) return false; publ

我是卡桑德拉的新手。我有一个场景,我将发送一组要保存的对象。例如,一个人和他的联系人。如果我必须使用类似

public boolean addContacts(String personId, Collection<Contact> contacts){
        // My Cassandra code to save this collection as individual rows (bulk execution)
        return false;
public boolean addContacts(字符串personId,集合联系人){
//我的Cassandra代码将此集合保存为单独的行(批量执行)
返回false;
Cassandra batch需要一系列可以在批处理中执行的查询。但是,对于这些查询,必须循环并构造查询。那么,有什么方法可以避免收集循环或对其进行优化呢?
我在Coach DB中访问了accross executeBulk,用于相同的场景。

首先要确定的是模式。要创建模式,必须分析要支持的查询

如果您想存储和检索每个人的联系人,可以是:

CREATE TABLE contacts (
  person_id text,
  email text,
  name text
  phone text,
  PRIMARY KEY (person_id, email)
)
(这是一个简化的模式,您应该相应地选择标识符,我只是在制作一个工作示例)

这样,联系人将按person_id进行分区,并通过第二个键(在本例中为电子邮件)进行聚集

如果需要批量插入联系人,可以使用

您必须像这样反复浏览联系人:

PreparedStatement ps = session.prepare("INSERT INTO contacts (person_id, email, name, phone) VALUES (?, ?, ?, ?)");
BatchStatement batch = new BatchStatement();
//for each contact, bind the parameters
for (Contact c : contacts) {
  batch.add(ps.bind(personId, c.email, c.name, c.phone));
}
session.execute(batch);