Nói chung, cơ sở dữ liệu lưu trữ dữ liệu ở định dạng hàng và sử dụng SQL làm ngôn ngữ truy vấn để truy cập nó, nhưng phương pháp lưu trữ này không phải lúc nào cũng tốt nhất về mặt hiệu suất, nó phụ thuộc vào chính khối lượng công việc. Nếu bạn muốn lấy dữ liệu thống kê, có lẽ bạn nên sử dụng một loại công cụ lưu trữ cơ sở dữ liệu khác.
Trong blog này, chúng ta sẽ xem Columnar Storage là gì và cụ thể hơn, MariaDB ColumnStore là gì và cách cài đặt nó để có thể xử lý dữ liệu lớn của bạn theo cách hiệu quả hơn mục đích phân tích.
Bộ nhớ Columnar
Columnar Storage là một loại công cụ cơ sở dữ liệu lưu trữ dữ liệu bằng mô hình hướng cột.
Ví dụ:trong cơ sở dữ liệu quan hệ chung, chúng ta có thể có một bảng như sau:
id | firstname | họ | age |
1001 | Oliver | Smith | 23 |
1002 | Harry | Jones | 65 |
1003 | George | Williams | 30 |
1004 | Jack | Taylor | 41 |
Đây là lúc công cụ Columnar Storage phát huy tác dụng. Thay vì lưu trữ dữ liệu trong các hàng, dữ liệu được lưu trữ trong các cột. Vì vậy, nếu bạn cần biết tuổi trung bình, sẽ tốt hơn khi sử dụng nó, vì bạn sẽ có cấu trúc như sau:
id | firstname | id | họ | id | age | ||
1001 | Oliver | 1001 | Smith | 1001 | 23 | ||
1002 | Harry | 1002 | Jones | 1002 | 65 | ||
1003 | George | 1003 | Williams | 1003 | 30 | ||
1004 | Jack | 1004 | Taylor | 1004 | 41 |
Cửa hàng cột MariaDB
Đây là một công cụ lưu trữ dạng cột sử dụng kiến trúc dữ liệu phân tán song song lớn. Đây là bản tải xuống riêng biệt, nhưng nó sẽ có sẵn dưới dạng công cụ lưu trữ cho Máy chủ MariaDB từ MariaDB 10.5.4, vẫn đang được phát triển tại thời điểm blog này được viết.
Nó được thiết kế cho dữ liệu lớn, sử dụng các lợi ích của lưu trữ dạng cột để có hiệu suất tuyệt vời với phản hồi thời gian thực cho các truy vấn phân tích.
Kiến trúc cửa hàng cột MariaDB
Nó bao gồm nhiều (hoặc chỉ 1) Máy chủ MariaDB, hoạt động dưới dạng mô-đun, hoạt động cùng nhau. Các mô-đun này bao gồm Người dùng, Hiệu suất và Bộ nhớ.
Mô-đun Người dùng
Đây là phiên bản Máy chủ MariaDB được định cấu hình để hoạt động như một giao diện người dùng cho ColumnStore.
Mô-đun Người dùng quản lý và kiểm soát hoạt động của các truy vấn của người dùng cuối. Khi một máy khách chạy một truy vấn, nó sẽ được phân tích cú pháp và phân phối tới một hoặc nhiều Mô-đun Hiệu suất để xử lý truy vấn. Sau đó, mô-đun Người dùng thu thập các kết quả truy vấn và tập hợp chúng thành tập kết quả để trả về máy khách.
Mục đích chính của Mô-đun Người dùng là xử lý quy mô đồng thời. Nó không bao giờ chạm trực tiếp vào các tệp cơ sở dữ liệu và không yêu cầu hiển thị chúng.
Mô-đun Hiệu suất
Nó chịu trách nhiệm lưu trữ, truy xuất và quản lý dữ liệu, xử lý các yêu cầu của khối cho các hoạt động truy vấn và chuyển nó trở lại mô-đun Người dùng hoặc các mô-đun để hoàn thiện các yêu cầu truy vấn. Nó không nhìn thấy chính truy vấn, mà chỉ thấy một tập hợp các hướng dẫn do Mô-đun người dùng cung cấp cho nó.
Mô-đun chọn dữ liệu từ đĩa và lưu trữ dữ liệu đó vào bộ đệm không dùng chung, là một phần của máy chủ mà nó chạy trên đó.
Có nhiều nút Mô-đun Hiệu suất, cơ chế nhịp tim đảm bảo rằng tất cả các nút đều trực tuyến và có chuyển đổi dự phòng trong suốt trong trường hợp một nút cụ thể bị lỗi.
Bộ nhớ
Bạn có thể sử dụng bộ nhớ cục bộ (Mô-đun Hiệu suất) hoặc bộ nhớ dùng chung (SAN) để lưu trữ dữ liệu.
Khi bạn tạo bảng trên MariaDB ColumnStore, hệ thống sẽ tạo ít nhất một tệp cho mỗi cột trong bảng. Vì vậy, chẳng hạn, một bảng được tạo với ba cột sẽ có tối thiểu ba đối tượng logic có thể địa chỉ riêng biệt được tạo trên SAN hoặc trên đĩa cục bộ của Mô-đun Hiệu suất.
ColumnStore tối ưu hóa chiến lược nén để đạt được hiệu suất đọc từ đĩa. Nó được điều chỉnh để tăng tốc độ giải nén, tối đa hóa lợi ích hiệu suất khi đọc từ đĩa.
MariaDB ColumnStore sử dụng Bộ đệm Phiên bản để lưu trữ các khối đĩa đang được sửa đổi, quản lý các lần khôi phục giao dịch và phục vụ chức năng MVCC (kiểm soát đồng thời nhiều phiên bản) hoặc "đọc ảnh chụp nhanh" của cơ sở dữ liệu. Điều này cho phép nó cung cấp một chế độ xem nhất quán truy vấn của cơ sở dữ liệu.
Cách hoạt động của MariaDB CloumnStore
Bây giờ, hãy xem cách MariaDB ColumnStore xử lý một truy vấn của người dùng cuối, theo tài liệu MariaDB ColumnStore chính thức:
- Khách hàng đưa ra một truy vấn tới Máy chủ MariaDB đang chạy trên Mô-đun Người dùng. Máy chủ thực hiện thao tác với bảng cho tất cả các bảng cần thiết để đáp ứng yêu cầu và nhận được kế hoạch thực thi truy vấn ban đầu.
- Sử dụng giao diện công cụ lưu trữ MariaDB, ColumnStore chuyển đổi đối tượng bảng máy chủ thành các đối tượng ColumnStore. Sau đó, các đối tượng này được gửi đến các quy trình của Mô-đun người dùng.
- Mô-đun Người dùng chuyển đổi kế hoạch thực thi MariaDB và tối ưu hóa các đối tượng đã cho thành một kế hoạch thực thi ColumnStore. Sau đó, nó xác định các bước cần thiết để chạy truy vấn và thứ tự chạy chúng.
- Sau đó, Mô-đun Người dùng tham khảo Bản đồ Mức độ để xác định Mô-đun Hiệu suất nào cần tham khảo cho dữ liệu mà nó cần, sau đó thực hiện Loại bỏ Mức độ, loại bỏ bất kỳ Mô-đun Hiệu suất nào khỏi danh sách chỉ chứa dữ liệu bên ngoài phạm vi những gì truy vấn yêu cầu.
- Sau đó, Mô-đun Người dùng sẽ gửi lệnh đến một hoặc nhiều Mô-đun Hiệu suất để thực hiện các hoạt động I / O của khối.
- Mô-đun Hiệu suất hoặc Mô-đun thực hiện lọc vị từ, xử lý kết hợp, tổng hợp dữ liệu ban đầu từ bộ nhớ cục bộ hoặc bên ngoài, sau đó gửi dữ liệu trở lại Mô-đun người dùng.
- Mô-đun người dùng thực hiện tổng hợp tập kết quả cuối cùng và soạn tập kết quả cho truy vấn.
- Mô-đun Người dùng / ExeMgr thực hiện bất kỳ tính toán chức năng cửa sổ nào, cũng như bất kỳ phân loại cần thiết nào trên tập kết quả. Sau đó, nó trả về tập kết quả cho máy chủ.
- Máy chủ MariaDB thực hiện bất kỳ chức năng danh sách lựa chọn nào, thao tác ORDER BY và LIMIT trên tập kết quả.
- Máy chủ MariaDB trả về tập hợp kết quả cho máy khách.
Cách cài đặt MariaDB ColumnStore
Bây giờ, hãy xem cách cài đặt nó. Để biết thêm thông tin, bạn có thể kiểm tra tài liệu chính thức của MariaDB.
Chúng tôi sẽ sử dụng CentOS 7 làm hệ điều hành nhưng bạn có thể sử dụng bất kỳ hệ điều hành nào được hỗ trợ thay thế. Các gói cài đặt có sẵn để tải xuống tại đây.
Trước tiên, bạn cần cài đặt kho lưu trữ Gói bổ sung:
$ yum install -y epel-release
Sau đó, các gói bắt buộc sau:
$ yum install -y boost expect perl perl-DBI openssl zlib snappy libaio perl-DBD-MySQL net-tools wget jemalloc numactl-libs
Và bây giờ, hãy tải xuống MariaDB ColumnStore phiên bản mới nhất, giải nén và cài đặt nó:
$ 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
Khi kết thúc, bạn sẽ thấy thông báo sau:
Bước tiếp theo là:
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
Vì vậy, đối với ví dụ này, chúng ta chỉ cần chạy lệnh:
$ /usr/local/mariadb/columnstore/bin/postConfigure
Bây giờ, nó sẽ hỏi bạn một số thông tin về cài đặt:
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
Chạy tập lệnh đã tạo:
$ . /etc/profile.d/columnstoreAlias.sh
Bây giờ bạn có thể truy cập cơ sở dữ liệu bằng cách chạy lệnh “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)]>
Thế là xong. Bây giờ, bạn có thể tải dữ liệu trong cơ sở dữ liệu MariaDB ColumnStore của mình.
Kết luận
Columnar Storage là một giải pháp thay thế lưu trữ cơ sở dữ liệu tuyệt vời để xử lý dữ liệu cho các mục đích phân tích. MariaDB ColumnStore là một công cụ Columnar Storage được thiết kế cho tác vụ này và như chúng ta có thể thấy, việc cài đặt khá dễ dàng, vì vậy nếu bạn cần một cơ sở dữ liệu OLAP hoặc xử lý dữ liệu lớn, bạn nên dùng thử.