Является ли Cassandra ориентированной на столбцы или столбчатой базой данных
База данных столбцов должна хранить группу столбцов вместе. Но Кассандра хранит данные построчно. Таблица SS будет содержать несколько строк данных, сопоставленных с их соответствующим ключом раздела. Поэтому я чувствую, что Cassandra - это хранилище данных с несколькими строками, такое как MySQL, но имеет и другие преимущества, такие как "широкие строки", и каждый столбец не обязательно должен присутствовать во всех строках и, конечно, он находится в памяти. Пожалуйста, поправьте меня, если я ошибаюсь.
5 ответов
Если вы перейдете к проекту Apache Cassandra на GitHub и прокрутите вниз до "Резюме", вы получите ответ:
Cassandra - это магазин секционированных рядов. Строки организованы в таблицы с обязательным первичным ключом.
Разделение означает, что Cassandra может распределять ваши данные по нескольким машинам в прозрачном для приложений вопросе. Кассандра будет автоматически перераспределяться по мере добавления и удаления машин из кластера.
Хранилище строк означает, что, как и реляционные базы данных, Cassandra организует данные по строкам и столбцам.
"Так что я чувствую, что Кассандра - это хранилище данных по строкам"
И это было бы правильно.
В столбчатой или столбчатой базе данных данные хранятся на диске столбцовым способом.
например: таблица
Bonuses
ТаблицаID Last First Bonus 1 Doe John 8000 2 Smith Jane 4000 3 Beck Sam 1000
В системе управления базами данных, ориентированной на строки, данные будут храниться так:
1,Doe,John,8000;2,Smith,Jane,4000;3,Beck,Sam,1000;
В системе управления базами данных, ориентированной на столбцы, данные будут храниться так:
1,2,3;Doe,Smith,Beck;John,Jane,Sam;8000,4000,1000;
Кассандра в основном магазин для семейных колонн
- Кассандра будет хранить вышеуказанные данные как,
"Bounses" : { row1 : { "ID":1, "Last":"Doe", "First":"John", "Bonus":8000}, row2 : { "ID":2, "Last":"Smith", "Jane":"John", "Bonus":4000} ... }
Vertica, VectorWise, MonetDB - это некоторые базы данных, ориентированные на столбцы, о которых я слышал.
Прочитайте это для более подробной информации.
Надеюсь это поможет.
Это широкая база данных столбцов, также известная как базы данных семейств столбцов. Также помогает определение из Википедии:
Хранилища с широкими столбцами, такие как Bigtable и Apache Cassandra, не являются хранилищами столбцов в первоначальном смысле этого слова, поскольку их двухуровневые структуры не используют столбчатый макет данных. В подлинных хранилищах столбцов используется структура данных по столбцам, так что каждый столбец хранится на диске отдельно. Хранилища с широкими столбцами часто поддерживают понятие семейств столбцов, которые хранятся отдельно. Однако каждое такое семейство столбцов обычно содержит несколько столбцов, которые используются вместе, как и в традиционных таблицах реляционной базы данных. В заданном семействе столбцов все данные хранятся построчно, так что столбцы для данной строки хранятся вместе, а не каждый столбец хранится отдельно. Хранилища с широкими столбцами, поддерживающие семейства столбцов, также известны как базы данных семейств столбцов.
Хороший способ думать о Кассандре - это карта карт, где внутренние карты отсортированы по ключам. Раздел имеет много столбцов, и они всегда хранятся вместе. Они сортируются по ключам кластеризации - сначала по первому ключу, затем по следующему, затем по следующему... и так далее. Затем разделы реплицируются среди реплик. Он не обязательно хранится как "строки", так как разные строки хранятся на разных узлах на основе стратегии репликации и активного алгоритма хеширования. Другими словами, раздел для Product Id 1, вероятно, не хранится рядом с ProductId 2, если ProductId является ключом раздела. Однако столбцы для идентификатора продукта 1 всегда хранятся вместе.
Что касается определений, большинство хранилищ NoSQL размывают линии так или иначе. Они обычно охватывают несколько категорий. Я оставлю на ваше усмотрение решение, будет ли это считаться столбчатой базой данных или нет:)
Короткий ответ:
В Cassandra есть концепция семейства столбцов, но она НЕ ориентирована на столбцы.
Длинный ответ:
Цитирую часть лучшей книги, которую я когда-либо читал: «Проектирование приложений с интенсивным использованием данных» Мартина Клеппмана:
У Cassandra и HBase есть концепция семейств столбцов, которую они унаследовали от Bigtable. Однако называть их столбцово-ориентированными весьма ошибочно: внутри каждого семейства столбцов они хранят все столбцы из строки вместе вместе с ключом строки и не используют сжатие столбцов. Таким образом, модель Bigtable по-прежнему в основном ориентирована на строки.