Что такое столбчатая база данных?

98

Некоторое время занимаюсь складированием.

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

У меня вопрос из нескольких частей:

  • Как работают столбчатые базы данных?
  • Чем они отличаются от реляционных баз данных?
Радж Мор
источник
1
В дополнение к уменьшенному количеству запросов, упомянутому в ответах, некоторые реализации (например, хранилище столбцов SQL-сервера) будут сжимать данные. Это предотвращает фильтрацию строк, но может дополнительно повысить производительность запроса.
Темп

Ответы:

49

Как работают столбчатые базы данных?
Столбчатая база данных - этоскорее концепция конкретной архитектуры / реализации . Другими словами, нет одного конкретного описания того, как работают эти базы данных; действительно, некоторые из них построены на традиционной, ориентированной на строки СУБД, просто храня информацию в таблицах с одним (или, скорее, двумя) столбцами (и добавляя необходимый уровень для легкого доступа к столбчатым данным).

Чем они отличаются от реляционных баз данных? Они обычно отличаются от традиционных (строковых) баз данных в отношении ...

  • производительность...
  • требования к хранению ...
  • простота модификации схемы ...

... в конкретных случаях использования СУБД .
В частности, они предлагают преимущества в упомянутых областях, когда типичным использованием является вычисление агрегированных значений для ограниченного числа столбцов, в отличие от попытки получить все / большинство столбцов для данной сущности.

Есть ли пробная версия колоночной базы данных, которую я могу установить, чтобы поиграть? (Я на Windows 7) Да, есть коммерческая, бесплатная реализация столбчатых баз данных с открытым исходным кодом. Для начала ознакомьтесь со списком в конце статьи в Википедии .
Помните, что некоторые из этих реализаций были введены для решения конкретной задачи (например, очень небольшая площадь, хорошо сжимаемое распределение данных или эмуляция резервной матрицы и т. Д.), А не для создания СУБД общего назначения, ориентированной на столбцы как таковой.

Примечание. Замечание об «ориентации на одну цель» нескольких колоночных СУБД не является критикой этих реализаций, а скорее дополнительным признаком того, что такой подход для СУБД отклоняется от более «естественного» (и, безусловно, более широко используемого) подхода к хранение записей. В результате этот подход используется, когда подход, ориентированный на строки, неудовлетворителен и, следовательно, имеет тенденцию:
а) быть нацеленным на конкретную цель; б) получать меньше ресурсов / интереса, чем работа над «Общими целями», «Пробовал и Проверено », табличный подход.

Ориентировочно модель данных Entity-Attribute-Value (EAV) может быть альтернативной стратегией хранения, которую вы, возможно, захотите рассмотреть. Несмотря на то, что EAV отличается от «чистой» модели столбцовых БД, он разделяет некоторые характеристики столбчатых БД.

mjv
источник
253

Как работают колоночные базы данных? Определяющая концепция хранилища столбцов состоит в том, что значения таблицы хранятся последовательно по столбцам. Таким образом, классическая таблица поставщиков из базы данных поставщиков и запчастей CJ Date:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

будет храниться на диске или в памяти примерно так:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Это отличается от традиционного хранилища строк, в котором данные будут храниться примерно так:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

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

Чем они отличаются от реляционных баз данных? База данных отношений - это логическая концепция. Колоночная база данных или колоночное хранилище - это физическая концепция. Таким образом, эти два термина несопоставимы ни в каком значимом смысле. DMBS, ориентированные на столбцы, могут быть реляционными или нет, так же как СУБД, ориентированные на строки, могут более или менее придерживаться реляционных принципов.

Пол Мансур
источник
22
Это кажется лучше, чем принятый ответ, но я не эксперт. Голосовать за.
Роб Грант
2
Базы данных, ориентированные на столбцы, используются там, где запрашиваются агрегаты по определенным столбцам, как в отчете о продажах. Дело здесь в том, что если вы используете базу данных, ориентированную на строки, тогда все строки (блоки) должны быть перенесены в основную память, что включает в себя много времени поиска с диска для переноса всего блока с диска в оперативную память, даже если вас интересует только столбец который поможет вам предоставить отчет о продажах. В то время как в схеме, ориентированной на столбцы, столбцы хранятся непрерывно в блоках, что делает меньше запросов из-за меньшего количества блоков. Таким образом, базы данных столбцов используются для OLAP, тогда как ориентированные на строки используются для материалов OLTP.
bharatj 02
4

Я бы сказал, что лучший кандидат для понимания баз данных, ориентированных на столбцы, - это проверить HBase ( Apache Hbase ). Вы проверяете код и исследуете его дальше, чтобы узнать о реализации.

hari_sree
источник
2

Кроме того, столбчатые базы данных имеют встроенную привязку к сжатию данных, и процесс загрузки уникален. Вот статья, которую я написал в 2008 году, которая объясняет немного больше.

Вас также может заинтересовать новый отчет Карла Олофсона из IDC о технологии СУБД 3-го поколения. Он обсуждает столбчатый и др. Если вы не являетесь клиентом IDC, вы можете получить его бесплатно на нашем сайте. Он тоже проводит вебинар 16 июня (тоже на нашем сайте).

(Кстати, в одном из комментариев выше перечислены asterdata, но я не думаю, что они столбчатые.)

Ким Станик
источник
Вы можете получить отчет IDC по адресу: paraccel.com/press/3rd_generation_database_technology
Ким Станик,
Aster Data - это реляционная база данных MPP, которая имеет встроенную поддержку столбчатых таблиц.
topchef
@kimstanick, URL-адрес paraccel мертв.
user674669
2

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

Строковые базы данных (например, MS SQL Server и SQLite) предназначены для эффективного возврата данных для всей строки. Он делает это, сохраняя все значения столбцов строки вместе. Строковые базы данных хорошо подходят для систем OLTP (например, систем розничных продаж и финансовых транзакций).

Базы данных, ориентированные на столбцы , предназначены для эффективного возврата данных для ограниченного числа столбцов. Он делает это, сохраняя все значения столбца вместе. Две широко используемые базы данных, ориентированные на столбцы, - это Apache Hbase и Google BigTable (используемые Google для поиска, аналитики, карт и Gmail). Они подходят для проектов с большими данными. База данных, ориентированная на столбцы, будет превосходно выполнять операции чтения для ограниченного числа столбцов, однако операция записи будет дорогостоящей по сравнению с базами данных, ориентированными на строки.

Подробнее: https://en.wikipedia.org/wiki/Column-oriated_DBMS.

Разан Пол
источник
1

Информация о продукте. Это может помочь. Это были продукты, представленные в поиске Google.

http://www.vertica.com/

http://www.paraccel.com/

http://www.asterdata.com/index.php

С.Лотт
источник
В отношении Vertica следует отметить одну вещь: я видел в Интернете ссылку на стоимость лицензии, составляющую 150 тыс. Долларов за 1 ТБ данных. так что это не дешево.
Марк
@Mark: Проблема не в стоимости. Информация - это проблема. Если ОП хочет информацию, поставщики часто являются лучшим возможным источником.
S.Lott
1
Amazon предлагает сверхбыстрое хранилище данных RedShift по цене менее 1000 долларов за терабайт в год, если вы не особенно ищете Columnar one.
mevdiven 05
1

kx - еще одна колоночная база данных, например, используемая в финансовом секторе. Однако, когда я в последний раз проверял, лицензия стоит около 50 тысяч долларов. Оптимизация не требуется, индекс не требуется, потому что кх не имеет мощные операторы (MatLab эквиваленты: .*, kron, bsxfun, ...).

user2987828
источник