Обе модели, которые вы описали, совпадают.
Семейство столбцов:
Key -> Key -> (Set of key/value pairs)
Концептуально это становится:
Table -> Row -> (Column1/Value1, Column2/Value2, ...)
Думайте об этом как о карте пары ключей / значений.
UserProfile = {
Cassandra = [emailAddress:"cassandra@apache.org", age:20],
TerryCho = [emailAddress:"terry.cho@apache.org", gender:"male"],
Cath = [emailAddress:"cath@apache.org", age:20, gender:"female", address:"Seoul"],
}
Выше приведен пример семейства столбцов. Если бы вы занесли его в таблицу, вы бы получили таблицу с именем UserProfile, которая выглядит следующим образом:
UserName | Email | Age | Gender | Address
Cassandra | cassandra@apache.org | 20 | null | null
TerryCho | terry.cho@apache.org | null | male | null
Cath | cath@apache.org | 20 | female | Seoul
Запутанная часть в том, что на самом деле не существует столбца или строки, как мы привыкли думать о них. Существует множество «семейств столбцов», которые запрашиваются по имени (ключу). Эти семейства содержат набор наборов пар ключ / значение, которые также запрашиваются по имени (ключ строки), и, наконец, каждое значение в наборе можно искать также по имени (ключ столбца).
Если вам нужна табличная контрольная точка, вашими "таблицами" будут "семейства столбцов". Каждый «набор пары k / v» внутри них будет вашими «строками». Каждая «пара набора» будет «именами столбцов и их значениями».
Внутренне данные внутри каждого столбца будут сохраняться вместе, и они будут храниться так, чтобы строки располагались одна за другой, а в каждой строке столбцы располагались один за другим. Итак, вы получите row1 -> col1/val1, col2/val2, ... , row2 -> col1/val1 ... , ... -> ...
. Таким образом, в этом смысле данные хранятся гораздо больше как хранилище строк, а не как хранилище столбцов.
В заключение, выбор слов здесь просто неудачный и вводящий в заблуждение. Столбцы в Семействах столбцов должны были называться Атрибутами. Строки должны были называться наборами атрибутов. Семейства столбцов должны были называться Семейства атрибутов. Отношение к классической табличной лексике слабое и вводящее в заблуждение, поскольку на самом деле оно довольно сильно отличается.