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?
Odpowiedzi:
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 ...
... 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.
źródło
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:
byłby przechowywany na dysku lub w pamięci, na przykład:
W przeciwieństwie do tradycyjnego magazynu wierszy, który przechowywałby dane w następujący sposób:
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.
źródło
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.
źródło
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.)
źródło
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
źródło
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
źródło
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
, ...).źródło