2010-01-25 2 views
77

Я уже некоторое время работаю со складированием.Что такое столбчатая база данных?

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

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

  • Как Столбчатые Базы данных работают?
  • Как они отличаются от реляционных баз данных?
+0

В дополнение к уменьшенному количеству обращений, упомянутых в ответах, некоторые реализации (например, хранилище столбцов SQL-сервера) будут сжимать данные. Это предотвращает фильтрацию строк, но может дополнительно повысить производительность запросов. – Pace

ответ

41

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

Как они отличаются от реляционных баз данных? Они обычно отличаются от традиционных (строки-ориентированного) база данных с относительно ...

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

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

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

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

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

2

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

http://www.vertica.com/

http://www.paraccel.com/

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

+0

Одна вещь, которую следует отметить о Vertica, это то, что я видел ссылку в Интернете на стоимость лицензии, хранящуюся в размере 150 тыс. Долл./ТБ. так что это не дешево. – Mark

+0

@Mark: Стоимость не является проблемой. Это проблема. Если OP хочет получить информацию, поставщики часто являются наилучшим источником. –

+1

Amazon предлагает сверхбыстрое хранилище данных RedShift под 1000 долларов за терабайт в год, если вы не особенно ищете Columnar one. – mevdiven

195

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

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 

Это в отличие от традиционного rowstore которая складировани данные больше, как это:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams 

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

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

+15

Это кажется лучше, чем принятый ответ, но я не эксперт. Upvote. –

+2

Базы данных, ориентированные на столбцы, используются там, где агрегирование по конкретным столбцам запрашивается как отчет о продажах. Дело здесь в том, что если вы используете базу данных, ориентированную на строки, тогда все строки (блоки) должны быть перенесены в основную память, что включает в себя много времени поиска с диска, чтобы довести весь блок с диска до бара, даже если вас интересует только столбец который поможет вам предоставить отчет о продажах. В то время как столбцы, ориентированные на схему, столбцы хранятся смежно в блоках, что уменьшает количество запросов из-за меньшего количества блоков. Таким образом, базы данных столбцов используются для OLAP, тогда как ориентированные на строки используются для файлов OLTP. – bharatj

2

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

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

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

+0

Вы можете получить отчет IDC по адресу: http://paraccel.com/press/3rd_generation_database_technology/ –

+0

Данные Aster являются реляционной базой данных MPP и имеют встроенную поддержку столбчатых таблиц. – topchef

+0

@kimstanick, paraccel URL-адрес мертв. – user674669

4

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

1

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

1

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

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

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

Для более: https://en.wikipedia.org/wiki/Column-oriented_DBMS

0

Столбчатые Базы данных широко применяется в аналитических и BI. Согласно Wiki. Сохраняя данные в столбцах, а не в строках, база данных может более точно получать данные, необходимые для ответа на запрос, а не сканировать и отбрасывать нежелательные данные в строках. Они хорошо подходят для OLAP-подобных рабочих нагрузок для хранилищ данных. Согласно эмпирическому article, организации часто используют ориентированную на строку базу данных, работающую в бэкэнд, и столбчатую базу данных для потребностей BI переднего плана.

Смежные вопросы