MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Apa itu MariaDB ColumnStore?

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

Ini bagus jika Anda ingin mendapatkan, misalnya, usia orang tertentu, di mana Anda akan membutuhkan semua atau hampir semua informasi baris, tetapi jika Anda perlu mendapatkan statistik pada kolom tertentu (misalnya usia rata-rata), ini bukan struktur terbaik.

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

Artinya, Anda hanya perlu membaca id dan usia untuk mengetahui usia rata-rata daripada semua data.

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana EXP() Bekerja di MariaDB

  2. 3 Cara Menampilkan Kolasi untuk Koneksi Anda di MariaDB

  3. Panduan untuk Indeks MySQL

  4. Memantau Kinerja MariaDB di Cloud Hibrida

  5. Pengguna Baru dan Manajemen LDAP di ClusterControl 1.8.2