Кассандра, как организовать ценность в sstable - PullRequest
0 голосов
/ 06 сентября 2018

Мне интересно, что Кассандра организовала значение строки в sstable.
Это ключ хранения столбца каждой строки?

например.

table  
c1 int primary key,  
c2 int,  
c3 int,  

insert into table(c1,c2,c3) values(1,2,3)

как Кассандра хранит его? как это: c1 -> 2,3

или как это: c1 -> c2: 2, c3: 3

1 Ответ

0 голосов
/ 06 сентября 2018

Это в значительной степени зависит от версии Cassandra, которую вы используете, поскольку Cassandra организует изменения данных между C * 2.2 и C * 3.0. Вы можете прочитать об этих изменениях здесь . До C * 3.0 SSTables состояли из ключей разделов и их ячеек; в 3.0 SSTables состоят из разделов и их строк (которые содержат ячейки).

Лучший способ выяснить, как организованы данные, - использовать такой инструмент, как sstabledump (C * 3.0+) или sstable2json, чтобы наблюдать за организацией данных. на диске после выполнения некоторых обновлений и сброса на диск.

Следующая статья дает обзор того, как использовать sstabledump.

Для предложенной схемы и вставки приведен пример того, как все выглядит:

[
  {
    "partition" : {
      "key" : [ "1" ],
      "position" : 0
    },
    "rows" : [
      {
        "type" : "row",
        "position" : 32,
        "liveness_info" : { "tstamp" : "2018-09-06T00:03:38.558182Z" },
        "cells" : [
          { "name" : "c2", "value" : 2 },
          { "name" : "c3", "value" : 3 }
        ]
      }
    ]
  }
]

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

Существуют также дополнительные метаданные, которые могут присутствовать на уровне раздела, строки и ячейки. Механизм хранения C * 3 также оптимизирует пространство, не сохраняя имена каждого столбца в каждой ячейке (где это делал C * 2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...