Перейти к основному содержимому

Является ли Cassandra базой данных, ориентированной на столбцы или семейства столбцов?

· 3 мин. чтения

1. Введение

Apache Cassandra — это распределенная база данных NoSQL с открытым исходным кодом, созданная для обработки больших объемов данных в нескольких центрах обработки данных. Модель данных Cassandra является предметом обсуждения во многих документах и документах, что часто приводит к запутанной или противоречивой информации. Это связано с возможностью Cassandra хранить семейства столбцов и обращаться к ним по отдельности, что приводит к ошибочной классификации как ориентированной на столбцы, а не семейства столбцов.

В этом руководстве мы рассмотрим различия между моделями данных и установим природу модели данных хранилища секционированных строк Cassandra .

2. Модели данных базы данных

README в репозитории Apache Cassandra git гласит, что:

Cassandra is a partitioned row store. Rows are organized into tables with a required primary key.

Partitioning means that Cassandra can distribute your data across multiple machines in an application-transparent matter. Cassandra will automatically repartition as machines are added and removed from the cluster.

Row store means that like relational databases, Cassandra organizes data by rows and columns.

Отсюда можно сделать вывод, что Cassandra — это секционированное хранилище строк . Однако имена column-family или wide-column также являются подходящими именами, как мы узнаем ниже.

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

2.1. Хранилища данных, ориентированные на строки и столбцы

В качестве примера возьмем таблицу « Сотрудники »:

ID         Last    First   Age
1 Cooper James 32
2 Bell Lisa 57
3 Young Joseph 45

База данных, ориентированная на строки, хранит вышеуказанные данные как:

1,Cooper,James,32;2,Bell,Lisa,57;3,Young,Joseph,45;

В то время как база данных, ориентированная на столбцы, хранит данные как:

1,2,3;Cooper,Bell,Young;James,Lisa,Joseph;32,57,45;

Cassandra не хранит свои данные, как база данных, ориентированная на строки или столбцы .

2.2. Хранилище секционированных строк

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

В секционированном хранилище строк данные о сотрудниках выглядят так:

"Employees" : {
row1 : { "ID":1, "Last":"Cooper", "First":"James", "Age":32},
row2 : { "ID":2, "Last":"Bell", "First":"Lisa", "Age":57},
row3 : { "ID":3, "Last":"Young", "First":"Jospeh", "Age":45},
...
}

В секционированном хранилище строк есть строки, содержащие столбцы, но количество столбцов в каждой строке не обязательно должно быть одинаковым (например, big-table ). Некоторые строки могут иметь тысячи столбцов, а некоторые строки могут быть ограничены только одним.

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

3. Заключение

В этой статье мы узнали, что секционированное хранилище строк Cassandra означает, что это семейство столбцов, а не ориентированное на столбцы . Основная характеристика, определяющая семейство столбцов , заключается в том, что информация столбца является частью данных . В этом основное отличие модели семейства столбцов от моделей, ориентированных как на строки, так и на столбцы . Термин « широкий столбец» происходит от идеи, что таблицы, содержащие неограниченное количество столбцов, по своей природе являются широкими.

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