CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.3. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU POSTGRESQL
Hình 2.6. PostgreSQL
(Nguồn: https://tenten.vn/tin-tuc/postgresql-la-gi/)
Theo trích dẫn từ tài liệu của website Postgres thì PostgreSQL là hệ thống quản trị cơ sở dữ liệu quan hệ - đối tượng (Object - Relational Database Management System) mã nguồn mở, được phát triển dựa trên POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, Đại học California. Nó có thể chạy trên các nền tảng tương tự UNIX, cũng như Windows và Mac OS X [3].
PostgreSQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở, được phát triển bởi cộng đồng người dùng và nhà phát triển trên toàn thế giới. Nó được đánh giá cao về tính ổn định và bảo mật, với nhiều tính năng nâng cao như kiểm soát truy cập, mã hóa dữ liệu và xác thực. PostgreSQL cũng hỗ trợ nhiều loại dữ liệu và phương pháp truy vấn phức tạp, giúp cho việc lưu trữ và truy xuất dữ liệu trở nên dễ dàng hơn.
Một điểm đáng chú ý của PostgreSQL là khả năng mở rộng và tùy chỉnh cao. Nó cho phép thêm các module mở rộng bổ sung để mở rộng tính năng của nó, và tùy chỉnh cấu trúc cơ sở dữ liệu để phù hợp với nhu cầu của người sử dụng. PostgreSQL cũng hỗ trợ các tính năng như replica và sharding để tăng khả năng chịu tải và độ tin cậy của hệ thống.
Trên thực tế, PostgreSQL là một trong những hệ quản trị cơ sở dữ liệu phổ biến nhất trên thế giới. Nó được sử dụng bởi nhiều doanh nghiệp lớn như Apple, Cisco, Fujitsu, và các tổ chức chính phủ như NASA và NOAA. PostgreSQL tự tin xưng đặt mình là cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới, và với khả năng đáp ứng nhu cầu của nhiều loại ứng dụng khác nhau, điều này hoàn toàn có thể hiểu được.
2.3.2. Các tính năng nổi bật của PostgreSQL Kiểu dữ liệu đa dạng:
PostgreSQL cung cấp đa dạng các kiểu dữ liệu bao gồm kiểu nguyên hàm (số nguyên, số thực, chuỗi, boolean), kiểu cấu trúc (ngày/giờ, mảng, phạm vi, UUID), kiểu document (JSON/JSONB, XML, key-value), kiểu hình học (điểm, đường thẳng, vòng tròn, đa giác) và kiểu tùy chỉnh [3].
Toàn vẹn dữ liệu:
Tính toàn vẹn dữ liệu là một đặc tính quan trọng của dữ liệu, đảm bảo rằng dữ liệu là chính xác và đáng tin cậy. Có nhiều tính năng có thể được sử dụng để đảm bảo tính toàn vẹn dữ liệu, bao gồm: khóa chính (primary keys), khóa ngoại (foreign keys), ràng buộc duy nhất (unique), ràng buộc not-null và ràng buộc loại trừ (check constraint) [3].
Hiệu suất:
PostgreSQL có nhiều tính năng để cải thiện hiệu suất, bao gồm lập danh mục (b-tree, multicolumn, expressions, partial), lập danh mục nâng cao (GiST, SP-Gist, KNN GiST, GIN, BRIN, Bloom filters), trình lập kế hoạch/trình tối ưu hóa truy vấn phức tạp, quét index-only và thống kê số liệu trên nhiều cột.
Điều khiển đồng thời:
PostgreSQL sử dụng MVCC để cho phép nhiều người dùng truy cập cơ sở dữ liệu cùng một lúc mà không làm ảnh hưởng đến lẫn nhau.
Độ tin cậy và phục hồi sau thảm họa:
PostgreSQL cung cấp các tính năng đảm bảo độ tin cậy và phục hồi sau thảm hoạ, bao gồm ghi nhật ký ghi trước (Write-ahead Logging – WAL), replication, khôi phục điểm-theo-thời-gian (Point-in-time-recovery – PITR) và không gian bảng.
Tính bảo mật:
PostgreSQL hỗ trợ xây dựng hàng rào bảo mật có xác thực mạnh (SCRAM-SHA- 256, SSPI, LDAP, GSSAPI, Certificate,…), hệ thống kiểm soát truy cập kĩ càng, bảo mật cấp độ cột – hàng.
Khả năng mở rộng:
PostgreSQL có khả năng mở rộng cao, bao gồm hỗ trợ nhiều ngôn ngữ thủ tục (PL/PGSQL, Python, Perl, và nhiều ngôn ngữ khác), thư viện tiện ích mở rộng PostGIS, kết nối cơ sở dữ liệu hoặc luồng khác với giao diện SQL chuẩn.
PostgreSQL có thể lưu trữ một lượng lớn dữ liệu, lên đến hàng trăm terabyte hoặc petabyte. Điều này được thực hiện thông qua các tính năng như phân vùng (sharding) và phân tán (replication). Nó có thể được triển khai trên nhiều máy chủ để tăng khả năng phục vụ và đảm bảo sự ổn định và tin cậy.
Điều chỉnh và cấu hình tùy chỉnh:
PostgreSQL cho phép người dùng tùy chỉnh cấu hình để đáp ứng nhu cầu cụ thể của họ. Các tùy chọn cấu hình bao gồm tối ưu hóa hiệu suất, quản lý bộ đệm, quản lý kết nối, và nhiều hơn nữa.
Tích hợp với các ngôn ngữ lập trình:
PostgreSQL cung cấp các ngôn ngữ lập trình tích hợp (PL) cho phép người dùng viết các chức năng tùy chỉnh và lưu trữ chúng trực tiếp trong cơ sở dữ liệu. Các ngôn ngữ PL có sẵn bao gồm PL/pgSQL, PL/Python, PL/Perl, PL/Tcl, PL/Java và PL/R.
Chức năng tìm kiếm văn bản:
PostgreSQL cung cấp tính năng tìm kiếm văn bản đầy đủ, hệ thống hóa ký tự theo cách khoa học (thông qua ICU collations) để đảm bảo rằng các tìm kiếm được thực hiện một cách chính xác và nhất quán.
Tính sẵn sàng:
đảm bảo rằng cơ sở dữ liệu của bạn luôn sẵn sàng và có khả năng phục hồi trong trường hợp xảy ra thảm họa hoặc sự cố.
2.3.3. Ưu điểm của PostgreSQL
• Dễ sử dụng.
• Cho phép chạy các trang web, ứng dụng web động với LAMP.
• Lưu nhật ký đã viết trước đó để sử dụng như một cơ sở dữ liệu với khả năng sửa lỗi tốt.
• Có sẵn mã nguồn miễn phí theo giấy phép mã nguồn mở, cho phép chỉnh sửa và triển khai tùy theo nhu cầu của người dùng.
• Có khả năng đối tượng hóa dữ liệu.
• Có một cộng đồng đông đảo và nhiều kinh nghiệm.
• Giảm thiểu việc bảo trì hệ thống.
2.3.4. Nhược điểm của PostgreSQL
• Do không thuộc quyền quản lý của bất kỳ tổ chức nào nên gây khó khăn cho người dùng khi muốn tiếp cận với đầy đủ tính năng.
• Tập trung vào khả năng tương thích nên khi thực hiện thay đổi để cải thiện tốc độ thì sẽ yêu cầu nhiều công việc hơn so với MySQL.
• Một số ứng dụng nguồn mở không hỗ trợ PostgreSQL dù có hỗ trợ MySQL.
• Hiệu suất chậm hơn so với MySQL.