Що таке стовпчаста база даних?


98

Я вже деякий час працюю зі складуванням.

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

У мене є багатоскладове запитання:

  • Як працюють бази даних Columnar?
  • Чим вони відрізняються від реляційних баз даних?

1
На додаток до скороченого числа запитів, згаданих у відповідях, деякі реалізації (наприклад, зберігання стовпців SQL-сервера) будуть стискати дані. Це запобігає фільтруванню рядків, але може додатково покращити ефективність запитів.
Темп

Відповіді:


49

Як працюють бази даних Columnar?
Columnar база даних - це концепція, а не конкретна архітектура / реалізація . Іншими словами, немає жодного конкретного опису того, як працюють ці бази даних; Дійсно, декілька побудовані на традиційних СУБД, орієнтованих на рядки, просто зберігаючи інформацію в таблицях з одним (або, швидше за все, двома) стовпцями (і додаючи необхідний шар для легкого доступу до стовпчастих даних).

Чим вони відрізняються від реляційних баз даних? Вони, як правило, відрізняються від традиційних (орієнтованих на рядки) баз даних щодо ...

  • продуктивність ...
  • вимоги до зберігання ...
  • простота модифікації схеми ...

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

Чи є пробна версія стовпчастої бази даних, яку я можу встановити для гри? (Я в Windows 7) Так, є комерційна, безкоштовна та також відкрита реалізація стовпчастих баз даних. Дивіться список в кінці статті Вікіпедії для початку.
Будьте уважні, що кілька таких реалізацій було введено для вирішення конкретної потреби (скажімо, дуже малого сліду, сильно стисливого розподілу даних або емуляції запасної матриці тощо), а не для забезпечення СУБД, орієнтованої на колони загального призначення.

Примітка: Зауваження щодо "орієнтації на одну мету" кількох стовпчастих СУБД не є критикою цих реалізацій, а скоріше додатковим свідченням того, що такий підхід до СУБД відхиляється від більш "природного" (і, звичайно, більш широко використовуваного) підходу до зберігання записуючих осіб. Як результат, такий підхід застосовується тоді, коли орієнтований на ряд підхід не є задовільним, а отже, і, як правило,
a) має бути орієнтований на певну мету; b) отримує менше ресурсів / відсотків, ніж робота над "Загальною метою", "Спробував і Випробуваний ", табличний підхід.

Орієнтовно модель даних Entity-Attribute-Value (EAV) може бути альтернативною стратегією зберігання, яку ви можете розглянути. Незважаючи на те, що EAV відрізняється від "чистої" колонкової моделі БД, EAV поділяє декілька характеристик стовпчастих БД.


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.
бхаратж

4

Я б сказав, що найкращим кандидатом для розуміння баз даних, орієнтованих на стовпці, є перевірка HBase ( Apache Hbase ). Ви оформляєте код і оглядаєте далі, щоб дізнатися про реалізацію.


2

Крім того, Стовпчасті БД мають вбудовану спорідненість до стиснення даних, а процес завантаження унікальний. Ось стаття, яку я написав у 2008 році, де пояснюється трохи більше.

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

(До речі, один коментар вище містить зірочки, але я не думаю, що вони є стовпчиками.)


Ви можете отримати звіт IDC за адресою: paraccel.com/press/3rd_generation_database_technology
Кім Станік

Aster Data є реляційною базою даних MPP і має вбудовану підтримку стовпчастих таблиць.
топчеф

@kimstanick, URL-адреса паралеля мертва.
користувач674669

2

Щоб зрозуміти, що таке база даних, орієнтована на стовпці, краще порівняти її з базою даних, орієнтованих на рядки.

Бази даних, орієнтовані на рядки (наприклад, MS SQL Server та SQLite), призначені для ефективного повернення даних для цілого рядка. Він робить це, зберігаючи всі значення стовпців рядка разом. Бази даних, орієнтовані на рядки, добре підходять для систем OLTP (наприклад, роздрібний продаж та системи фінансових операцій).

Бази даних, орієнтовані на стовпці , призначені для ефективного повернення даних для обмеженої кількості стовпців. Він робить це, зберігаючи всі значення стовпця разом. Дві широко використовувані бази даних, орієнтовані на стовпці, - Apache Hbase та Google BigTable (використовуються Google для пошуку, аналітики, карт та Gmail). Вони підходять для проектів великих даних. База даних, орієнтована на стовпці, буде відмінною в операціях читання обмеженої кількості стовпців, однак операція запису буде дорогою порівняно з базами даних, орієнтованими на рядки.

Докладніше: https://en.wikipedia.org/wiki/Column-oriented_DBMS


1

Інформація про Продукт. Це може допомогти. Це були представлені продукти в пошуку Google.

http://www.vertica.com/

http://www.paraccel.com/

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


Одним із зауважень щодо Vertica є те, що я бачив в Інтернеті посилання на вартість ліцензії, яка зберігається у 150 000 доларів за туберкульоз. так що це не дешево.
Марк

@Mark: Вартість не в цьому. Інформація - це питання. Якщо ОП хоче отримати інформацію, продавці часто є найкращим можливим джерелом.
С.Лотт

1
Amazon пропонує своє супершвидке зберігання даних RedShift під 1000 доларів за терабайт на рік, якщо ви не особливо шукаєте Columnar.
mevdiven

1

kx - це ще одна стовпчаста база даних, наприклад, що використовується у фінансовому секторі. Ліцензія - це приблизно $ 50 000 востаннє, коли я перевіряв. Оптимізація не потрібно, індекс не потрібно, тому що кх не має потужні оператори (MatLab еквіваленти: .*, kron, bsxfun, ...).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.