Secara umum, database menyimpan data dalam format baris dan menggunakan SQL sebagai bahasa kueri untuk mengaksesnya, tetapi metode penyimpanan ini tidak selalu yang terbaik dalam hal kinerja, tergantung pada beban kerja itu sendiri. Jika Anda ingin mendapatkan data statistik, kemungkinan besar Anda harus menggunakan mesin penyimpanan basis data jenis lain.
Di blog ini, kita akan melihat apa itu Columnar Storage dan, lebih spesifiknya, apa itu MariaDB ColumnStore, dan bagaimana cara menginstalnya agar dapat memproses data besar Anda dengan cara yang lebih berperforma untuk tujuan analitis.
Penyimpanan Kolom
Penyimpanan Kolom adalah jenis mesin database yang menyimpan data menggunakan model berorientasi kolom.
Misalnya, dalam database relasional umum, kita dapat memiliki tabel seperti ini:
id | nama depan | nama belakang | usia |
1001 | Oliver | Smith | 23 |
1002 | Harry | Jones | 65 |
1003 | George | Williams | 30 |
1004 | Jack | Taylor | 41 |
Di sinilah mesin Penyimpanan Kolom berperan. Alih-alih menyimpan data dalam baris, data disimpan dalam kolom. Jadi, jika Anda perlu mengetahui usia rata-rata, akan lebih baik untuk menggunakannya, karena Anda akan memiliki struktur seperti ini:
id | nama depan | id | nama belakang | id | usia | ||
1001 | Oliver | 1001 | Smith | 1001 | 23 | ||
1002 | Harry | 1002 | Jones | 1002 | 65 | ||
1003 | George | 1003 | Williams | 1003 | 30 | ||
1004 | Jack | 1004 | Taylor | 1004 | 41 |
di sisi lain, biaya melakukan penyisipan tunggal lebih tinggi daripada database berorientasi baris, dan ini bukan pilihan terbaik untuk kueri “PILIH *” atau operasi transaksional, jadi kami dapat mengatakan bahwa ini lebih cocok di database OLAP (Online Analytical Processing) daripada database OLTP (Online Transaction Processing).
Toko Kolom MariaDB
Ini adalah mesin penyimpanan berbentuk kolom yang menggunakan arsitektur data terdistribusi paralel secara masif. Ini adalah unduhan terpisah, tetapi akan tersedia sebagai mesin penyimpanan untuk Server MariaDB dari MariaDB 10.5.4, yang masih dalam pengembangan pada saat blog ini ditulis.
Ini dirancang untuk data besar, menggunakan manfaat penyimpanan kolumnar untuk memiliki kinerja hebat dengan respons waktu nyata terhadap kueri analitik.
Arsitektur MariaDB ColumnStore
Ini terdiri dari banyak (atau hanya 1) Server MariaDB, beroperasi sebagai modul, bekerja bersama. Modul ini mencakup Pengguna, Performa, dan Penyimpanan.
Modul Pengguna
Ini adalah contoh Server MariaDB yang dikonfigurasi untuk beroperasi sebagai front-end ke ColumnStore.
Modul Pengguna mengelola dan mengontrol operasi kueri pengguna akhir. Saat klien menjalankan kueri, kueri diurai dan didistribusikan ke satu atau lebih Modul Kinerja untuk memproses kueri. Modul Pengguna kemudian mengumpulkan hasil kueri dan merakitnya ke dalam kumpulan hasil untuk kembali ke klien.
Tujuan utama Modul Pengguna adalah untuk menangani penskalaan konkurensi. Itu tidak pernah secara langsung menyentuh file database dan tidak memerlukan visibilitas untuk mereka.
Modul Kinerja
Ini bertanggung jawab untuk menyimpan, mengambil, dan mengelola data, memproses permintaan blok untuk operasi kueri, dan untuk meneruskannya kembali ke modul Pengguna atau modul untuk menyelesaikan permintaan kueri. Itu tidak melihat kueri itu sendiri, tetapi hanya serangkaian instruksi yang diberikan kepadanya oleh Modul Pengguna.
Modul memilih data dari disk dan menyimpannya di dalam buffer shared-nothing yang merupakan bagian dari server yang menjalankannya.
Memiliki beberapa node Modul Kinerja, mekanisme detak jantung memastikan bahwa semua node online dan ada failover transparan jika node tertentu gagal.
Penyimpanan
Anda dapat menggunakan penyimpanan lokal (Modul Kinerja), atau penyimpanan bersama (SAN), untuk menyimpan data.
Saat Anda membuat tabel di MariaDB ColumnStore, sistem membuat setidaknya satu file per kolom dalam tabel. Jadi, misalnya, tabel yang dibuat dengan tiga kolom akan memiliki minimal tiga objek logis yang dapat dialamatkan secara terpisah yang dibuat di SAN atau di disk lokal Modul Kinerja.
ColumnStore mengoptimalkan strategi kompresinya untuk kinerja membaca dari disk. Ini disetel untuk mempercepat laju dekompresi, memaksimalkan manfaat kinerja saat membaca dari disk.
MariaDB ColumnStore menggunakan Version Buffer untuk menyimpan blok disk yang sedang dimodifikasi, mengelola rollback transaksi, dan melayani fungsi MVCC (multi-version concurrency control) atau "snapshot read" dari database. Ini memungkinkannya untuk menawarkan tampilan database yang konsisten.
Cara Kerja MariaDB CloumnStore
Sekarang, mari kita lihat bagaimana MariaDB ColumnStore memproses kueri pengguna akhir, menurut dokumentasi resmi MariaDB ColumnStore:
- Klien mengeluarkan kueri ke Server MariaDB yang berjalan di Modul Pengguna. Server melakukan operasi tabel untuk semua tabel yang diperlukan untuk memenuhi permintaan dan memperoleh rencana eksekusi kueri awal.
- Menggunakan antarmuka mesin penyimpanan MariaDB, ColumnStore mengonversi objek tabel server menjadi objek ColumnStore. Objek ini kemudian dikirim ke proses Modul Pengguna.
- Modul Pengguna mengonversi rencana eksekusi MariaDB dan mengoptimalkan objek yang diberikan menjadi rencana eksekusi ColumnStore. Kemudian menentukan langkah-langkah yang diperlukan untuk menjalankan kueri dan urutan yang harus dijalankan.
- Modul Pengguna kemudian berkonsultasi dengan Peta Luas untuk menentukan Modul Kinerja mana yang akan dikonsultasikan untuk data yang dibutuhkan, kemudian melakukan Penghapusan Luas, menghilangkan Modul Kinerja apa pun dari daftar yang hanya berisi data di luar jangkauan apa yang dibutuhkan kueri.
- Modul Pengguna kemudian mengirimkan perintah ke satu atau beberapa Modul Kinerja untuk melakukan operasi blok I/O.
- Modul atau Modul Kinerja melakukan penyaringan predikat, pemrosesan gabungan, agregasi awal data dari penyimpanan lokal atau eksternal, lalu mengirim data kembali ke Modul Pengguna.
- Modul Pengguna melakukan agregasi kumpulan hasil akhir dan menyusun kumpulan hasil untuk kueri.
- Modul Pengguna / ExeMgr mengimplementasikan perhitungan fungsi jendela apa pun, serta penyortiran apa pun yang diperlukan pada kumpulan hasil. Kemudian mengembalikan hasil-set ke server.
- Server MariaDB melakukan semua fungsi daftar pilihan, ORDER BY dan LIMIT operasi pada kumpulan hasil.
- Server MariaDB mengembalikan kumpulan hasil ke klien.
Cara Menginstal MariaDB ColumnStore
Sekarang, mari kita lihat cara menginstalnya. Untuk informasi lebih lanjut, Anda dapat memeriksa dokumentasi resmi MariaDB.
Kami akan menggunakan CentOS 7 sebagai sistem operasi, tetapi Anda dapat menggunakan OS apa pun yang didukung. Paket instalasi tersedia untuk diunduh di sini.
Pertama, Anda perlu menginstal repositori Paket Ekstra:
$ yum install -y epel-release
Kemudian, berikut paket yang dibutuhkan:
$ yum install -y boost expect perl perl-DBI openssl zlib snappy libaio perl-DBD-MySQL net-tools wget jemalloc numactl-libs
Dan sekarang, mari unduh MariaDB ColumnStore versi terbaru, uncompress, dan instal:
$ wget https://downloads.mariadb.com/ColumnStore/latest/centos/x86_64/7/mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz
$ tar zxf mariadb-columnstore-1.2.5-1-centos7.x86_64.rpm.tar.gz
$ rpm -ivh mariadb-columnstore-1.2.5-1-*.rpm
Setelah selesai, Anda akan melihat pesan berikut:
Langkah selanjutnya adalah:
If installing on a pm1 node using non-distributed install
/usr/local/mariadb/columnstore/bin/postConfigure
If installing on a pm1 node using distributed install
/usr/local/mariadb/columnstore/bin/postConfigure -d
If installing on a non-pm1 using the non-distributed option:
/usr/local/mariadb/columnstore/bin/columnstore start
Jadi, untuk contoh ini, mari kita jalankan perintah:
$ /usr/local/mariadb/columnstore/bin/postConfigure
Sekarang, ia akan menanyakan beberapa informasi tentang penginstalan:
This is the MariaDB ColumnStore System Configuration and Installation tool.
It will Configure the MariaDB ColumnStore System and will perform a Package
Installation of all of the Servers within the System that is being configured.
IMPORTANT: This tool requires to run on the Performance Module #1
Prompting instructions:
Press 'enter' to accept a value in (), if available or
Enter one of the options within [], if available, or
Enter a new value
===== Setup System Server Type Configuration =====
There are 2 options when configuring the System Server Type: single and multi
'single' - Single-Server install is used when there will only be 1 server configured
on the system. It can also be used for production systems, if the plan is
to stay single-server.
'multi' - Multi-Server install is used when you want to configure multiple servers now or
in the future. With Multi-Server install, you can still configure just 1 server
now and add on addition servers/modules in the future.
Select the type of System Server install [1=single, 2=multi] (2) > 1
Performing the Single Server Install.
Enter System Name (columnstore-1) >
===== Setup Storage Configuration =====
----- Setup Performance Module DBRoot Data Storage Mount Configuration -----
There are 2 options when configuring the storage: internal or external
'internal' - This is specified when a local disk is used for the DBRoot storage.
High Availability Server Failover is not Supported in this mode
'external' - This is specified when the DBRoot directories are mounted.
High Availability Server Failover is Supported in this mode.
Select the type of Data Storage [1=internal, 2=external] (1) >
Enter the list (Nx,Ny,Nz) or range (Nx-Nz) of DBRoot IDs assigned to module 'pm1' (1) >
===== Performing Configuration Setup and MariaDB ColumnStore Startup =====
NOTE: Setting 'NumBlocksPct' to 50%
Setting 'TotalUmMemory' to 25% of total memory.
Running the MariaDB ColumnStore setup scripts
post-mysqld-install Successfully Completed
post-mysql-install Successfully Completed
Starting MariaDB Columnstore Database Platform
Starting MariaDB ColumnStore Database Platform Starting, please wait ....... DONE
System Catalog Successfull Created
MariaDB ColumnStore Install Successfully Completed, System is Active
Enter the following command to define MariaDB ColumnStore Alias Commands
. /etc/profile.d/columnstoreAlias.sh
Enter 'mcsmysql' to access the MariaDB ColumnStore SQL console
Enter 'mcsadmin' to access the MariaDB ColumnStore Admin console
NOTE: The MariaDB ColumnStore Alias Commands are in /etc/profile.d/columnstoreAlias.sh
Jalankan skrip yang dihasilkan:
$ . /etc/profile.d/columnstoreAlias.sh
Sekarang Anda dapat mengakses database dengan menjalankan perintah “mcsmysql”:
$ mcsmysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.3.16-MariaDB-log Columnstore 1.2.5-1
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Itu dia. Sekarang, Anda dapat memuat data di database MariaDB ColumnStore Anda.
Kesimpulan
Penyimpanan Kolom adalah alternatif penyimpanan basis data yang bagus untuk menangani data untuk tujuan analitik. MariaDB ColumnStore adalah mesin Penyimpanan Kolom yang dirancang untuk tugas ini, dan seperti yang dapat kita lihat, penginstalannya cukup mudah, jadi jika Anda memerlukan database OLAP atau memproses data besar, Anda harus mencobanya.