6. Cấu trúc của luận văn
2.1. PostgreSQL và khung nhìn thực trong PostgreSQL
PostgreSQL là một hệ quản trị cơ sở dữ liệu (HQT CSDL) mã nguồn mở, được phát triển dựa trên mã nguồn của trường Đại học Berkeley, hỗ trợ đầy đủ các thành phần phổ biến của một HQT CSDL như các truy vấn phức hợp, bẫy sự kiện, khung nhìn, tính toàn vẹn của giao dịch,... và có thể chạy trên mọi hệ điều hành. Được phát triển hơn 20 năm qua bởi đội ngũ kĩ sư giàu kinh nghiệm, PostgreSQL đã tạo được lòng tin về độ tin cậy cũng như tính đúng đắn, toàn vẹn dữ liệu, được bộ thông tin và truyền thông khuyến cáo sử dụng.
PostgreSQL không chỉ là cơ sở dữ liệu quan hệ, nó là quan hệ hướng đối tượng. Điều này cung cấp cho nó một vài lợi thế so với các cơ sở dữ liệu SQL mã nguồn mở khác như MySQL, MariaDB và Firebird.
Một đặc điểm cơ bản của cơ sở dữ liệu quan hệ hướng đối tượng là hỗ trợ các đối tượng người dùng tự định nghĩa và các hành vi của chúng bao gồm các kiểu dữ liệu, các hàm, các thao tác, các tên miền và các chỉ mục. Điều này làm cho PostgreSQL cực kỳ mạnh và linh hoạt. Trong những cái khác, các cấu trúc dữ liệu phức tạp có thể được tạo ra, lưu trữ, và truy xuất.
PosgreSQL cũng là HQT CSDL đóng vai trò tiên phong trong việc đưa ra những khái niệm quan trọng mà các HQT CSDL thương mại khác rất lâu sau mới có. Là một HQT CSDL mã nguồn mở hàng đầu trên thế giới và KNT đã được triển khai trên PostgreSQL ở các phiên bản 9.3.4, 9.4, 10…. KNT là tính năng bảng ảo tiện lợi khác đã được hỗ trợ bởi PostgreSQL. KNT giống như các view thông thường trong việc trình diễn tập kết quả của một truy vấn mà bạn muốn sử dụng thường xuyên, ngoại trừ tập kết quả thực sự được lưu trữ trên ổ đĩa giống như các bảng thông thường. KNT cũng có thể được đánh chỉ mục, không giống các views thông thường được tạo ra mỗi lần chúng được gọi, KNT là các ảnh chụp tại một thời điểm. Chúng không được làm mới (refreshed) ngoại trừ được chỉ định. Điều này có thể tăng đáng kể tốc độ với các truy vấn chạy sử dụng KNT. Thay vì sử dụng các views thông thường hoặc phải làm các join phức tạp trên các bảng hoặc thực hiện các hàm tập hợp
(aggregation funcitons) trong truy vấn, sử dụng materialized views với các dữ liệu cần thiết sẵn sàng và chờ đợi trên ổ đĩa để tăng hiệu quả. Khi bạn sẵn sàng cập nhật dữ liệu trong materialized view, nó có thể làm mới sử dụng lệnh REFRESH [15], tuy nhiên KNT trong PostgreSQL vẫn chưa hỗ trợ vấn đề cập nhật đồng bộ gia tăng. Do vậy, việc nghiên cứu các kỹ thuật CNGT cho KNT trên PostgesSQL đang rất được quan tâm.