java - 通过删除重复代码高效插入数据库

标签 java cassandra performance

我最近开始使用 Cassandra 数据库。我试图将一些数据插入到我创建的一个Column Family 中。

下面是我尝试插入 Cassandra 数据库的代码。

就我而言,我的列族中有大约 20 列,这意味着我需要添加以下行

mutator.newColumn("列名称", "列值");

二十次在我的下面的代码中,对我来说看起来很难看。有什么办法,我可以通过使用反射或其他方式来简化下面的方法,这样如果我有超过 20 列,我就不应该继续在下面的代码中添加额外的行。

for (int userId = id; userId < id + noOfTasks; userId++) {

    Mutator mutator = Pelops.createMutator(thrift_connection_pool);

    mutator.writeColumns(column_family, String.valueOf(userId),
            mutator.newColumnList(
            mutator.newColumn("a_account", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_advertising", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_avg_selling_price_main_cats", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_cat_and_keyword_rules", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_csa_categories_purchased", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_customer_service", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_demographic", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_favorite_searches", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_favorite_sellers", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}"), 
            mutator.newColumn("a_financial", "{\"lv\":[{\"v\":{\"regSiteId\":null,\"userState\":null,\"userId\":" + userId + "},\"cn\":1}],\"lmd\":20130206211109}")
            mutator.newColumn(some othe column, its value)
            .....
            .....
            .....
            ));


    mutator.execute(ConsistencyLevel.ONE);
}

任何简化上述方法的帮助都将对我有很大帮助。我可以在这里使用反射吗?有什么想法吗?

最佳答案

您可以预定义您的ColumnList。假设您在名为“map”的变量中传递了名称映射和值的字符串版本。您的代码可能如下所示:

Mutator mutator = Pelops.createMutator(thrift_connection_pool);
ArrayList<Column> columnList = new ArrayList<Column>();
for (Map.Entry<String, String> entry : map.entrySet()) {
    columnList.add(mutator.newColumn(entry.getKey(), entry.getValue()));
}
mutator.writeColumns(column_family, String.valueOf(userId), columnList);

关于java - 通过删除重复代码高效插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890581/

相关文章:

performance - 为什么从多个 SSD 读取的吞吐量比从单个 SSD 读取的吞吐量低

java - Osgi 中的bundleContext.getServiceReference

java - glVertex 参数以什么单位进行测量?

java - SonarQube 通过匿名扫描上传强制身份验证

java - Android中APP处于状态时如何检查互联网连接?

java - 插入期间未配置的列族错误

solr - 删除Cassandra集群中的海量数据

cassandra - cassandra 的 AWS 实例选择

performance - 我如何有效地(内存/时间)修改 Tcl 中列表的所有元素?

JavaScript:合并文件没有问题?