【问题标题】:Store simple key-value pairs in Cassandra 2+在 Cassandra 2+ 中存储简单的键值对
【发布时间】:2015-05-12 17:22:39
【问题描述】:

目前我们正在使用 HBase 来存储我们的数据。因此,我们创建了一个包含 Map 的抽象类,然后通过 Java API 存储此地图。一个示例类将是

class User extends AHBase {
  public static String columnName = "nam".getBytes();
  //...
  public void setName(String name) {
    values.put(columnName, name.getBytes());
  }
  public String getName() {
    return new String(values.get(columnName));
  }
  public byte[] getColumnFamily() {...}
  public byte[] getTable() {...}
}

商店就像(简化的)一样简单

public void store(AHbase a) {
  List<Put> puts = new ArrayList<>();
  for (Entry<byte[], byte[] item : a.getValues().entrySet()) {
    Put p = new Put(a.getColumnFamily, item.getKey(), item.getValue());
    puts.add(p);
  }
  //...
}

我们现在正在评估 Cassandra,因为据说它也是一个键值对存储,它应该很容易切换并进行一些基本评估(至少我们是这么认为的)。

但现在在查看最新版本的 Cassandra (2.1.2) 时,它有点出乎我们的意料。

是否还有一种简单的方法可以通过基本的 put 操作或类似操作来存储键值对(对于 ColumnFamily)?我想避免必须提前定义列名。

【问题讨论】:

    标签: java cassandra datastax-java-driver


    【解决方案1】:

    Cassandra 确实偏离了存储数据的节俭模型,但您仍然可以在 cql 中获得类似的分区布局,例如:

    partition blob, key blob , value blob, PRIMARY KEY partition,key
    

    key blob, value blob, PRIMARY KEY key
    

    取决于你是否想在一个分区中有多个键。

    Thrift 仍然可用,但目前绝对是遥不可及的。

    【讨论】:

    • 这很不幸(至少对我们来说)。感谢您的回复。也许我会等待 astyanax 可用于 cassandra 2 并查看它们的更改/可能性
    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2012-04-10
    • 2021-12-06
    相关资源
    最近更新 更多