如何更新cassandra以增加列

时间:2013-09-03 13:04:30

标签: java cassandra hector

我在我的项目中使用cassandra,并使用hector连接cassandra,我在keypace中定义了一个列族用户,并且在用户中有一个列名“Reputation”,现在我想提高用户的声誉,如何做?你能救我吗?

1 个答案:

答案 0 :(得分:2)

您可以使用计数器创建列族:

ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(keyspaceName, "UserCounters");
cfDef.setKeyValidationClass(ComparatorType.UTF8TYPE.getClassName());
cfDef.setComparatorType(ComparatorType.UTF8TYPE);
cfDef.setDefaultValidationClass(ComparatorType.COUNTERTYPE.getClassName());
cfDef.setColumnType(ColumnType.STANDARD);
cfDef.setKeyspaceName(keyspaceName);

然后,只要您想提高用户信誉,就可以增加它

int amountToIncrease = 1;
HCounterColumn<String> hcol = HFactory.createCounterColumn("reputation", amountToIncrease);
Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get()); 
mutator.addCounter("Bob Smith", "UserCounters", hcol);
mutator.execute();

有了这个,每个用户就有一行,并且有一个声誉计数器。

UserCounters {
  username: {
    reputation: <counter>
  },
  username2: {
    reputation: <counter>
  }
}

然后,如果您想为该用户添加其他计数器(例如“评论”或“浏览量”或其他内容),您可以轻松添加