Apa itu database kolom?

98

Saya telah bekerja dengan pergudangan untuk sementara waktu sekarang.

Saya tertarik dengan Columnar Database dan kecepatan yang mereka tawarkan untuk pengambilan data.

Saya memiliki pertanyaan multi-bagian:

  • Bagaimana cara kerja Basis Data Kolom?
  • Bagaimana mereka berbeda dari database relasional?
Raj Lebih
sumber
1
Selain pengurangan # pencarian yang disebutkan dalam jawaban, beberapa implementasi (misalnya penyimpanan kolom SQL server) akan memampatkan data. Ini mencegah pemfilteran baris tetapi juga dapat meningkatkan kinerja kueri.
Pace

Jawaban:

49

Bagaimana cara kerja Basis Data Kolom?
Database kolom adalah konsep yang lebih merupakan arsitektur / implementasi tertentu . Dengan kata lain, tidak ada satu deskripsi khusus tentang bagaimana database ini bekerja; memang, beberapa dibangun di atas DBMS tradisional, berorientasi baris, hanya menyimpan info dalam tabel dengan satu (atau lebih tepatnya dua) kolom (dan menambahkan lapisan yang diperlukan untuk mengakses data kolom dengan cara yang mudah).

Bagaimana mereka berbeda dari database relasional? Mereka umumnya berbeda dari database tradisional (berorientasi baris) sehubungan dengan ...

  • kinerja ...
  • persyaratan penyimpanan ...
  • kemudahan modifikasi skema ...

... dalam kasus penggunaan DBMS tertentu .
Secara khusus mereka menawarkan keuntungan di area yang disebutkan ketika penggunaan tipikal adalah untuk menghitung nilai agregat pada sejumlah kolom terbatas, sebagai lawan untuk mencoba dan mengambil semua / sebagian besar kolom untuk entitas tertentu.

Apakah ada versi percobaan dari database kolom yang dapat saya instal untuk dimainkan? (Saya menggunakan Windows 7) Ya, ada implementasi database kolom yang komersial, gratis, dan juga open-source. Lihat daftar di akhir artikel Wikipedia untuk pemula.
Berhati-hatilah karena beberapa implementasi ini diperkenalkan untuk memenuhi kebutuhan tertentu (katakanlah footprint yang sangat kecil, distribusi data yang sangat dapat dikompres, atau emulasi matriks cadangan, dll.) Daripada menyediakan DBMS berorientasi kolom tujuan umum itu sendiri.

Catatan: Pernyataan tentang "orientasi tujuan tunggal" dari beberapa DBMS kolumnar bukan merupakan kritik atas implementasi ini, tetapi lebih merupakan indikasi tambahan bahwa pendekatan DBMS seperti itu menyimpang dari pendekatan yang lebih "alami" (dan tentunya lebih luas digunakan) untuk menyimpan entitas rekaman. Akibatnya, pendekatan ini digunakan ketika pendekatan berorientasi baris tidak memuaskan, dan oleh karena itu dan cenderung
a) ditargetkan untuk tujuan tertentu b) menerima lebih sedikit sumber daya / minat daripada mengerjakan "Tujuan Umum", "Mencoba dan Diuji ", pendekatan tabel.

Secara tentatif, model data Entity-Attribute-Value (EAV), mungkin merupakan strategi penyimpanan alternatif yang mungkin ingin Anda pertimbangkan. Meskipun berbeda dari model Columnar DB "murni", EAV memiliki beberapa karakteristik yang sama dari Columnar DB.

mjv
sumber
253

Bagaimana cara kerja database kolom? Konsep yang menentukan dari penyimpanan-kolom adalah bahwa nilai-nilai tabel disimpan berdekatan menurut kolom. Jadi tabel pemasok klasik dari pemasok CJ Date dan database bagian:

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

akan disimpan di disk atau di memori seperti:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Ini berbeda dengan rowstore tradisional yang akan menyimpan data lebih banyak seperti ini:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

Dari konsep sederhana ini mengalir semua perbedaan mendasar dalam kinerja, baik atau buruk, antara penyimpanan kolom dan penyimpanan baris. Misalnya, penyimpanan kolom akan unggul dalam melakukan agregasi seperti total dan rata-rata, tetapi menyisipkan satu baris bisa mahal, sementara kebalikannya berlaku untuk penyimpanan baris. Ini harus terlihat dari diagram di atas.

Bagaimana mereka berbeda dari database relasional? Database relasi adalah konsep logis. Database kolom, atau penyimpanan kolom, adalah konsep fisik. Dengan demikian kedua istilah tersebut tidak dapat dibandingkan dalam arti yang berarti. DMBS berorientasi kolom mungkin relasional atau tidak, sama seperti DBMS berorientasi baris mungkin lebih atau kurang mengikuti prinsip-prinsip relasional.

Paul Mansour
sumber
22
Ini sepertinya lebih baik daripada jawaban yang diterima, tapi saya bukan ahli. Suara positif.
Rob Grant
2
Database berorientasi kolom digunakan di mana agregasi pada kolom tertentu dipertanyakan seperti laporan penjualan. Intinya di sini adalah jika Anda menggunakan database berorientasi baris, maka semua baris (blok) perlu dibawa ke memori utama, yang mencakup banyak waktu pencarian dari disk untuk membawa semua blok dari disk ke ram, bahkan jika Anda hanya tertarik pada kolom yang membantu Anda memberikan laporan penjualan. Sedangkan pada kolom skema berorientasi kolom disimpan berdekatan dalam blok, yang membuat pencarian lebih sedikit karena jumlah blok yang lebih sedikit. Jadi database kolom digunakan untuk OLAP, sedangkan orientasi baris digunakan untuk barang OLTP.
bharatj
4

Saya akan mengatakan kandidat terbaik untuk memahami tentang database berorientasi kolom adalah memeriksa HBase ( Apache Hbase ). Anda memeriksa kode dan mempelajari lebih lanjut untuk mencari tahu tentang penerapannya.

hari_sree
sumber
2

Selain itu, Columnar DB memiliki afinitas bawaan untuk kompresi data, dan proses pemuatannya unik. Inilah artikel yang saya tulis pada tahun 2008 yang menjelaskan lebih banyak.

Anda juga mungkin tertarik dengan laporan baru dari IDC's Carl Olofson tentang teknologi DBMS generasi ke-3. Ini membahas kolom, et al. Jika Anda bukan klien IDC, Anda bisa mendapatkannya secara gratis di situs kami. Dia juga melakukan webinar pada 16 Juni (juga di situs kami).

(BTW, satu komentar di atas mencantumkan asterdata tetapi menurut saya tidak berbentuk kolom.)

kim stanick
sumber
Anda bisa mendapatkan laporan IDC di: paraccel.com/press/3rd_generation_database_technology
kim stanick
Aster Data adalah database relasional MPP dan memiliki dukungan asli untuk tabel kolom.
topchef
@kimstanick, URL parsel sudah mati.
pengguna674669
2

Untuk memahami apa itu database berorientasi kolom, lebih baik membandingkannya dengan database berorientasi baris.

Database berorientasi baris (misalnya MS SQL Server dan SQLite) dirancang untuk mengembalikan data secara efisien untuk seluruh baris. Itu dilakukan dengan menyimpan semua nilai kolom dari satu baris bersama-sama. Database berorientasi baris sangat cocok untuk sistem OLTP (misalnya, penjualan eceran, dan sistem transaksi keuangan).

Database berorientasi kolom dirancang untuk mengembalikan data secara efisien untuk jumlah kolom yang terbatas. Itu dilakukan dengan menyimpan semua nilai kolom bersama-sama. Dua database berorientasi Kolom yang banyak digunakan adalah Apache Hbase dan Google BigTable (digunakan oleh Google untuk Penelusuran, Analytics, Maps, dan Gmail). Mereka cocok untuk proyek data besar. Database berorientasi kolom akan unggul dalam operasi baca pada jumlah kolom yang terbatas, namun operasi tulis akan mahal dibandingkan dengan database berorientasi baris.

Untuk lebih lanjut: https://en.wikipedia.org/wiki/Column-oriented_DBMS

Razan Paul
sumber
1

Informasi produk. Ini mungkin membantu. Ini untuk produk unggulan di pencarian Google.

http://www.vertica.com/

http://www.paraccel.com/

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

S. Lott
sumber
Satu hal yang perlu diperhatikan tentang Vertica adalah saya telah melihat referensi di web tentang biaya lisensi yang disimpan sebesar $ 150rb / TB. jadi tidak murah.
Tandai
@ Mark: Masalahnya bukan biaya. Informasi adalah masalahnya. Jika OP menginginkan informasi, vendor seringkali merupakan sumber terbaik.
S. Lotot
1
Amazon menawarkan penyimpanan data RedShift super cepat di bawah $ 1.000 per terabyte per tahun jika Anda tidak terlalu mencari Columnar.
mevdiven
1

kx adalah database kolom lain, misalnya digunakan di sektor keuangan. Lisensi ini agak $ 50K terakhir kali saya periksa. Tidak ada optimasi diperlukan, tidak ada indeks diperlukan, karena kx memiliki operator yang kuat (matlab setara: .*, kron, bsxfun, ...).

pengguna2987828
sumber