Co to jest kolumnowa baza danych?

98

Od jakiegoś czasu zajmuję się magazynowaniem.

Intrygują mnie bazy danych Columnar i szybkość, jaką mają do zaoferowania w zakresie pobierania danych.

Mam pytanie wieloczęściowe:

  • Jak działają kolumnowe bazy danych?
  • Czym różnią się od relacyjnych baz danych?
Raj Więcej
źródło
1
Oprócz zmniejszonej liczby wyszukiwań wspomnianej w odpowiedziach, niektóre implementacje (np. Magazyn kolumn serwera SQL) będą kompresować dane. Zapobiega to filtrowaniu wierszy, ale może dodatkowo poprawić wydajność zapytań.
Tempo

Odpowiedzi:

49

Jak działają kolumnowe bazy danych?
Kolumnowa baza danych to pojęcie, a raczej szczególna architektura / implementacja . Innymi słowy, nie ma jednego konkretnego opisu działania tych baz danych; w rzeczywistości kilka z nich opiera się na tradycyjnym, zorientowanym wierszowo systemie DBMS, po prostu przechowując informacje w tabelach z jedną (lub raczej dwoma) kolumnami (i dodając niezbędną warstwę, aby uzyskać dostęp do danych kolumnowych w łatwy sposób).

Czym różnią się od relacyjnych baz danych? Ogólnie różnią się one od tradycyjnych (zorientowanych wierszowo) baz danych pod względem ...

  • występ...
  • wymagania dotyczące przechowywania ...
  • łatwość modyfikacji schematu ...

... w określonych przypadkach użycia DBMS .
W szczególności oferują zalety we wspomnianych obszarach, gdy typowym zastosowaniem jest obliczenie zagregowanych wartości w ograniczonej liczbie kolumn, w przeciwieństwie do próby pobrania wszystkich / większości kolumn dla danej jednostki.

Czy istnieje wersja próbna kolumnowej bazy danych, którą mogę zainstalować, aby się nią bawić? (Jestem na Windows 7) Tak, są komercyjne, bezpłatne i otwarte implementacje kolumnowych baz danych. Zobacz listę na końcu artykułu w Wikipedii na początek.
Należy pamiętać, że kilka z tych implementacji zostało wprowadzonych w celu zaspokojenia określonej potrzeby (np. Bardzo małe rozmiary, wysoce kompresowalna dystrybucja danych lub emulacja zapasowej macierzy itp.), A nie zapewnienie ogólnego systemu DBMS zorientowanego na kolumny jako takiego.

Uwaga: Uwaga dotycząca „orientacji na jeden cel” kilku kolumnowych DBMS nie jest krytyką tych implementacji, ale raczej dodatkowym wskazaniem, że takie podejście do DBMS odbiega od bardziej „naturalnego” (iz pewnością szerzej używanego) podejścia do przechowywanie jednostek rekordu. W rezultacie podejście to jest stosowane, gdy podejście zorientowane na wiersz nie jest satysfakcjonujące, a zatem ma tendencję do
a) być ukierunkowane na określony cel b) otrzymywać mniej zasobów / zainteresowania niż praca nad „Ogólnym celem”, „Wypróbowane i Tested ”, podejście tabelaryczne.

Wstępnie model danych Entity-Attribute-Value (EAV) może być alternatywną strategią przechowywania, którą warto rozważyć. Chociaż różni się od „czystego” modelu kolumnowego DB, EAV ma kilka cech charakterystycznych dla kolumnowych DB.

mjv
źródło
253

Jak działają kolumnowe bazy danych? Definiująca koncepcja magazynu kolumn polega na tym, że wartości tabeli są przechowywane w sposób ciągły według kolumn. Tak więc klasyczna tabela dostawców z bazy danych dostawców i części 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

byłby przechowywany na dysku lub w pamięci, na przykład:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

W przeciwieństwie do tradycyjnego magazynu wierszy, który przechowywałby dane w następujący sposób:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

Z tej prostej koncepcji wypływają wszystkie fundamentalne różnice w wydajności, lepsze lub gorsze, między magazynem kolumnowym a magazynem wierszy. Na przykład sklep kolumnowy będzie się wyróżniał w przeprowadzaniu agregacji, takich jak sumy i średnie, ale wstawienie pojedynczego wiersza może być kosztowne, podczas gdy odwrotność jest prawdziwa w przypadku sklepów wierszowych. Powinno to wynikać z powyższego schematu.

Czym różnią się od relacyjnych baz danych? Baza danych relacji to koncepcja logiczna. Kolumnowa baza danych lub magazyn kolumn to pojęcie fizyczne. Zatem te dwa terminy nie są porównywalne w żaden znaczący sposób. DMBS zorientowane na kolumny mogą być relacyjne lub nie, tak samo jak DBMS zorientowane na wiersz może mniej więcej przestrzegać zasad relacji.

Paul Mansour
źródło
22
Wydaje się to lepsze niż akceptowana odpowiedź, ale nie jestem ekspertem. Głosuj za.
Rob Grant
2
Bazy danych zorientowane na kolumny są używane w przypadku zapytań dotyczących agregacji określonych kolumn, takich jak raporty sprzedaży. Chodzi o to, że jeśli używasz bazy danych zorientowanej na wiersz, wszystkie wiersze (bloki) muszą zostać przeniesione do pamięci głównej, co obejmuje dużo czasu wyszukiwania z dysku, aby przenieść cały blok z dysku do pamięci RAM, nawet jeśli interesuje Cię tylko kolumna który pomaga dostarczyć raport sprzedaży. Podczas gdy w schemacie zorientowanym na kolumny kolumny są przechowywane w ciągłych blokach, co powoduje mniejsze wyszukiwania ze względu na mniejszą liczbę bloków. Dlatego bazy danych kolumn są używane do OLAP, podczas gdy zorientowane wierszowo są używane do rzeczy OLTP.
bharatj
4

Powiedziałbym, że najlepszym kandydatem do zrozumienia kolumnowych baz danych jest sprawdzenie HBase ( Apache Hbase ). Pobierasz kod i eksplorujesz dalej, aby dowiedzieć się o implementacji.

hari_sree
źródło
2

Ponadto bazy danych kolumnowe mają wbudowane powinowactwo do kompresji danych, a proces ładowania jest wyjątkowy. Oto artykuł, który napisałem w 2008 roku, który wyjaśnia nieco więcej.

Możesz być także zainteresowany nowym raportem Carla Olofsona z IDC na temat technologii DBMS trzeciej generacji. Omawia kolumnową, et al. Jeśli nie jesteś klientem IDC, możesz go bezpłatnie pobrać na naszej stronie. On również prowadzi webinarium 16 czerwca (również na naszej stronie).

(BTW, jeden komentarz powyżej zawiera listę asterdata, ale nie sądzę, żeby były kolumnowe.)

kim stanick
źródło
Raport IDC można pobrać pod adresem: paraccel.com/press/3rd_generation_database_technology
kim stanick
Aster Data jest relacyjną bazą danych MPP i ma natywną obsługę tabel kolumnowych.
topchef
@kimstanick, adres URL paczki nie działa.
user674669
2

Aby zrozumieć, czym jest baza danych zorientowana na kolumny, lepiej jest porównać ją z bazą danych zorientowaną na wiersz.

Bazy danych zorientowane wierszowo (np. MS SQL Server i SQLite) są zaprojektowane tak, aby efektywnie zwracać dane dla całego wiersza. Robi to, przechowując razem wszystkie wartości kolumn w wierszu. Bazy danych zorientowane wierszowo są dobrze dostosowane do systemów OLTP (np. Sprzedaży detalicznej i systemów transakcji finansowych).

Bazy danych zorientowane na kolumny są przeznaczone do wydajnego zwracania danych dla ograniczonej liczby kolumn. Czyni to poprzez przechowywanie wszystkich wartości w kolumnie razem. Dwie szeroko używane bazy danych zorientowane na kolumny to Apache Hbase i Google BigTable (używane przez Google do wyszukiwania, analizy, map i Gmaila). Nadają się do projektów Big Data. Baza danych zorientowana na kolumny będzie się wyróżniać w operacjach odczytu na ograniczonej liczbie kolumn, jednak operacja zapisu będzie kosztowna w porównaniu do baz danych zorientowanych wierszowo.

Więcej: https://en.wikipedia.org/wiki/Column-oriented_DBMS

Razan Paul
źródło
1

Informacje o produkcie. To może pomóc. Miały one na celu polecanie produktów w wyszukiwarce Google.

http://www.vertica.com/

http://www.paraccel.com/

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

S.Lott
źródło
Jedną rzeczą, na którą należy zwrócić uwagę w przypadku Vertica, jest to, że widziałem w sieci odniesienie do kosztu licencji wynoszącego 150 000 USD / TB przechowywanych danych. więc to nie jest tanie.
Mark
@Mark: Koszt nie jest problemem. Informacja jest problemem. Jeśli OP potrzebuje informacji, dostawcy są często najlepszym możliwym źródłem.
S.Lott
1
Amazon oferuje super szybkie przechowywanie danych RedShift poniżej 1000 USD za terabajt rocznie, jeśli nie szukasz szczególnie kolumnowego.
mevdiven
1

kx to kolejna kolumnowa baza danych, używana na przykład w sektorze finansowym. Jednak licencja kosztuje około 50 000 $, gdy ostatnio sprawdzałem. Nie potrzeba optymalizacji, nie ma indeksu potrzebna, ponieważ kx ma potężne operatorów (odpowiedników matlab: .*, kron, bsxfun, ...).

user2987828
źródło