Храните простые пары ключ-значение в Cassandra 2+

в настоящее время мы используем HBase для хранения наших данных. Поэтому мы создали абстрактный класс, который содержит карту, и эта карта затем сохраняется через 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), это немного не то, что мы ожидали.

Есть ли еще простой способ хранения пар ключ-значение (для ColumnFamily) с базовыми операциями ввода или подобными? Я хочу избежать необходимости заранее определять имена столбцов.


person divadpoc    schedule 16.12.2014    source источник


Ответы (1)


Cassandra определенно отошла от бережливой модели хранения данных, но вы все еще можете получить аналогичную структуру разделов в cql с помощью чего-то вроде:

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

or

key blob, value blob, PRIMARY KEY key

В зависимости от того, хотите ли вы иметь несколько ключей в разделе или нет.

Thrift все еще доступен, но в данный момент он определенно находится в шаге от двери.

person RussS    schedule 16.12.2014
comment
это печально (по крайней мере для нас). Спасибо за ответ. возможно, я подожду, пока astyanax будет доступен для cassandra 2, и проверю их изменения/возможности. - person divadpoc; 23.12.2014