Máy chủ MariaDB ban đầu được bắt nguồn từ MySQL và do đó đã kế thừa kiến trúc công cụ lưu trữ có thể cắm được của nó. Các động cơ lưu trữ khác nhau có các đặc điểm khác nhau về hiệu suất cũng như các tính năng và khả năng. Điều này cho phép người dùng chọn công cụ phù hợp cho công việc thay vì sử dụng cùng một công cụ lưu trữ bất kể mục đích của dữ liệu là gì, các yêu cầu liên quan đến lưu trữ dữ liệu là gì và cách thức truy cập dữ liệu. Trong bài đăng trên blog này, chúng tôi muốn xem xét các tùy chọn có sẵn trong MariaDB và thảo luận về các trường hợp sử dụng tiềm năng cho các công cụ lưu trữ khác nhau có sẵn.
Công cụ lưu trữ là gì?
Trước tiên, chúng ta hãy xem công cụ lưu trữ là gì? MariaDB bao gồm nhiều lớp hoạt động cùng nhau. SQL được phân tích cú pháp bởi một trong số họ, sau đó MariaDB tiếp cận dữ liệu, sử dụng một API chung. Dưới mui xe có một công cụ lưu trữ chứa dữ liệu và nó phản ứng với các yêu cầu về dữ liệu, trích xuất dữ liệu và cung cấp cho MariaDB.
Tóm lại, MariaDB gửi một yêu cầu cho một hàng và việc truy xuất và gửi lại hàng là tùy thuộc vào công cụ lưu trữ. MariaDB không quan tâm chính xác hàng được lưu trữ như thế nào hoặc nó sẽ được truy xuất như thế nào, tất cả phụ thuộc vào việc triển khai trong công cụ lưu trữ. Các công cụ lưu trữ cũng có thể triển khai các tính năng khác nhau. Các giao dịch cũng đang được xử lý hoàn toàn ở phía công cụ lưu trữ. Đó là lý do tại sao một số giao dịch hỗ trợ và một số thì không. Với kiến trúc này, có thể viết các công cụ lưu trữ khác nhau, dành riêng để giải quyết các vấn đề khác nhau.
Công cụ lưu trữ trong Máy chủ MariaDB
MariaDB đi kèm với một bộ công cụ lưu trữ. Bạn có thể kiểm tra những cái nào có sẵn thông qua một lệnh đơn giản:
MariaDB [(none)]> SHOW STORAGE ENGINES;
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | Stores tables as CSV files | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO |
| SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.000 sec)
Như bạn thấy, có rất nhiều trong số chúng, chúng tôi sẽ đề cập đến những cái quan trọng nhất.
InnoDB
InnoDB, rõ ràng, là công cụ lưu trữ. Giao dịch, được xây dựng để đối phó với lưu lượng OLTP, có thể cung cấp hiệu suất thực sự tuyệt vời. Nó là công cụ mặc định được sử dụng trong MariaDB và, trừ khi bạn biết mình đang làm gì, bạn có thể muốn sử dụng nó cho cơ sở dữ liệu của mình.
MyISAM
MyISAM là một trong những công cụ lưu trữ "nguyên bản" có sẵn trong MySQL và sau đó là MariaDB. Nó không phải là giao dịch, làm cho nó không lý tưởng cho các thiết lập sao chép và tốt, hầu hết các môi trường khác. Nó vẫn là công cụ rất nhanh, đặc biệt là liên quan đến quyền truy cập chỉ mục, làm cho nó phù hợp với khối lượng công việc chỉ đọc sẽ không bị ảnh hưởng bởi việc khóa INSERT và tính mong manh tổng thể của MyISAM.
Aria
Aria là một công cụ được tạo cho MariaDB để thay thế cho MyISAM. Nó không phải là giao dịch nhưng nó an toàn khi va chạm khiến nó trở nên đáng tin cậy hơn. Hiện tại, nó được sử dụng cho hệ thống và bảng tạm thời nhưng nó cũng có thể được sử dụng thay cho MyISAM cho khối lượng công việc yêu cầu quyền truy cập nhanh, chỉ đọc vào dữ liệu.
Bộ nhớ
Đây là một công cụ tất cả trong bộ nhớ thường được sử dụng cho các bảng tạm thời trong bộ nhớ. Nó không liên tục nhưng có thể hoạt động đối với một số khối lượng công việc chỉ đọc.
CSV
Công cụ lưu trữ này được thiết kế để lưu trữ dữ liệu trong tệp dưới dạng các giá trị được phân tách bằng dấu phẩy. Nó không phải là công cụ lưu trữ được sử dụng nhiều nhất, rất chuyên dụng nhưng nó vẫn có thể được sử dụng để dễ dàng trích xuất dữ liệu từ MariaDB sang bất kỳ phần mềm cơ sở dữ liệu nào khác cũng như Excel hoặc phần mềm tương tự.
Công cụ Lưu trữ trong Máy chủ Doanh nghiệp MariaDB
MariaDB Enterprise Server đi kèm với một vài công cụ lưu trữ bổ sung so với những gì có sẵn trong phiên bản cộng đồng. Chúng ta cũng hãy xem xét chúng.
ColumnStore
Đây là công cụ lưu trữ chuyên dụng cho khối lượng công việc phân tích. Nhờ cách lưu trữ dữ liệu cụ thể, nó giúp truy xuất khối lượng lớn dữ liệu thường xuyên cần thiết để báo cáo nhanh hơn. Đây có thể là công cụ lưu trữ mà bạn chọn cho khối lượng công việc OLAP (Xử lý phân tích trực tuyến).
S3
Công cụ S3 cho phép bạn truy cập dữ liệu nằm trong S3. Nó là một công cụ phi giao dịch nhằm cung cấp cho người dùng tùy chọn để lưu trữ dữ liệu trong S3. Quyền truy cập chỉ đọc khả dụng sau khi bảng được tạo.
Nhện
Spider engine cho phép bạn kết nối nhiều cơ sở dữ liệu MariaDB trên mạng, tạo ra một bộ nhớ phân đoạn. Nó có tính chất giao dịch và giúp người dùng mở rộng quy mô dễ dàng hơn bằng cách chia nhỏ dữ liệu trên nhiều Máy chủ doanh nghiệp MariaDB, phân phối lưu lượng và khối lượng công việc giữa chúng.
MyRocks
MyRocks là một công cụ lưu trữ được phát triển trên Facebook, nó nhằm mục đích giảm sự khuếch đại ghi và giảm thiểu sự hao mòn của ổ SSD. Nó là một công cụ giao dịch nên xử lý khối lượng công việc OLTP khá tốt, đặc biệt là khối lượng công việc điển hình cho các trang web truyền thông xã hội. MyRocks có khả năng nén khá tốt, tốt hơn InnoDB, có thể giúp giảm đáng kể chi phí lưu trữ nếu tập dữ liệu trở nên quá lớn khiến InnoDB không thể xử lý đúng cách.
Kết luận
Như bạn có thể thấy, có rất nhiều tùy chọn được cung cấp bởi cả MariaDB Enterprise và Community Server về cách thức mà dữ liệu có thể được lưu trữ. Có những công cụ lưu trữ vượt trội về khối lượng công việc chỉ đọc, OLAP hoặc bộ dữ liệu lớn. Người sử dụng có thể lựa chọn phù hợp hay không. Xin lưu ý rằng, khi nghi ngờ, bạn luôn có thể sử dụng InnoDB, nó cung cấp hiệu suất khá tốt nói chung và là quá đủ cho phần lớn các trường hợp. Nó dành cho những trường hợp khó mà bạn có thể cần tìm kiếm thứ gì đó phù hợp hơn.