Я изучаю различные типы типов типов NoSQL, и я пытаюсь обернуть голову вокруг модели данных для хранилищ колонок, таких как Bigtable, HBase и Cassandra.
Первая модель
Некоторые люди описывают семейство столбцов как набор строк, где каждая строка содержит столбцы [1], [2]. Пример этой модели (семейства столбцов имеют верхний регистр):
{
"USER":
{
"codinghorror": { "name": "Jeff", "blog": "http://codinghorror.com/" },
"jonskeet": { "name": "Jon Skeet", "email": "[email protected]" }
},
"BOOKMARK":
{
"codinghorror":
{
"http://codinghorror.com/": "My awesome blog",
"http://unicorns.com/": "Weaponized ponies"
},
"jonskeet":
{
"http://msmvps.com/blogs/jon_skeet/": "Coding Blog",
"http://manning.com/skeet2/": "C# in Depth, Second Edition"
}
}
}
Вторая модель
Другие сайты описывают семейство столбцов как группу связанных столбцов в строке [3], [4]. Данные из предыдущего примера, смоделированные таким образом:
{
"codinghorror":
{
"USER": { "name": "Jeff", "blog": "http://codinghorror.com/" },
"BOOKMARK":
{
"http://codinghorror.com/": "My awesome blog",
"http://unicorns.com/": "Weaponized ponies"
}
},
"jonskeet":
{
"USER": { "name": "Jon Skeet", "email": "[email protected]" },
"BOOKMARK":
{
"http://msmvps.com/blogs/jon_skeet/": "Coding Blog",
"http://manning.com/skeet2/": "C# in Depth, Second Edition"
}
}
}
Возможное обоснование первой модели заключается в том, что не все семейства столбцов имеют отношение, подобное USER
и BOOKMARK
do. Это означает, что не все семейства столбцов содержат одинаковые ключи. Размещение этих семейств на внешнем уровне кажется более естественным с этой точки зрения.
Имя "семейство столбцов" подразумевает группу столбцов. Именно так представлены семейства столбцов в второй модели.
Обе модели являются действительными представлениями данных. Я понимаю, что эти представления предназначены исключительно для передачи данных людям; приложения не "думают" о данных таким образом.
Вопрос
Что такое "стандартное" определение семейства столбцов? Является ли это набором строк или группой связанных столбцов внутри строки?
Мне нужно написать статью по этому вопросу, поэтому меня также интересует, как люди обычно объясняют концепцию "семейство столбцов" другим людям. Обе эти модели, похоже, противоречат друг другу. Я бы хотел использовать "правильную" или общепринятую модель для описания хранилищ в столбцах.
Update
Я рассмотрел вторую модель для объяснения модели данных в моей статье. Меня все еще интересует, как вы объясняете модель данных хранилищ колонок для других людей.