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

Analisis dengan MariaDB AX - tThe Open Source Columnar Datastore

Lama berlalu adalah hari-hari pendekatan satu database untuk semua.

Dengan meningkatnya persyaratan pada kecepatan, kinerja, dan kelincahan, banyak penyimpanan data muncul, yang dimaksudkan untuk memecahkan satu masalah tertentu. Kami memiliki database relasional, penyimpanan dokumen, database deret waktu, database kolom, mesin pencari teks lengkap.

Sangat umum melihat beberapa datastore bekerja bersama di lingkungan yang sama.

Jadi bagaimana MariaDB AX cocok dalam gambar? Bagaimana perbandingannya dengan MariaDB TX dan masalah apa yang dipecahkannya?

Dalam posting blog ini, kita akan melihat MariaDB AX, dan melihat mengapa Anda mungkin ingin menggunakannya.

Apa itu MariaDB AX?

Hal pertama yang pertama, jadi apa itu MariaDB AX?

Ini adalah penyimpanan kolom, dan menyimpan datanya dengan ... kolom! Ini diimplementasikan sebagai mesin terpisah di database MariaDB 10.3.

Seperti yang Anda ketahui, MySQL dan MariaDB dirancang untuk menggunakan mesin penyimpanan yang dapat dicolokkan. Setiap mesin penyimpanan, baik itu InnoDB, Aria, MyRocks, Spider, atau mesin lainnya adalah plugin.

Dengan cara yang sama, MariaDB AX menggunakan mesin ColumnStore:

MariaDB [(none)]> SHOW ENGINES\G
*************************** 1. row ***************************
      Engine: Columnstore
     Support: YES
     Comment: Columnstore storage engine
Transactions: YES
          XA: NO
  Savepoints: NO

Ini menghasilkan kombinasi yang menarik. Penguraian SQL dilakukan oleh MariaDB, sehingga Anda dapat mengharapkan untuk bekerja dengan sintaks kueri yang sangat mirip dengan yang biasa Anda gunakan di MariaDB. Ini juga memudahkan untuk menggabungkan akses ke MariaDB AX dan MariaDB TX dalam aplikasi yang sama. Tidak perlu konektor atau pustaka khusus apa pun untuk terhubung ke dua penyimpanan data. Semua bisa dilakukan dengan menggunakan MySQL atau perpustakaan klien MariaDB. Anda juga dapat menggunakan MaxScale untuk kedua penyimpanan data, yang dapat membantu membangun ketersediaan tinggi untuk MariaDB AX.

Mengapa Kita Harus Menggunakan Datastore Kolom?

Mari kita bahas pengantar singkat tentang ide di balik penyimpanan data berbentuk kolom.

Apa yang membuat MariaDB AX berbeda dari MariaDB TX?

Perbedaan utama adalah bagaimana data terstruktur. Dalam database biasa, data disimpan sebagai baris.

Id, Product, Price, Code, Warehouse
1, Door, 10, 12334, EU1
2, Window, 9, 9523, EU1
3, Glass, 12, 97643, EU2

Seperti yang Anda lihat, kami memiliki tiga baris, masing-masing berisi semua data tentang entri produk.

Masalahnya, cara menyimpan data ini tidak terlalu efisien bila Anda hanya ingin mendapatkan sebagian dari data ini. Katakanlah Anda hanya ingin mendapatkan kolom "Produk" dan "Harga" - untuk melakukannya Anda harus membaca seluruh baris, semua data, lalu membuang kolom yang tidak diperlukan. Hal ini juga sulit untuk mengurutkan data. Jika Anda ingin mengurutkan dataset dari produk yang paling mahal hingga yang termurah, Anda harus membaca semuanya dan kemudian melakukan pengurutan.

Kita semua tahu bahwa database menggunakan indeks untuk mempercepat akses. Indeks disusun sedemikian rupa sehingga berisi konten kolom yang diindeks serta penunjuk ke baris penuh (di InnoDB itulah Kunci Utama). Misalnya, indeks pada kolom “Produk”, dengan asumsi bahwa “Id” adalah Kunci Utama, mungkin terlihat seperti berikut:

Product, Id
Door, 1
Window, 2
Glass, 3

Ini mempercepat akses ke data karena tidak perlu membaca baris penuh hanya untuk menemukan nilai di kolom “Produk”. Setelah database menemukannya, database dapat membaca sisa baris (jika diperlukan) dengan mengikuti pointer.

Di toko kolom, semuanya berbeda. Data disusun bukan sebagai baris tetapi sebagai kolom. Untuk beberapa hal ini mirip dengan index. Tabel kami di penyimpanan data kolom mungkin terlihat seperti ini:

Id: 1, 2, 3
Product: Door, Window, Glass
Price: 10, 9, 12
Code: 12334, 9523, 97643
Warehouse: EU1, EU1, EU2

Di MariaDB AX, kolom disimpan dalam file terpisah, setiap entri untuk "baris" tertentu dimulai pada offset yang sama.

Keuntungan utama di sini adalah jika Anda ingin menjalankan kueri yang akan bekerja hanya dengan sebagian data, Anda hanya perlu membaca data dari kolom yang relevan dengan kueri tersebut.

Dalam contoh kami sebelumnya, alih-alih membaca seluruh kumpulan data, kami hanya dapat memuat data untuk kolom 'Produk" dan "Harga". Ini mengurangi data yang dibutuhkan untuk diakses pada disk dan mempercepat proses.

Yang juga penting, menyimpan data dalam kolom membuatnya kurang jelas yang membuatnya lebih baik dikompres. Misalnya, di kolom "Gudang" kami, kami hanya memiliki dua jenis entri. Bahkan dalam skenario dunia nyata, kemungkinan besar kita akan berakhir dengan jumlah gudang yang sedikit dibandingkan dengan jumlah produk. Hal ini membuat kolom “Warehouse” menjadi target yang sangat baik untuk kompresi.

Sebagai hasil dari semua ini, penyimpanan data kolom dapat menangani kumpulan data besar dengan lebih baik dan dapat melakukan kueri dengan cara yang lebih efisien daripada database yang berfokus pada OLTP “standar”.

Mengapa Saya Harus Menggunakan MariaDB AX?

Akses disk adalah hambatan utama dalam database. Penyimpanan data berbentuk kolom meningkatkan kinerja dengan mengurangi jumlah data yang perlu dibaca dari disk. Ia hanya membaca data yang diperlukan untuk menjawab kueri.

Tentu saja, MariaDB AX bukan satu-satunya penyimpanan data berbentuk kolom di luar sana. Ada banyak lainnya seperti, misalnya, Clickhouse atau Apache HBase.

Sebenarnya, tidak ada opsi lain yang mendukung sintaks SQL lengkap seperti yang dilakukan MySQL. Mereka memerlukan konektor yang berbeda, pendekatan yang berbeda untuk mengkueri data sementara MariaDB AX dapat dikueri seperti Anda akan menanyakan MariaDB 'normal'.

Yang juga penting, mengingat MariaDB AX menggunakan mesin ColumnStore, sangat baik untuk mencampurnya dengan mesin lain. Anda dapat menggabungkan dan menggabungkan tabel InnoDB dan ColumnStore dalam kueri yang sama tanpa masalah.

Selain itu, alat yang disertakan dengan MariaDB TX, seperti MaxScale, akan bekerja dengan baik dengan MariaDB AX sehingga lebih mudah untuk membangun lingkungan yang terintegrasi dan mudah digunakan. Jadi ketika Anda menjalankan ClusterControl dengan MariaDB 10.3 dan MaxScale, Anda dapat dengan mudah menambahkan MariaDB AX ke dalam campuran dan itu akan bekerja dengan bagian lain dari penyiapan.

MariaDB AX dilengkapi dengan alat yang dimaksudkan untuk membantu mentransfer data dari sumber lain. Jika Anda menggunakan Kafka atau Spark, ada konektor untuk digunakan saat mengimpor data dari sumber tersebut ke MariaDB AX.

Selain itu, meskipun replikasi reguler antara MariaDB TX (InnoDB) dan MariaDB AX (ColumnStore) tidak berkinerja baik karena keterbatasan ColumnStore (selalu lebih baik melakukan penyisipan batch di penyimpanan data kolom daripada penyisipan tunggal, seperti yang dilakukan pada replikasi), itu memungkinkan untuk membangun pipeline yang terdiri dari MaxScale yang dikonfigurasi sebagai server binlog dan router Avro CDC, Adaptor Data CDC MaxScale, dan MariaDB AX, yang akan menerima data dari adaptor hampir secara real time.

Kami berharap posting blog ini akan memberi Anda beberapa wawasan tentang apa itu MariaDB AX dan bagaimana hal itu dapat digunakan bersama dengan lingkungan MariaDB TX yang diterapkan dan dikelola oleh ClusterControl (unduh gratis!).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 11 Fungsi untuk Mendapatkan Hari, Bulan, dan Tahun dari Tanggal di MariaDB

  2. Cara Menyebarkan MariaDB Cluster 10.5 untuk Ketersediaan Tinggi

  3. Bagaimana DATE_FORMAT() Bekerja di MariaDB

  4. Memperluas Basis Data Moodle

  5. Menyebarkan Replikasi MariaDB untuk Ketersediaan Tinggi