Является ли 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, не являются хранилищами столбцов в первоначальном смысле этого слова, поскольку их двухуровневые структуры не используют столбчатый макет данных. В подлинных хранилищах столбцов используется структура данных по столбцам, так что каждый столбец хранится на диске отдельно. Хранилища с широкими столбцами часто поддерживают понятие семейств столбцов, которые хранятся отдельно. Однако каждое такое семейство столбцов обычно содержит несколько столбцов, которые используются вместе, как и в традиционных таблицах реляционной базы данных. В заданном семействе столбцов все данные хранятся построчно, так что столбцы для данной строки хранятся вместе, а не каждый столбец хранится отдельно. Хранилища с широкими столбцами, поддерживающие семейства столбцов, также известны как базы данных семейств столбцов.

Ссылка: https://en.wikipedia.org/wiki/Wide-column_store

Хороший способ думать о Кассандре - это карта карт, где внутренние карты отсортированы по ключам. Раздел имеет много столбцов, и они всегда хранятся вместе. Они сортируются по ключам кластеризации - сначала по первому ключу, затем по следующему, затем по следующему... и так далее. Затем разделы реплицируются среди реплик. Он не обязательно хранится как "строки", так как разные строки хранятся на разных узлах на основе стратегии репликации и активного алгоритма хеширования. Другими словами, раздел для Product Id 1, вероятно, не хранится рядом с ProductId 2, если ProductId является ключом раздела. Однако столбцы для идентификатора продукта 1 всегда хранятся вместе.

Что касается определений, большинство хранилищ NoSQL размывают линии так или иначе. Они обычно охватывают несколько категорий. Я оставлю на ваше усмотрение решение, будет ли это считаться столбчатой ​​базой данных или нет:)

Короткий ответ:

В Cassandra есть концепция семейства столбцов, но она НЕ ориентирована на столбцы.

Длинный ответ:

Цитирую часть лучшей книги, которую я когда-либо читал: «Проектирование приложений с интенсивным использованием данных» Мартина Клеппмана:

У Cassandra и HBase есть концепция семейств столбцов, которую они унаследовали от Bigtable. Однако называть их столбцово-ориентированными весьма ошибочно: внутри каждого семейства столбцов они хранят все столбцы из строки вместе вместе с ключом строки и не используют сжатие столбцов. Таким образом, модель Bigtable по-прежнему в основном ориентирована на строки.

Другие вопросы по тегам