Кассандра: Семейство Колонн против Семейства Супер Колонн

У меня есть требование, где мне нужна моя база данных для хранения следующих данных:

- For each build, store the results of 3 performance runs. The result includes tps and latency. 

Считывание с моделью данных cassandra позволяет напрямую сопоставить семейство суперколонок следующего формата:

BenchmarkSuperColumnFamily= {

build_1: {
   Run1: {1000K, 0.5ms}
   Run2: {1000K, 0.5ms}
   Run3: {1000K, 0.5ms}
}

build_2: {
   Run1: {1000K, 0.5ms}
   Run2: {1000K, 0.5ms}
   Run3: {1000K, 0.5ms}
}
...

}

Но я прочитал в следующем ответе, что использование семейства Super Column не рекомендуется. Я хотел знать, есть ли лучший способ создания модели для моего требования.

PS, я позаимствовал JSONish обозначения из следующей статьи

1 ответ

Решение

Ответ Stackru, на который вы ссылались, является правильным. Вы не должны использовать SuperColumns в новых приложениях. Однако они существуют для обратной совместимости.

В целом, составные столбцы могут использоваться для имитации любой модели, представленной супер столбцами. По сути, они позволяют разделить имена столбцов на несколько частей. Таким образом, если вы укажете компаратор "CompositeType(UTF8Type, UTF8Type)", ваша модель данных будет выглядеть примерно так:

BenchmarkColumnFamily= {

   build_1: {
       (Run1, TPS) : 1000K
       (Run1, Latency) : 0.5ms
       (Run2, TPS) : 1000K
       (Run2, Latency) : 0.5ms
       (Run3, TPS) : 1000K
       (Run3, Latency) : 0.5ms
    }

    build_2: {
       ...
    }
...

}

В приведенной выше модели вы можете использовать один запрос, чтобы получить одну точку данных для одного прогона, все точки данных для одного прогона или все точки данных для нескольких прогонов.

Дополнительная информация о составных столбцах: http://www.datastax.com/dev/blog/introduction-to-composite-columns-part-1

Другие вопросы по тегам