MySQL so găng MariaDB, điểm khác biệt chính, ưu và nhược điểm

8878

Hello anh em, quay lại với chuỗi bài về hệ cơ sở dữ liệu, trong lập trình web nói chung và phát triển phần mềm nói riêng, MySQL hay MariaDB đều là hệ cơ sở dữ liệu. Mà dữ liệu được lưu trữ và quản lý như thế nào lại là điều tối quan trọng để phần mềm, web, app của anh em viết ra có hoạt động tốt hay không.

Bài viết này làm quả so găng giữa hai hệ cơ sở dữ liệu khá là phổ biến là MySQL (bao phổ biến) và MariaDB, hệ cơ sở dữ liệu của cô gái maria.

MySQL so găng MariaDB

Mặc dù có cấu trúc tương tự, cả hai hệ cơ sở dữ liệu này có tính năng và thành phần khác nhau. Xem và hiểu sâu về từng cái giúp anh em dễ dàng đưa ra lựa chọn hệ cơ sở dữ liệu cho chính dự án của mình. Ưu nhược điểm của từng loại lúc này xem ra là yếu tố quan trọng để anh em đem lên bàn cân.

Bắt đầu ngay thôi nào! À nói tới hệ cơ sở dữ liệu thì nghía qua tí RDBMS ha

1. Tổng quan về Relational Database (RDBMS)

Relational database management system, dịch tạm là hệ quản lý dữ liệu có liên kết, ông này có thêm chữ R (relational), là bản update của DBMS. Sử dụng một module có tên là storage engine, chuyên dùng để lưu trữ, quản lý và sửa đổi dữ liệu.

Hướng chủ yếu tới các loại dữ liệu có quan hệ, có liên kết với nhau (Relational).

Ông DBMS thì lưu trữ dữ liệu ở dạng tệp (file), còn ông RDBMS thì lại dùng bảng, dùng bảng thì có lợi hơn khi data bị dư như DBMS.

Bản thân ông MySQL và MariaDB đều thuộc về RDBMS. Sơ lược qua như thế rồi anh em mình sẽ đi vào detail sau.

  Lộ trình học MySQL từ A đến Z
  Cách Import dữ liệu từ các bảng khác nhau trong MySQL Workbench

2. MySQL là gì?

MySQL là hệ cơ sở dữ liệu liên kết, mã nguồn mở (open source) cái này quan trọng là miễn phí nha anh em. Được tạo bởi MySQL AB, ban đầu tạo ra để phát triển ứng dụng Web. Cung cấp cho các nhà phát triển Web khả năng quản lý dữ liệu dễ dàng bằng bảng.

MySQL là gì?

Trong hầu hết các trường hợp, MySQL thường đi với ông anh em thân ai nấy lo là PhP, thằng hàng xóm là Apache và hệ điều hành Linux. Dữ liệu có thể được thay đổi và truy vấn bằng SQL.

Về mức độ phổ biến thì MySQL là siêu phổ biến, vì bản thân WordPress dùng nó, nên không phải bàn cãi về độ phổ biến của MySQL.

Tham khảo việc làm MySQL hấp dẫn trên TopDev

3. MariaDB là gì?

MariaDB thực chất là một nhánh phát triển khác của MySQL. Việc phát triển MariaDB được tiến hành sau khi Oracle có ý định mua lại MySQL, việc này khiến một số nhà phát triển RDBMS lo ngại rằng Oracle có thể làm hệ cơ sở dữ liệu có liên kết bị thay đổi đi.

Đọc lan man đâu đó là thế, còn lại lý do thật sự sau đó anh em mà biết thì comment chia sẻ tui biết với nha. MariaDB, vì là một nhánh phải triển khác của MySQL nên cũng hỗ trợ dữ liệu kiểu bảng (table), ngoài ra còn hỗ trợ thêm các giao thức khác như client protocols, client APIs, ports và sockets.

Mục tiêu là nếu anh em có chuyển từ MySQL qua MariaDB, không có điều gì làm anh em trở ngại, support hết, hỗ trợ đầy đủ.

4. Sự khác biệt giữa MariaDB và MySQL

Mặc dù là phát triển nhánh khác, trên nền MySQL nhưng vẫn có những sự khác biệt rõ ràng giữa MySQL và MariaDB.

4.1 Miễn phí và trả phí

Đầu tiên là tiền hay không tiền, MariaDB tới hiện tại vẫn là mã nguồn mở, trong khi MySQL, một số tính năng và module đã đóng lại chỉ dành cho trả phí.

Ngoài miễn phí, MariaDB còn nhẹ hơn, hiệu suất tốt hơn do có 12 công cụ lưu trữ mới (12 new storage engines). MySQL bán giấy phép cho những công ty phát triển phần mềm theo dạng không phải miễn phí. Còn MariaDB thì cung cấp General Public License (GPL), giấy phép sử dụng miễn phí. Mà từ thưở giờ anh em cũng biết, trả phí luôn luôn khác bọt, bản trả phí của MySQL hỗ trợ tới hơn 200,000 kết nối (connections).

Đấy, tiền vào nó khác, không tiền thì chỉ support số connection ít thôi. Nhưng may mắn thay, ông MariaDB miễn phí nhưng vẫn hỗ trợ hơn 200,000 kết nối.

Số lượng kết nối quan trọng ra sao? Nếu anh em phát triển hệ thống thương mại điện tử, lượng truy cập tương đương với số lượng connections mở tới database.

4.2 Chức năng

Về mặt chức năng, MySQL giới thiệu sys schema objects (các đối tượng schema), thường được sử dụng để bảo trì cơ sở dữ liệu, đảm bảo hiệu suất. Công thêm tính năng super-read-only, cái này ngăn thay đổi trên máy chủ đối với super user.

MySQL cũng hỗ trợ data masking và dynamic columns. Data masking thường được gọi với cái tên thân thương cho chị em là mặt nạ dữ liệu. Mặt nạ này đắp dữ liệu chứ không đắp mặt.

Nó giúp bảo vệ dữ liệu nhạy cảm khỏi bị lộ ra ngoài, giảm thiểu rủi ro dữ liệu bị leak. Về cột động, động tất nhiên khác tĩnh, lấy tĩnh mà chế không nổi động. Lấy vô chiêu thắng hữu chiêu.

Má lạc đề, nói chứ tĩnh là cột anh em define ra kiểu dữ liệu nào thì xài kiểu dữ liệu đó. Còn cột động thì value trong cột vẫn có thể thay đổi, vẫn khác nhau được, nên gọi là động, có thể thay đổi. Trong khi đó, MariaDB thay vì hỗ trợ data masking, lại dùng hidden column, cột ẩn. Các cột ẩn sẽ không show ra value khi thực hiện câu SELECT, hoặc return khi INSERT.

Ngoài ra MariaDB hỗ trợ nhiều hơn các công cụ khác như XtraDB, lưu trữ trên memory và Cassandra Storage Engine

4.3 Đóng góp và tiếng nói

Cái này cũng vô cùng quan trọng, vì ông MySQL được Oracle mua lại rồi nên quyết định là thuộc về ổng. Anh em có ý kiến đóng góp hay không chưa chắc đã được Oracle xem xét và feedback.

Về phía MariaDB thì ngược lại, ổng được phát triển bởi cộng đồng và sử dụng quỹ MariaDB để phát triển. Giấy phép GNU GPL cũng cho phép cộng đồng tham gia đóng góp vào mã nguồn mở. Đồng thời MariaDB cũng có roadmap của riêng nó. Anh em có thể thoải mái tham gia đóng góp những feature mà anh em nghĩ là nó hữu ích.

Qua 3 so sánh dưới đây, anh em có một cái nhìn sơ lược về MySQL và MariaDB. Đi sâu hơn vào so sánh 2 hệ cơ sở dữ liệu này. Ta sẽ điểm qua Performance, Benchmark, Compatibility( khả năng tương thích).

5. Màn so găng giữa MySQL và MariaDB

5.1 Hiệu năng và điểm benchmarks

Cái hiệu năng và điểm benchmarks này là so sánh kiểu chuyên sâu. Tất nhiên là không thiếu nhiều ông làm so sánh rồi. Nó có vài bài kiểm tra để đánh giá xem cái nào vượt trội hơn cái nào.

Ông Dimi trĩ lòi Kravtchuk có bài test UTF8, chắc là không phải test font chữ. Nhưng MySQL8.0 có thể xử lý được số lượng truy vấn mỗi giây cao hơn MariaDB phiên bản 10.3

Về hoạt động và adapt với hardware (phần cứng), ông Axel Schwenke lại đánh giá MariaDB 10.1 hoạt động tốt hơn MySQL 5.7.9

Hiệu năng và điểm benchmarks

Tuy nhiên đánh giá nhanh hơn ở một bài test không có nghĩa là MySQL nhanh hơn hẳn hay có hiệu năng tốt hơn MariaDB. Hiệu năng còn ảnh hưởng bởi truy vấn SQL, số lượng connections và các trường hợp sử dụng khác nhau.

  Hướng dẫn cách kết nối đến Database MySQL trong Eclipse
  8 điểm so sánh giữa MySQL và PostgreSQL để chọn lựa cái nào phù hợp hơn.

5.2 Khả năng tương thích

Vì MariaDB được phát triển dựa trên binary drop-in replacement của MySQL nên Maria DB hoàn toàn tương thích với MySQL. Má cái binary drop in replacement, phải wiki cho ra coi nó là gì chứ khó hiểu vãi.

It refers to the ability to replace one hardware (or software) component with another one without any other code or configuration changes being required and resulting in no negative impacts.

Binary drop-in replacement đề cập khả năng thay thế một thành phần hoặc một nhóm thành phần bằng một thành phần khác. Mà sự thay thế này không cần bất kỳ thay đổi code hoăc cấu hình nào khác. Việc thay thế cũng không dẫn tới các tác động tiêu cực

Rồi, hiểu luôn, thay vào chả mất gì đâu. Cứ mạnh dạn thay đi anh em ơi. MariaDB cũng giữ lại config của MySQL về hệ cơ sở dữ liệu. Cổng kết nối, cách thức kết nối cũng tương tự với MySQL.

So sánh qua về hiệu năng và khả năng tương thích cũng là một phần, giờ tới đánh giá điểm mạnh điểm yếu của từng loại DB.

6. Điểm mạnh và điểm yếu của MariaDB

6.1 Điểm mạnh

Rồi giờ nắm sơ là ông MariaDb khác với MySQL rồi, nhưng điểm mạnh và điểm yếu của ổng là gì?

Đầu tiên là miễn phí, siêu quan trọng rồi nha. Kế tới là MariaDB hỗ trợ (backwards compatible – tương thích ngược), nghĩa là phiên bản mới nhất của MariaDB vẫn tương thích với các phiên bản cũ hơn. Đây là tính năng khá quan trọng, vì MariaDB do cộng đồng đóng góp.

Mà cộng đồng thì ta nói, release xoành xoạch suốt ngày.

Kế tới là dynamic thread pool (cái này hiểu là luồng động). Tính năng này cho phép cải thiện tốc độ, hiệu năng và nâng cao khả năng sao chép dữ liệu. Ngoài ra thực hiện cập nhật dữ liệu cũng nhanh hơn.

Tiếp tới là Galera cluster, giúp giảm thiểu delay khi thực hiện transaction, giảm mất mát dữ liệu và cải thiện khả năng mở rộng. MariaDB cũng hỗ trợ MariaDB ColumnStore.

6.2 Điểm yếu

Mạnh quá mạnh rồi giờ yếu quá yếu. Kiểu JSON thì quá ư là phổ biến và được hỗ trợ rất nhiều bởi các RDBMS khác, nhưng MariaDB thì chỉ hỗ trợ JSON từ bản 10.2 trở lên. Alias cho LONGTEXT cũng thế, từ bản 10.2 trở lên. Migration kiểu JSON này từ MySQL qua Maria anh em cũng cần phải đổi kiểu column JSON.

Một số tính năng khác có trong MySQL Enterprise Edition cũng không có trên MariaDB. Ngoài ra do là mã nguồn mở, nếu có vấn đề anh em phải tham khảo hoặc trợ giúp từ cộng đồng. Mà cộng đồng thì đôi khi được đôi khi không. Nên về điểm support thì MySQL vẫn ok hơn.

7. Điểm mạnh và điểm yếu của MySQL

7.1 Điểm mạnh

Data masking của MySQL thì nổi tiếng không phải bàn rồi, cả Data masking kết hợp với Dynamic Column kết hợp tạo thành một hệ cơ sở dữ liệu an toàn và nhanh chóng. Do thiết kế nhiều và hỗ trợ nhiều công cụ, MySQL đảm bảo hiệu suất tối ưu và thời gian alive tuyệt vời.

Về hỗ trợ business, điển hình như thương mại điện tử, MySQL hỗ trợ thanh toán, hỗ trợ giao dịch và bảo mật dữ liệu nhạy cảm.

Ngoài ra do được hẫu thuận bởi Oracle, MySQL được hỗ trợ bởi hơn 20 nhà cung cấp cloud. Hỗ trợ hơn 20 hệ điều hành. Được cập nhật liên tục và ghi chép đầy đủ

7.2 Điểm yếu

Ngược với mirage từ MySQL qua MariaDB, thì ở chiều ngược lại không dễ dàng tẹo nào đâu nha anh em. Có sự khác biệt giữa cấu hình copy giữa hai bên. MySQL cũng không phù hợp với quản lý hệ cơ sở dữ liệu có kích thước lớn.

MySQL thiếu hẳn công cụ tìm kiếm mạnh mẽ cho hệ cơ sở dữ liệu lớn. Nhóm các plugin có giá trị cũng bị khoá nếu bản anh em dùng không phải là bản trả phí.

Cuối cùng mang tiếng là mã nguồn mở nhưng Oracle có toàn quyền sinh sát trong đó. Nắm toàn quyền những feature nào sẽ release. MySQL cũng từ đó mà khó mở rộng quy mô của mình.

8. Tổng kết

Bài viết này tui đã liệt kê cho anh em một số điểm yếu mạnh, so sánh giữa MySQL và MariaDB. Cả hai đều là hệ cơ sở dữ liệu tốt, giờ lựa xem cái nào phù hợp với nhu cầu sử dụng của anh em nữa thôi.

MySQL Enterprise Edition giá 5k đô trên năm, tuy nhiên được hỗ trợ bởi tập đoàn Oracle. Cập nhật ổn định, hỗ trợ và đảm bảo an toàn. Có độ tin cậy cao hơn so với MariaDB.

MariaDB sau nhiều năm cập nhật và phát triển cũng đã trở thành hệ cơ sở dữ liệu tốt, MariaDB phù hợp với các dự án có thời gian phát triển ngắn. Không quá serious tới business.

9. Tham khảo

Cảm ơn anh em đã đọc bài – Chúc anh em chọn được RDBMS hợp với mình – Thank you for you time to read

Tác giả: Kiên Nguyễn

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev