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

Я работаю со складированием какое-то время.

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

У меня есть многочастный вопрос:

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

Ответ 1

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

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

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

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

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

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

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

Ответ 2

Как работают столбчатые базы данных?  Определяющая концепция хранилища столбцов состоит в том, что значения таблицы хранятся смежно по столбцу. Таким образом, классический стол поставщика от 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

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

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

Ответ 3

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

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

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

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

Ответ 8

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