Sütunlu veritabanı nedir?


98

Bir süredir antrepo ile çalışıyorum.

Columnar Databases ve veri erişimi için sundukları hız ilgimi çekiyor.

Çok parçalı sorum var:

  • Sütunlu Veritabanları nasıl çalışır?
  • İlişkisel veritabanlarından nasıl farklıdırlar?

1
Cevaplarda belirtilen azaltılmış arama sayısına ek olarak, bazı uygulamalar (örn. SQL sunucusunun sütun deposu) verileri sıkıştıracaktır. Bu, satır filtrelemeyi önler ancak ek olarak sorgu performansını artırabilir.
Pace

Yanıtlar:


50

Sütunlu Veritabanları nasıl çalışır?
Sütunlu veritabanı, belirli bir mimari / uygulamadan ziyade bir kavramdır . Diğer bir deyişle, bu veritabanlarının nasıl çalıştığına dair belirli bir açıklama yoktur; aslında, birçoğu geleneksel, satır yönelimli DBMS üzerine inşa edilmiştir, basitçe bilgileri bir (veya daha ziyade iki) sütunlu tablolarda depolamaktadır (ve sütunlu verilere kolay bir şekilde erişmek için gerekli katmanı ekleyerek).

İlişkisel veritabanlarından nasıl farklıdırlar? Genellikle geleneksel (satır odaklı) veritabanlarından farklıdırlar ...

  • verim...
  • depolama gereksinimleri ...
  • şemanın değiştirilme kolaylığı ...

... DBMS'lerin belirli kullanım durumlarında .
Özellikle, belirli bir varlık için tüm / çoğu sütunları denemek ve almak yerine, tipik kullanım sınırlı sayıda sütunda toplam değerleri hesaplamak olduğunda belirtilen alanlarda avantajlar sunarlar.

Oynamak için yükleyebileceğim sütunlu bir veritabanının deneme sürümü var mı? (Windows 7 kullanıyorum) Evet, sütunlu veritabanlarının ticari, ücretsiz ve ayrıca açık kaynaklı uygulamaları var. Başlangıçiçin Wikipedia makalesinin sonundaki listeye bakın.
Bu uygulamalardan birkaçının ele almak için tanıtıldığına dikkat edin. , genel amaçlı sütun odaklı bir DBMS sağlamaktan ziyade belirli bir ihtiyacı (örneğin çok küçük ayak izi, yüksek oranda sıkıştırılabilir veri dağıtımı veya yedek matris öykünmesi vb.) Karşılamak .

Not: Çeşitli sütunlu DBMS'lerin "tek amaçlı yönelimi" hakkındaki açıklama, bu uygulamaların bir eleştirisi değil, DBMS'ler için böyle bir yaklaşımın daha "doğal" (ve kesinlikle daha geniş olarak kullanılan) kayıt varlıklarının depolanması. Sonuç olarak, bu yaklaşım, sıra odaklı yaklaşım tatmin edici olmadığında kullanılır ve bu nedenle
a) belirli bir amaç için hedeflendiğinde b) "Genel Amaçlı", "Denenmiş ve Test edilmiş ", tablo yaklaşımı.

Geçici olarak, Varlık-Öznitelik-Değer (EAV) veri modeli, göz önünde bulundurmak isteyebileceğiniz alternatif bir depolama stratejisi olabilir. "Saf" Columnar DB modelinden farklı olmasına rağmen, EAV Columnar DB'lerin birkaç özelliğini paylaşır.


253

Sütunlu veritabanları nasıl çalışır? Bir sütun deposunun tanımlayıcı kavramı, bir tablonun değerlerinin sütun ile bitişik olarak depolanmasıdır. Böylece CJ Date'in tedarikçi ve parça veritabanındaki klasik tedarikçi tablosu:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

diskte veya bellekte şu şekilde depolanır:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Bu, verileri daha çok şu şekilde depolayan geleneksel bir satır deposunun tersidir:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

Bu basit konseptten, bir sütun deposu ve bir sıra deposu arasındaki iyi ya da kötü performansın tüm temel farklılıkları akar. Örneğin, bir sütun deposu, toplamlar ve ortalamalar gibi toplamalar yapmakta mükemmeldir, ancak tek bir satır eklemek pahalı olabilirken, tersi satır depoları için geçerlidir. Bu, yukarıdaki diyagramdan anlaşılmalıdır.

İlişkisel veritabanlarından nasıl farklıdırlar? İlişki veri tabanı mantıklı bir kavramdır. Sütunlu bir veritabanı veya sütun deposu fiziksel bir kavramdır. Bu nedenle, iki terim hiçbir anlamlı şekilde karşılaştırılamaz. Sütun yönelimli DMBS'ler ilişkisel olabilir veya olmayabilir, tıpkı satır yönelimli DBMS'lerin ilişkisel ilkelere az çok bağlı olması gibi.


22
Bu kabul edilen cevaptan daha iyi görünüyor, ama ben uzman değilim. Olumlu oy verin.
Rob Grant

2
Satış raporu gibi belirli sütunlardaki toplamaların sorgulandığı durumlarda, sütun odaklı veritabanları kullanılır. Buradaki nokta, satır odaklı veritabanı kullanıyorsanız, tüm satırların (blokların) ana belleğe getirilmesi gerekir; bu, tüm bloğu diskten ram'a getirmek için diskten çok fazla arama süresi içerir, yalnızca sütunla ilgileniyor olsanız bile satış raporu sağlamanıza yardımcı olur. Oysa sütun yönelimli şemada, sütunlar bloklarda bitişik olarak depolanır, bu da daha az sayıda blok nedeniyle daha az arama yapar. Bu nedenle OLAP için Sütun veritabanları kullanılırken, OLTP öğeleri için satır yönelimli kullanılır.
bharatj

4

Sütun tabanlı veritabanları hakkında anlaşılması gereken en iyi adayın HBase'yi ( Apache Hbase ) kontrol etmek olduğunu söyleyebilirim . Kodu kontrol edin ve uygulama hakkında daha fazlasını keşfedin.


2

Ayrıca, Columnar DB'ler, veri sıkıştırma için yerleşik bir afiniteye sahiptir ve yükleme işlemi benzersizdir. İşte 2008'de yazdığım ve biraz daha fazlasını açıklayan bir makale .

IDC'den Carl Olofson'un 3. nesil DBMS teknolojisi üzerine yeni bir raporu da ilginizi çekebilir. Sütunlu, vd. IDC müşterisi değilseniz sitemizden ücretsiz olarak edinebilirsiniz. O da 16 Haziran'da bir web semineri yapıyor (ayrıca sitemizde).

(BTW, yukarıdaki bir yorum asterdata'yı listeliyor, ancak bunların sütunlu olduklarını düşünmüyorum.)


IDC raporunu şu adresten
kim stanick

Aster Data, MPP ilişkisel veritabanıdır ve sütunlu tablolar için yerel desteğe sahiptir.
topchef

@kimstanick, paraccel URL'si öldü.
user674669

2

Sütun odaklı veritabanının ne olduğunu anlamak için, onu satır odaklı veritabanıyla karşılaştırmak daha iyidir.

Satır odaklı veritabanları (örn. MS SQL Server ve SQLite), tüm satır için verimli bir şekilde veri döndürmek üzere tasarlanmıştır. Bunu, bir satırın tüm sütun değerlerini birlikte depolayarak yapar. Satır odaklı veritabanları, OLTP sistemleri için çok uygundur (örneğin, perakende satışlar ve finansal işlem sistemleri).

Sütun odaklı veritabanları , sınırlı sayıda sütun için verimli bir şekilde veri döndürmek üzere tasarlanmıştır. Bunu, bir sütunun tüm değerlerini birlikte depolayarak yapar. Yaygın olarak kullanılan iki Sütun odaklı veritabanı Apache Hbase ve Google BigTable'dır (Google tarafından Arama, Analytics, Haritalar ve Gmail için kullanılır). Büyük veri projeleri için uygundurlar. Sütun tabanlı bir veritabanı, sınırlı sayıda sütunda okuma işlemlerinde üstünlük sağlayacaktır, ancak yazma işlemi satır tabanlı veri tabanlarına kıyasla pahalı olacaktır.

Daha fazlası için: https://en.wikipedia.org/wiki/Column-oriented_DBMS


1

Ürün Bilgisi. Bu yardımcı olabilir. Bunlar, bir Google aramasında öne çıkan ürünler içindi.

http://www.vertica.com/

http://www.paraccel.com/

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


Vertica ile ilgili dikkat edilmesi gereken bir nokta, web'de lisans maliyetinin depolanan 150.000 $ / TB veri olduğuna dair bir referans gördüğümdür. bu yüzden ucuz değil.
Mark

@Mark: Konu maliyet değil. Konu bilgi. OP bilgi isterse, satıcılar genellikle mümkün olan en iyi kaynaktır.
S. Lot

1
Amazon, özellikle Columnar'ı aramıyorsanız, süper hızlı RedShift veri depolama alanını terabayt başına yılda 1.000 ABD dolarının altında sunar.
mevdiven

1

kx , örneğin finans sektöründe kullanılan başka bir sütun veritabanıdır. Yine de son kontrol ettiğimde lisans biraz 50 bin dolar. Hiçbir optimizasyon ihtiyacı yok indeks ihtiyacı kx güçlü operatörler olduğundan (matlab eşdeğerleri: .*, kron, bsxfun, ...).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.