Кассандра: Что такое вложенная колонка

#cassandra

#кассандра

Вопрос:

http://wiki.apache.org/cassandra/CassandraLimitations

Цитата: Cassandra имеет два уровня индексов: ключ и столбец. Но в семействах суперколонок существует третий уровень вложенных столбцов; они не индексируются, и любой запрос на вложенную колонку десериализует все вложенные столбцы в этой надколонке. Итак, вы хотите избежать модели данных, которая требует большого количества вложенных столбцов.

=> Что именно представляет собой вложенный столбец? Интересно, поиск термина в Google на самом деле не дает результатов. Я знаю концепции суперколонок, но не совсем ясно, к чему именно относится термин «вложенная колонка» (как он определяется):

Какая концепция правильная?

Первый:

 ROW-KEY
   SubCol     SubCol    
    col  col  col val
    val  val  col val
  

или

Второй:

 ROW-KEY
   Column           Column
    SubCol SubCol   SubCol SubCol
    val    val      val    val
  

Кроме того, что есть что в определениях:

 comparator = UTF8Type and
subcomparator = UTF8Type and 
  

Это всего лишь вопрос определения.

Спасибо, Маркус

Ответ №1:

Родительским элементом стандартного столбца является его строка. Родительским элементом вложенного столбца является его надколонна. Помимо этого, они одинаковы — есть просто дополнительный уровень вложенности, хотя есть последствия для индексации и извлечения, как вы упомянули.

Больше информации на http://wiki.apache.org/cassandra/DataModel и http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model

Обычное семейство столбцов:

 row
    col  col  col ...
    val  val  val ...
  

Семейство суперколонок:

 row
      supercol                      supercol                     ...
          (sub)col  (sub)col  ...       (sub)col  (sub)col  ...
           val       val      ...        val       val      ...
  

Комментарии:

1. Спасибо!. Первую ссылку, которую я уже прочитал, прежде чем задавать здесь, но ваша диаграмма в несколько раз лучше описывает термины! (на веб-сайте cassandra у yonley есть эти примеры) но ваше определение абсолютно четкое. Если вы из команды cassandra, вы могли бы обновить это на сайте. Спасибо.

2. «WTF — это суперколоночка» должна быть избавлена от своих страданий. Я бы порекомендовал datastax.com/docs/0.8/data_model/index или сообщения Макса о моделировании данных (ссылки вверху wiki.apache.org/cassandra/ArticlesAndPresentations ).

Ответ №2:

comparator Значение указывает, как будут отсортированы столбцы, когда они будут возвращены вам в запросе. Та же концепция применима к subcomparator , но для суперколонок.

UTF8Type относится к стандартам Unicode для символов.

  • Источник: «Cassandra the Definitive Guide».