PostgreSQL vs MySQL: The Critical Differences

The Critical Differences of PostgreSQL vs MySQL:

  • PostgreSQL là một CSDL giàu tính năng có thể xử lý truy vấn phức tạp và giữ liệu lớn.

  • MySQL là một CSDL đơn giản hơn tương đối dễ thiết lập và quản lý; nhanh, đáng tin cận và dễ hiểu.

  • PostgreSQL là object-relational database (ORDBMS) với những tính năng như kế thừa bảng hay nạp chồng hàm (function overloading), trong khi MySQL đơn thuần là relation database (RDBMS).

Hầu hết developers sẽ nói rằng MySQL tốt hơn cho websites và giao dịch online, còn PostgreSQL tốt hơn cho quy trình phân tính lớn và phức tạp. Họ cũng ghi chú rằng PostgreSQL có hàng loạt tính năng tuyệt vời, chẳng hạn sự mở rộng hay navtive NoSQL giúp bạn xử lý tình huống phức tạp. Cuối cùng, họ nhắc lại rằng MySQL không nhiều tính năng bằng nên nó tập trung vào tốc độ và sự tin cậy.

Trong nhiều trường hợp, các quan điểm trên đều đúng. Mặc dù mỗi release mới ngày càng đem MySQL và PostgreSQL đến gần nhau hơn với những tính năng trong bảng dưới. Xét những đặc điểm khác biệt của 2 database trong một trường hợp cụ thể, ta có thể nói loại này tốt hơn loại kia.

PostgreSQL 10 MySQL 8
Common Table Expression (CTE) Yes Yes (Newly Added)
Declarative Partitioning Yes (Newly Added) Yes
Full-text Search Yes Yes
Geographic Information System (GIS) / Spatial Reference System (SRS) Yes Yes (Upgraded)
JSON Yes Yes (Upgraded)
Logical Replication Yes (Newly Added) Yes
Semi-Synchronous Replication Yes (Newly Added) Yes
Window Functions Yes Yes (Newly Added)

Trong bài viết này, tôi sẽ giúp bạn hiểu sự khác biệt đặc trưng giữa MySQL và PostgreSQL. Sau đó, bạn có thể quyết định cái nào tốt hơn trong trường hợp cụ thể của bạn. Bạn có thể chỉ cần quan tâm đến điểm bạn cần:

  1. General Overview of MySQL and PostgreSQL
  2. Why Do Developers Choose One Over the Other?
  3. User Support for MySQL vs. PostgreSQL
  4. Is MySQL or PostgreSQL Faster?
  5. Which Programming Languages Do They Support?
  6. What Operating Systems Do They Work With?
  7. How Do They Index?
  8. How Is Coding Different?

General Overview of MySQL and PostgreSQL

MySQL

Là DBMS phổ biến nhất thế giới với 39% số lượng developers sử dụng trong năm 2019. MySQL nhanh, đáng tin cậy, dùng được trong nhiều trường hợp. Mặc dù thiết xót những tính năng mở rộng so với PostgreSQL, nó vẫn là lựa chọn rất tốt cho nhiều loại ứng dụng - đặc biệt là web.

Thật vậy, MySQL là lựa chọn tốt nhất cho web, một phần vì nó là tiêu chuẩn trong LAMP stack (Linux, Apache, MySQL and PHP). Thêm vào đó, những CMS nổi tiếng như Drupal, Joomla và WordPress "love" MySQL nên bạn tìm thấy MySQL mọi nơi trên web.

MySQL Workbench

Dưới đây là một số điểm khác của MySQL:

  • Open Source: MySQL là RDBMS mã nguồn mở miễn phí.
  • Long history: MySQL ra mắt vào năm 1995.
  • Mantained by Oracle: Oracle sở hữu và bảo trì MySQL và cung cấp phiên bản premium (trả phí) của MySQL với thêm những dịch vụ, plugins độc quyền, extensions và user support.
  • Supportive community: Một cộng đồng tình nguyện viên tận tụy luôn sẵn sàng trợ giúp khắc phục sự cố khi cần thiết.
  • Stable and reliable: Mọi người đống ý rằng MySQL rất ổn định miễn sao bạn giữ CSDL của mình "gọn gàng" và bảo trì thường xuyên.
  • MVCCfeatures: MySQL bây giờ cung cấp multi-version concrrency control (MVCC) features. Tính năng mà PostgreSQL đã được biết đến rộng rãi (chúng ta sẽ nói nhiều hơn về phần này sau).
  • Frequent updates: MySQL thường xuyên ra bản cập nhật với tính năng mới và tăng cường bảo mật.
  • High star rating: MySQL đạt 4.3-star rating (out of 5 stars) từ 1,261 reviews trên G2Crowd.

Dưới đây là tóm tắt về MySQL từ một review của G2Crowd:

MySQL is open source, free, stable database management system which can be used in production applications. It is a lightweight database which can be installed and used on production application servers with big multi-tier applications as well as on a desktop by developers. It can be installed on all platforms like Windows, Linux, and Mac. It is secure and is not vulnerable to any security vulnerabilities.

MySQL boasts some notable users: Facebook, Google, Flickr, GitHub,...

PostgreSQL

PostgreSQL là được xem là lựa chọn tốt nhất cho việc xử lý tính toán dữ liệu lớn phực tạp. Bởi vì PostgreSQL tốt hơn trong việc xử lý những tình huốn CSDL bất tường (sẽ nói thêm sau).

PostgreSQL có nhiều tính năng hơn DMS khác. Ngoài ra, PostgreSQL cũng có thể mở rộng vì hoạt động của nó là "catalog-driven". Nói theo cách khác, không chỉ lưu trữ thông tin về bảng và cột, nó còn cho phép bạn định nghĩa kiểu giữ liệu, loại index, và functional languages.

Các đặc điểm bổ sung cho PostgreSQL đó là object-relational, ACID-compliant, highly concurrent và hỗ trợ NoSQL (công bằng mà nói, MySQL cũng hỗ trợ NoSQL từ phiên bản 8.0).

Cuối cùng, mặc dù PostgreSQL không phải DS phổ biến nhất trên Thế Giới nhưng nó đã chiến thắng Giải thưởng CSDL của năm trong 2 năm gần nhất vì là DBMS có mức tăng trưởng nhanh nhất.

Dưới đây là một số điểm khác của PostgreSQL:

  • Open source: PostgreSQL là ORDBMS mã nguồn mở miễn phí. Vì là ORDBMS hơn đơn thuần là RDBMS, nó hỗ trợ cả object-oriented và relational database.
  • Customizable: Bạn có thể tùy biến PostgreSQL bằng cách phát triển plugins để làm DBMS phù hợp với yêu cầu của mình. Nó cũng cho phép bạn kết hợp functions được tạo ra bởi C/C++, Java,...
  • Long history: PostgreSQL xuất hiện vào năm 1988 (sớm hơn 7 năm so với MySQL).
  • Frequent updates:
  • A liberal open-source license: PostgreSQL kèm theo một giấy phép open-source rộng mở cho phép bạn sử dụng, thay đổi và tái phát hành DBMS theo bất kỳ cách nào bạn muốn.
  • MVCC Features: PostgreSQL là DBMS đầu tiên triển khai tính năng multi-version concurrency control (MVCC).
  • A supportive community: Một cộng đồng các nhà phát triển và tình nguyện viên tận tụy luôn sẵn sàng trợ giúp khi cần thiết. Cũng có những bên thứ 3 hỗ trợ riêng biệt.
  • High star rating: PostgreSQL đạt 4.4-star rating (out of 5 starts) từ 415 reviews trên G2Crowd.

Dưới đây là tóm tắt về PostgreSQL từ một review của G2Crowd:

PostgreSQL is one of the most interesting options in open-source relational databases. It is free… besides that, today it offers a lot of advanced options. In fact, it is considered the most advanced database engine today. In PostgreSQL, it is not necessary to use reading locks when making a transaction, which gives us greater scalability. Also, this tool is not managed by a person or company but a community of developers that helps us make our work easier and faster.

PostgreSQL users include: Apple, BioPharm, Cisco,...

Why Do Developers Choose One Over the Other?

Là lựa chọn có nhiều tính năng, PostgreSQL được yêu thích bởi nhiều developers. Tuy nhiên, khi nói đến thiết kế cơ sở dữ liệu, tính đơn giản, dễ dàng và các đặc điểm khác của MySQL có giá trị hơn đối với một số trường hợp sử dụng nhất định. Về mặt này, DBMS vượt trội trong các lĩnh vực khác nhau.

Chúng ta hãy xem xét các tính năng chính của MySQL và PostgreSQL từ góc độ lý do tại sao developers chọn cái này hơn cái kia.

Why Do Developers Choose MySQL?

Dưới đây là những lợi ích quan trọng nhất của MySQL:

Highly flexible and scalable: MySQL để bạn lựa chọn nhiều loại storage engine. Nó cho bạn sự linh hoạt trong việc tích hợp dữ liệu từ nhiều loại khác nhau. MySQL 8.0 hỗ trợ InnoDBO, MyISAM, Memory, CSV, Archive, Blackhole, NDB/NDBCLUSTER, Merge, Federated và Example.

A Focus on speed and reliability: Bởi vì không bao gồm những tính năng SQL nhất định. SQL "nhẹ nhàng" ưu tiên tốc độ và sự tin cậy. Tốc độ của MySQL đặc biệt rõ ràng khi nói đến highly concurrent, read-only. Như đã nói, nếu bạn cần chạy nhiều truy vấn phức tạp với lượng lớn, PostgreSQL sẽ tốt hơn.

Options for server optimization: MySQL có nhiều tùy chọn để điều chỉnh và tối ưu DB bằng việc thay đổi các biến như là soft_buffer_size, read_buffer_size, max_allowed_packet,...

Easy to use and popular: Sự phổ biến của MySQL đồng nghĩa với việc dễ dàng tìm được DB admins có nhiều kinh nghiệm. Người dùng phản hồi rằng thiết lập MySQL dễ dàng và không đòi hỏi điều chỉnh nhiều như các giải giáp DBMS khác.

A cloud-ready DBMS: MySQL được hỗ trợ trên nhiều nền tảng cloud nơi mà họ sẽ cài đặt và bảo trì MySQL miễn phí.

Multi-version concurrency control (MVCC) and ACID compliance available with the InnoDB engine: MySQL sử dụng InnoDB là storage engine mặc định. Điều này bổ sung tuân thủ MVCC và ACID. Tuy nhiên, các vấn đề với bảng bị hỏng vẫn có thể phát sinh với InnoDB trên MySQL do định dạng bảng MyISAM của nó. Theo MySQL, “Mặc dù định dạng bảng MyISAM rất đáng tin cậy (tất cả các thay đổi đối với bảng do câu lệnh SQL thực hiện đều được viết trước khi câu lệnh trả về), bạn vẫn có thể nhận được các bảng bị hỏng.” Hơn nữa, việc chọn một công cụ khác có thể sẽ dẫn đến việc mất tuân thủ MVCC và ACID.

Why Do Developers Choose PostgreSQL?

Dưới đây là những lợi ích quan trọng nhất của PostgreSQL. Bạn có thể thấy lý do tại sao nó yêu cầu hiểu biết nhất định về kỹ thuật:

ORDBMS not just RDBMS: PostgreSQL là object-relational (ORDBMS), nên nó cung cấp cầu nối giữa OOP và relational/procedural programming (giống C++). Điều này cho phép bạn định nghĩa kề thừa đối tượng và bảng cái mà sẽ được dịch ra cấu trức dữ liệu phức tạp hơn. ORDBMS tuyệt vời khi bạn xử lý dữ liệu không kết hợp với mô hình quan hệ chặt chẽ.

Excellent for complex queries: Khi bạn cần thực hiện các thao tác đọc-ghi phức tạp, trong khi sử dụng dữ liệu yêu cầu xác thực, PostgreSQL là một lựa chọn tuyệt vời. Tuy nhiên, ORDBMS có thể bị chậm khi xử lý các hoạt động chỉ đọc (đó là khi MySQL vượt trội).

Supports NoSQL and a large variety of data types: PostgreSQL là một lựa chọn phổ biến cho tính năng NoSQL. Nó trực tiếp hỗ trợ nhiều kiểu dữ liệu khác nhau bao gồm JSON, hstore và XML. Bạn có thể định nghĩ kiểu dữ liệu cơ sở và thiết lập hàm tùy biến.

Designed for extra-large database management: PostgreSQL không ràng buộc dung lượng CSDL. Một DB admin của adjust.com cho hay, tổ chức của anh ta sử dụng PostgreSQL để quản lý khoảng 4PB (petabytes) dữ liệu. Đó là 4,000 terabytes. Anh ấy nói thêm mỗi trường của họ xử lý processes (sau đó là logs) 100k - 250k requests trên giây. Bây giờ, nó là một heavy-load.

Multi-version concurrency control (MVCC): MVCC là lý do quan trọng nhất tại sao doanh nghiệp chọn PostgreSQL. MVCC cho phép luồng đọc và ghi đồng thời tương tác và quản lý DB. Điều này giúp loại bỏ nhu cầu khóa đọc-ghi mỗi khi ai đó cần tương tác với dữ liệu - do đó cải thiện hiệu quả. MVCC đạt được điều này thông qua "snapshot isolation" (theo cách gọi của Oracle). Snapshot thể hiện trạng thái của dữ liệu tại một thời điểm nhất định.

ACID compliance: PostgreSQL ngăn ngừa hỏng dữ liệu và duy trì tính toàn vẹn của dữ liệu ở cấp giao dịch. Để công cằng, MySQL cũng cung cấp khả năng tuân thủ ACID, nhưng các biến chứng có thể phát sinh.

User Support for MySQL vs. PostgreSQL

Cả hai giải pháp RDBMS đều có các cộng đồng cực kỳ hữu ích để cung cấp hỗ trợ cho người dùng, ngoài các tùy chọn hỗ trợ trả phí từ chủ sở hữu DBMS hoặc các nhà cung cấp bên thứ ba. Đây là cách họ so sánh:

MySQL User Support

Là một dự án mã nguồn mở, MySQL có một cộng đồng tình nguyện viên lớn sẵn sàng trợ giúp bạn với các đề xuất và hỗ trợ miễn phí. Cách tốt nhất để tìm kiếm loại hỗ trợ này là trên các trang web MySQLPercona.

Đây là những gì một chuyên gia CNTT nói về hỗ trợ khách hàng MySQL trên G2Crowd:

What I liked best is that MySQL an open source project and that means that there are tons of thousands of supports and help is available on the internet for free. I have found this to be particularly very helpful in sorting out otherwise difficult situations. One of the best things about MySQL is that is so popular that you will find a huge community of people ready to help you with any problem you have.

In addition to free community support, Oracle (the owner of MySQL) offers 24/7 paid support with the commercial versions of its products, which cost between $2,000 and $10,000 dollars depending on the level of support package you want to purchase. Alternatively, you can do your own troubleshooting by diving deep into the free MySQL books, manuals and guides found here.

PostgreSQL User Support

Giống như MySQL, PostgreSQL có một cộng đồng lớn các tình nguyện viên đưa ra lời khuyên miễn phí cho người dùng trên IRC và thông qua mailing lists. Ngoài ra, bạn có thể mua hỗ trợ trả phí thông qua các nhà cung cấp bên thứ ba. Hoặc, bạn có thể tự khắc phục sự cố của mình bằng cách xem nhiều sách và hướng dẫn sử dụng PostgreSQL được tìm thấy tại đây.

Đây là những gì một DB admin nói về PostgreSQL trên G2Crowd:

...in terms of support, the best ally is the community of people who help others through forums.

Một người khác nói rằng:

One drawback that I have personally experienced is that it is a bit harder to get community support or to Google for results. However, with more use of PostgreSQL the community support is getting better.

Ultimately, support for PostgreSQL could be a little more challenging because (1) the DBMS requires more technical expertise to set up and use; and (2) PostgreSQL experts are fewer in number that MySQL experts.

Is MySQL or PostgreSQL Faster?

Cả MySQL và PostgreSQL đều có danh tiếng, là hai trong số những giải pháp DBMS nhanh nhất hiện có. Tuy nhiên, về việc cái nào là nhanh nhất, câu trả lời không hoàn toàn rõ ràng. Theo Scott Noyes trên TechTarget:

It's easy to find benchmarks that favor one database over another, depending on the hardware, the configuration, and the test. One database might do better on a single-core machine with little memory, while another can take better advantage of scaling to multiple core processors. One might lead on reads while another leads on writes.

TechTarget says that speed tests offer contradictory results. For example, Windows Skills says that MySQL is faster, and Benchw says that PostgreSQL is faster. Ultimately, speed will depend on the way you’re using the database. PostgreSQL is known to be faster while handling massive data sets, complicated queries, and read-write operations. Meanwhile, MySQL is known to be faster with read-only commands.

Which Programming Languages Do They Support?

MySQL và PostgreSQL hỗ trợ rất nhiều ngôn ngữ giống nhau với những khác biệt rất nhỏ:

MySQL được hỗ trợ bởi C/C++, Delphi, Erlang, Go, Java, Lisp, JavaScript, Perl, PHP, R,...

PostgreSQL được hỗ trợ bởi C/C++, Delphi, Erlang, Go, Java, JavaScript, Lisp, .NET, Python,...

What Operating Systems Do They Work With?

Dưới đây là những điều bạn cần biết về các yêu cầu hệ điều hành cho MySQL so với PostgreSQL

MySQL cung cấp hỗ trợ dựa trên cloud, cài đặt tại chỗ và nó tương thích với các hệ điều hành sau:

  • Windows
  • MacOS
  • Linux (Ubuntu, Debian, Generic, SUSE Linux Enterprise Server, Red Hat Enterprises, Oracle)
  • Oracle Solaris
  • Fedora
  • FreeBSD
  • Open Source Build

PostgreSQL cung cấp hỗ trợ dựa trên cloud và cài đặt tại chỗ, và người dùng thường cài đặt PostgreSQL trên các máy chủ Linux. Ngoài ra, ORDBMS cung cấp API PostgREST REST. Theo trang web PostgreSQL:

  • MacOS
  • Solaris
  • Windows
  • BSD (FreeBSD, OpenBSD)
  • Linux (Red Hat family Linux including CentOS/Fedora/Scientific/Oracle variants, Debian GNU/Linux and derivatives, Ubuntu Linux and derivatives, SuSE and OpenSuSE, other Linux operating systems)

How Do They Index?

Index cải thiện hiệu suất cơ sở dữ liệu bằng cách tăng tốc các truy vấn SQL khi xử lý các bảng dữ liệu lớn. Nếu không lập index cơ sở dữ liệu, các truy vấn sẽ chậm và bị "đánh thuế quá cao" đối với DBMS. Cả MySQL và PostgreSQL đều cung cấp các tùy chọn index mục khác nhau.

MySQL

  • Indexes stored on B-trees, such as INDEX, FULLTEXT, PRIMARY KEY and UNIQUE.
  • Indexes stored on R-trees, such as indexes found on spatial data types.
  • Hash indexes and inverted lists when using FULLTEXT indexes.

PostgreSQL

  • Hash indexes and B-tree indexes.
  • Partial indexes that only organize information from part of the table.
  • Expression indexes that create an index resulting from expression functions as opposed to column values.

How Is Coding Different?

Dưới đây là 3 điều khác biệt về code giữa MySQL và PostgreSQL mà bạn cần lưu tâm:

  1. Case sensitivity - Không phân biệt hoa thường.
  2. Default character sets and strings - Charset và chuỗi ký tự mặc định.
  3. IF & IFNULL vs CASE statements.

Case Sensitivity

MySQL không phân biệt chữ hoa chữ thường. Khi viết truy vấn, bạn không cần viết hoa các từ khóa khi chúng xuất hiện trong cơ sở dữ liệu. PostgreSQL phân biệt chữ hoa chữ thường. Bạn cần viết hoa các chuỗi ký tự chính xác như khi chúng xuất hiện trong cơ sở dữ liệu, nếu không truy vấn sẽ không thành công.

Default Character Sets and Strings

Với một số phiên bản MySQL nhất định, cần phải chuyển đổi bộ ký tự và chuỗi thành UTF-8. Với PostgreSQL, không cần thiết phải chuyển đổi bộ ký tự và chuỗi thành UTF-8. Hơn nữa, cú pháp UTF-8 không được phép trong PostgreSQL.

IF and IFNULL vs. CASE Statements

Trong MySQL, sử dụng câu lệnh IF và IFNULL là hoàn toàn tốt. Trong PostgreSQL, các câu lệnh IF và IFNULL không hoạt động. Bạn cần sử dụng câu lệnh CASE để thay thế.

Xem thêm PostgreSQL vs MySQL Trends tại đây.

Tổng kết

Tóm lại, việc lựa chọn giữa MySQL và PostgreSQL thường nằm ở các câu hỏi sau:

  1. Bạn cần DB nhiều tính năng để xử lý truy vấn phức tạp và dữ liệu lớn? PostgreSQL có thể là lựa chọn của bạn.
  2. Bạn cần DB đơn giản hơn cái mà tương đối dễ thiết lập và quản lý, nhanh, đáng tin cậy và dễ hiểu? MySQL có thể là lựa chọn của bạn.

Nguồn: https://www.xplenty.com/blog/postgresql-vs-mysql-which-one-is-better-for-your-use-case/

Leave a Reply

Your email address will not be published.