Kiến thức cơ bản về các hệ quản trị cơ sở dữ liệu quan hệ

I. Lời giới thiệu

Cơ sở dữ liệu quan hệ đã được sử dụng từ lâu và chúng trở nên phổ biến nhờ có các hệ thống quản lý cực kì tốt. Các hệ thống này đã được chứng minh rằng là một cách tốt nhất để làm việc với dữ liệu. Trong bài viết này, tôi sẽ trình bày những kiến thức cơ bản của các hệ quản trị cơ sở dữ liệu quan hệ phổ biến hiện nay. Nó bảo gồm đặc điểm, sự khác nhau về tính năng, các hàm, chúng hoạt động ra sao và giúp nhà phát triển có thể lựa chọn một hệ quản trị cơ sở dự liệu quan hệ cho phù hợp. Bài viết sẽ có 3 phần:

  • Phần 1: Giới thiệu về hệ quản trị cơ sở dữ liệu.
  • Phần 2: Giới thiệu về MySQL và các đặc điểm.
  • Phần 3: Giới thiệu về PostgreSQL và các đăc điểm.
  • Phần 4: Kết luận.

II. Hệ quản trị cơ sở dữ liệu

Cơ sở dữ liệu mô hình các không gian lưu trữ của tất cả các dữ liệu khác nhau. Mỗi cơ sở dữ liệu có một mô hình riêng mà nó biểu diễn cấu trúc của dữ liệu đang cần được xử lí. Hệ quản trị cơ sở dữ liệu là ứng dụng giúp cho việc quản lý các cơ sở dữ liệu.

1. Hệ quản trị cơ sở dữ liệu quan hệ

Hệ quản trị cơ sở dữ liệu dựa trên mô hình quan hệ để làm việc với dữ liệu. Mô hình quan hệ mô hình bất cứ thông tin nào được lưu trữ bằng việc xác định chúng như các thực thể liên quan tới các thuộc tính của các bảng. Những loại hệ quản trị cơ sở dữ liệu đòi hỏi các cấu trúc (ví dụ như một bảng) phải được xác định để chứa và làm việc với dữ liệu. Với mỗi bảng, mỗi cột (ví dụ như một thuộc tính) giữ một kiểu dữ liệu khác của thông tin. Mỗi bản ghi trong cơ sở dữ được định nghĩa duy nhất với các key và tương ứng với một hàng trong một bảng. Với thuộc tính của các hàng được thể hiện như một cột trong một bảng.

2. Các quan hệ và các dạng dữ liệu

Các quan hệ có thể được coi như là một tập hợp có chứa một loạt các thuộc tính mà đại diện cho cơ sở dữ liệu và thông tin được lưu trữ. Khi đang định nghĩa một bảng để thêm các bản ghi thi mỗi phần tử trong một bản ghi phải tương ứng với kiểu dữ liệu được định nghĩa (như kiểu integer, date,...). Hệ quản trị cơ sở dữ liệu quan hệ khác nhau triển khai các loại dữ liệu khác nhau - đó không phải là luôn luôn trực tiếp hoán đổi cho nhau.

3. Các cơ sở dữ liệu quan hệ phổ biến và quan trọng

  • MySQL: Một hệ quản trị cơ sở dữ liệu quan hệ mạnh mẽ và phổ biến hiện nay.

  • PostgreSQL: Với tuyên ngôn rằng "Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới".

Sau đây, chúng ta sẽ tìm hiểu chi tiết về 2 hệ quản trị cơ sở dữ liệu quan hệ ở trên.

III. MySQL

MySQL là một trong những cơ sở dữ liệu có khả năng mở rộng phổ biến nhất hiện nay. Nó giàu các tính năng, là một sản phẩm mã nguồn mở mạnh mẽ trên các website và các ứng dụng online. Việc bắt đầu với MySQL là cực kì dễ dàng và các nhà phát triển dễ dàng tiếp cận với một lượng lớn các thông tin về cơ sở dữ liệu trên internet.

1. Dạng dữ liệu

Kiểu dữ liệu Kích thước
TINYINT -128 - 127
SMALLINT -32768 - 32767
MEDIUMINT -8388608 - 8388607
INT -2147483648 - 2147483647
BIGINT - 2^64 − 1 - 26^3 − 1
FLOAT 4 bytes
DOUBLE 8 bytes
DECIMAL, NUMERIC 4 bytes
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte
CHAR M × w bytes
VARCHAR L + 2 bytes
TINYBLOB, TINYTEXT L + 1 bytes
BLOB, TEXT L + 2 bytes
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes
LONGBLOB, LONGTEXT L + 4 bytes
ENUM An enumeration
SET A set

2. Ưu điểm của MySQL

  • Dễ dàng sử dụng: MySQL có thể dễ dàng cài đặt. Với các công cụ bên thứ 3 làm cho nó càng dễ đơn giản hơn để có thể sử dụng.
  • Giàu tính năng: MySQL hỗ trợ rất nhiều chức năng SQL được mong chờ từ một hệ quản trị cơ sở dữ liệu quan hệ-cả trực tiếp lẫn gián tiếp.
  • Bảo mật: Có rất nhiều tính năng bảo mật, một số ở cấp cao đều được xây dựng trong MySQL.
  • Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết.
  • Nhanh: Việc đưa ra một số tiêu chuẩn cho phép MySQL để làm việc rất hiệu quả và tiết kiệm chi phí, do đó nó làm tăng tốc độ thực thi.

3. Nhược điểm của MySQL

  • Giới hạn: Theo thiết kế, MySQL không có ý định làm tất cả và nó đi kèm với các hạn chế về chức năng mà một vào ứng dụng có thể cần.
  • Độ tin cậy: Cách các chức năng cụ thể được xử lý với MySQL (ví dụ tài liệu tham khảo, các giao dịch, kiểm toán,...) làm cho nó kém tin cậy hơn so với một số hệ quản trị cơ sở dữ liệu quan hệ khác.
  • Sự phát triển chậm: Mặc dù MySQL vẫn là một sản phẩm công nghệ mã nguồn mở phổ biến nhưng có những phàn nàn liên quan đến quá trình phát triển kể từ khi nó được mua lại.

4. Khi nào nên sử dụng MySQL?

  • Các hoạt động phân tán: Khi bạn cần nhiều hơn những gì SQLite có thể cung cấp, bao gồm cả MySQL để ngăn xếp triển khai của bạn, giống như bất kỳ máy chủ cơ sở dữ liệu độc lập nào mà mang lại nhiều tự do hoạt động cùng với một số tính năng tiên tiến.
  • Tính bảo mật cao: Tính năng bảo mật của MySQL cung cấp sự bảo vệ đáng tin cậy cho các dữ liệu truy nhập (và sử dụng) theo một cách đơn giản.
  • Các ứng dụng web: Phần lớn các websites có thể hoạt động đơn giản trên MySQL. Sự linh hoạt và có phần mở rộng của các công cụ là dễ dễ dàng sử dụng dụng và dễ dàng quản lý.
  • Các giải pháp tùy chỉnh: Nếu bạn đang làm trên một giải pháp rất cụ thể và có tính tùy chỉnh, thì MySQL có thể thực hiện theo các quy tắc của bạn nhờ vào các thiết lập cấu hình phong phú và các phương thức hoạt động.

5. Khi nào không nên sử dụng MySQL?

  • Tuân thủ theo SQL: Bởi vì MySQL không thi hành theo đầy đủ chuẩn của SQL nên công cụ này không hoàn toàn tuân thủ theo SQL.
  • Sự đồng thời: Mặc dù MySQL và một số công cụ thực hiện tốt việc đọc nhưng đồng thời việc đọc-viết có thể có vấn đề.
  • Thiếu tính năng: Một lần nữa, tùy thuộc vào sự lựa chọn của các cơ sở dữ liệu, MySQL có thể thiếu một số tính năng, chẳng hạn như tìm kiếm văn bản đầy đủ.

IV. PostgreSQL

PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở tiên tiến mà mục đích chính là tuân thủ theo chuẩn và khả năng mở rông. PostgreSQL hay còn gọi là Postgree áp dụng chuẩn SQL ANSI/IOS cùng với các phiên bản.

So với các hệ quản trị cơ sử dữ liệu quan hệ khác, PostgreSQL khá khác. Nó hỗ trợ hướng đối tượng mạnh mẽ và chức năng cơ sở dữ liệu quan hệ. Ví dụ như hỗ trợ hoàn toàn cho các giao dịch đáng tin cậy như là Atomicity, Consistency, Isolation, Durability (ACID).

Do có nền tảng công nghệ mạnh mẽ, Postgres có hoàn toàn có khả năng xử lý nhiều tiến trình rất hiệu quả. Sự hỗ trợ đồng thời đạt được mà không cần đọc các khóa nhờ vào sự thực hiện của Multiversion Concurrency Control (MVCC), mà nó cũng đảm bảo việc tuân thủ theo ACID.

1. Dạng dữ liệu

Kiểu dữ liệu Kích thước
bigint 8 bytes
bigserial 8 bytes
bit[(n)] Cấp phát khi khai báo
bit varying[(n)] Cấp phát khi khai báo
boolean 1 byte
box 32 bytes
bytea 1 or 4 bytes
character varying
character
cidr 7 or 19 bytes
circle 24 bytes
date 4 bytes
double precision 8 bytes
inet 7 or 19 bytes
integer 4 bytes
interval [fields] [(p)] 12 bytes
line 32 bytes
lseg 32 bytes
macaddr 6 bytes
money 8 bytes
numeric [(p, s)] Cấp phát khi khai báo
path 16+16n bytes
point 16 bytes
polygon 40+16n
real 4 bytes
smallint 2 bytes
serial 4 bytes
text
time [(p)] [without time zone] 8 bytes
time [(p)] with time zone 12 bytes
timestamp [(p)] [without time zone] 8 bytes
timestamp [(p)] with time zone 8 bytes
tsquery
tsvector
txid_snapshot
uuid 128 bits
xml

2. Ưu điểm của PostgreSQL

  • Là một chuẩn SQL phù hợp với hệ quản trị cơ sở dữ liệu quan hệ: PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, miễn phí và mạnh mẽ
  • Cộng đồng mạnh: PostgreSQL được hỗ trợ bởi một cộng đồng nhiệt tình và đầy kinh nghiệm.
  • Hỗ trợ mạnh mẽ từ các bên thứ 3: Bất kể các tính năng tiên tiến thì PostgreSQL đều được hỗ trợ bởi các công cụ tuyệt vời của bên thứ 3 trong việc quản lý cơ sơ dữ liệu
  • Sự mở rộng: Nó có thể mở rộng lập trình PostgreSQL với các thủ tục lưu trữ, giống như một RDBMS tiên tiến.
  • Đối tượng hóa: PostgreSQL không chỉ là một hệ quản trị cơ sở dữ liệu quan hệ, mà nó còn đối tượng hóa dữ liệu.

3. Nhược điểm của PostgreSQL

  • Hiệu suất: Đối với các toán tử đơn giản thì PostgreSQL thực hiện kém hiệu quả hơn so với các hệ quản trị cơ sở dữ liệu quan hệ khác như MySQL. Nhưng đối với toán tử phức tạp thì PostgreSQL thực hiện tốt hơn rất nhiều.
  • Sự phổ biến: Do chưa có sự phổ biến nên ảnh hưởng đến người dùng nhận được sự hỗ trợ kịp thời.
  • Hosting: Do các yếu tố được đề cập bên trên nên nó khó được hỗ trợ bởi các host.

4. Khi nào nên sử dụng PostgreSQL

  • Toàn vẹn dữ liệu: Khi độ tin cậy và tính toàn vẹn dữ liệu là tuyệt đối cần thiết thì PostgreSQL là lựa chọn tốt hơn hết.
  • Thủ tục phức tạp và khả năng tùy chỉnh cao: Nếu bạn cần cơ sở dữ liệu cảu bạn thực hiện các thủ tục có khả năng tùy chỉnh thì PostgreSQL hỗ trợ rất tốt cho việc đó.
  • Sự đồng bộ: Trong tương lai, nếu có phải chuyển từ hệ quản trị cơ sở dữ liệu quan hệ này sang một hệ quản trị cơ sở dữ liệu khác nhứ Oracle thì PostgreSQl cho việc chuyển đổi trong tương lại đó.
  • Thiết kế phức tạp: So với sự thực hiện của các hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở miễn phí khác mà với thiết cơ sở dữ liệu phưc tạp thì PostgreSQL cung cấp cho chúng ta những giải pháp tối ưu.

5. Khi nào không nên sử dụng PostgreSQL?

  • Tốc độ: Nếu tất cả các các hoạt động yêu cầu đọc nhanh thì PostgreSQL không phải là công cụ phù hợp.
  • Các thiết lập đơn giản: Nếu bạn không yêu cầu tính toàn vẹn dữ liệu tuyệt đối, tuân thủ theo ACID hoặc thiết kế phức tạp thì PostgreSQL có thể là một sự phá hoại cho các thiết lập đơn giản.
  • Sự nhân rộng: Trừ khi bạn sẵn sàng bỏ thời gian, công sức và tài nguyên thì việc đạt được sự nhân rộng với MySQL có thể đơn giản cho những người thiếu kinh nghiệm cơ sở dữ liệu và hệ thống quản lý.

V. Kết luận

Dựa vào những ưu, nhược điểm ở của các hệ quản trị cơ sở dữ liệu quan hệ chúng ta có thể lựa chọn hệ quản trị cơ sở dữ liệu phù hợp với ứng dụng, dự án của mình.