Như bạn có thể biết, bạn có thể mở rộng chức năng PostgreSQL bằng cách sử dụng các phần mở rộng PostgreSQL. Bạn có thể sử dụng các phần mở rộng khác nhau để làm cho PostgreSQL giống như một phiên bản doanh nghiệp và giải quyết các nhu cầu cụ thể. Trong blog này, chúng ta sẽ thấy một số tiện ích mở rộng nguồn mở phổ biến nhất trong PostgreSQL và cách nó có thể được sử dụng để mở rộng khả năng của nó.
PostgreSQL là cơ sở dữ liệu mã nguồn mở tiên tiến nhất. Hàng năm, cộng đồng PostgreSQL phát hành một phiên bản mới với một số tính năng mới nhưng có nhiều tính năng được phát triển bằng cách sử dụng các phần mở rộng có thể được sử dụng cho một trường hợp sử dụng cụ thể.
Một số tiện ích mở rộng này rất mạnh mẽ và phổ biến để xây dựng môi trường PostgreSQL cấp doanh nghiệp.
Pg_stat_statements
Mô-đun pg_stat_statements cung cấp một phương tiện để theo dõi thống kê thực thi của tất cả các câu lệnh SQL được thực thi bởi máy chủ PostgreSQL. Khi mô-đun pg_stat_statements được tải, nó sẽ theo dõi số liệu thống kê trên tất cả cơ sở dữ liệu của máy chủ. Thống kê được thu thập bởi mô-đun pg_stat_statements được cung cấp thông qua chế độ xem có tên pg_stat_statements. Bạn có thể kiểm tra thêm chi tiết về các chức năng pg_stat_statements và tham số cấu hình tại đây.
PostGIS
PostGIS là một phần mở rộng của hệ thống cơ sở dữ liệu PostgreSQL cho phép các đối tượng GIS (Hệ thống thông tin địa lý) được lưu trữ trong cơ sở dữ liệu. Nó bao gồm hỗ trợ các chỉ mục không gian R-Tree dựa trên GiST và các chức năng để phân tích và xử lý các đối tượng GIS.
PostGIS được sử dụng cho các đối tượng Không gian và Địa lý cho PostgreSQL. PostGIS thêm các kiểu (hình học, địa lý, raster, v.v.) vào cơ sở dữ liệu PostgreSQL. PostGIS cũng bổ sung các chức năng, toán tử và cải tiến chỉ mục áp dụng cho các kiểu không gian này. Bạn có thể kiểm tra phương pháp cài đặt tại đây.
Postgres_fdw
Mô-đun postgres_fdw cung cấp trình bao bọc dữ liệu nước ngoài postgres_fdw, có thể được sử dụng để truy cập dữ liệu được lưu trữ trong máy chủ cơ sở dữ liệu PostgreSQL bên ngoài. Khi có hai cơ sở dữ liệu PostgreSQL, postgres_fdw tham chiếu đến bảng của cơ sở dữ liệu khác từ một cơ sở dữ liệu. Sau khi bạn xác định FOREIGN TABLE, bạn có thể thực hiện CHỌN, CHÈN, CẬP NHẬT, XÓA giống như một cơ sở dữ liệu cục bộ.
Chức năng được cung cấp bởi mô-đun postgres_fdw về cơ bản trùng lặp với chức năng của mô-đun dblink cũ hơn. Nhưng mô-đun postgres_fdw cung cấp cú pháp rõ ràng hơn và tuân thủ tiêu chuẩn để truy cập các bảng từ xa và nó có thể mang lại hiệu suất tốt hơn trong nhiều trường hợp.
Trường hợp sử dụng chính của các bảng ngoại là làm cho dữ liệu có sẵn cho các hệ thống mà không cần sao chép hoặc nhân bản nó. Thậm chí có những cách triển khai sharding đơn giản bằng cách sử dụng FDW, vì dữ liệu trong các phân đoạn khác có thể có sẵn cho các truy vấn thông qua FDW.
Trong Oracle, bạn có thể lấy dữ liệu từ các bảng cơ sở dữ liệu từ xa bằng cách sử dụng DBLinks nhưng sự khác biệt chính giữa DBLinks và FDW là FDW có thể duy trì dữ liệu meta hoặc định nghĩa bảng về bảng ngoại tại địa phương.
Mysql_fdw
Mysql_fdw là một phần mở rộng PostgreSQL thực hiện một Trình gói dữ liệu nước ngoài (FDW) cho MySQL. Mô-đun Mysql_fdw tạo điều kiện cho việc sử dụng máy chủ PostgreSQL làm máy khách cho Máy chủ MySQL, có nghĩa là sau đó nó có thể tìm nạp dữ liệu từ cơ sở dữ liệu MySQL dưới dạng máy khách. Hiện tại, EnterpriseDB đang duy trì mô-đun này trên github.
Phiên bản trước của mysql_fdw chỉ được hỗ trợ ở chế độ chỉ đọc, nhưng phiên bản mới nhất cung cấp khả năng ghi. Người dùng hiện có thể đưa ra các câu lệnh chèn, cập nhật và xóa cho các bảng ngoại bằng cách sử dụng mysql_fdw. Nó sử dụng cơ chế ép kiểu PostgreSQL để cung cấp việc định kiểu ngược lại giữa kiểu dữ liệu MySQL và PostgreSQL.
Hstore
Mô-đun hstore triển khai kiểu dữ liệu hstore để lưu trữ các cặp khóa-giá trị trong một giá trị duy nhất trong PostgreSQL. Kiểu dữ liệu hstore rất hữu ích trong nhiều trường hợp sử dụng, chẳng hạn như dữ liệu bán cấu trúc hoặc các hàng có nhiều thuộc tính hiếm khi được truy vấn. Lưu ý rằng các khóa và giá trị chỉ là chuỗi văn bản.
Trước khi làm việc với kiểu dữ liệu hstore, bạn cần tạo phần mở rộng hstore để tải mô-đun đóng góp vào phiên bản PostgreSQL của bạn.
Pgaudit
pgAudit là một Tiện ích mở rộng Kiểm tra PostgreSQL cung cấp ghi nhật ký kiểm tra phiên và / hoặc đối tượng chi tiết thông qua cơ sở ghi nhật ký PostgreSQL tiêu chuẩn.
Mục tiêu chính của mô-đun pgAudit là cung cấp cho người dùng PostgreSQL khả năng tạo nhật ký kiểm tra thường được yêu cầu để tuân thủ các chứng chỉ của chính phủ, tài chính hoặc ISO.
Nói chung, kiểm toán là một cuộc kiểm tra chính thức tài khoản của một cá nhân hoặc tổ chức, thường là bởi một cơ quan độc lập. Thông tin được thu thập bởi mô-đun pgAudit được gọi một cách chính xác là dấu vết đánh giá hoặc nhật ký đánh giá.
Mô-đun pgAudit được phát triển để hỗ trợ các phiên bản PostgreSQL 9.5 trở lên.
Ghi nhật ký kiểm tra phiên từ mô-đun pgAudit cung cấp nhật ký chi tiết của tất cả các câu lệnh được thực thi bởi người dùng trong chương trình phụ trợ. Bạn có thể kiểm tra thêm chi tiết, cấu hình cũng như cách cài đặt và sử dụng nó trong PostgreSQL tại đây.
Orafce
Orafce là một mô-đun thực hiện các chức năng, kiểu dữ liệu và gói tương thích với Oracle. Đây là một công cụ mã nguồn mở với giấy phép BSD nên bất kỳ ai cũng có thể sử dụng công cụ này. Mô-đun này rất hữu ích trong tác vụ di chuyển Oracle sang PostgreSQL, nó có nhiều chức năng Oracle được triển khai trong PostgreSQL.
Các ứng dụng thường sử dụng các chức năng đó với nhiều lần xuất hiện. Bạn có thể giảm chi phí sửa đổi SQL bằng cách sử dụng công cụ này. Bạn có thể xem cách di chuyển từ Oracle sang blog PostgreSQL.
Tất cả các chức năng và gói được triển khai chính xác và nó được kiểm tra tốt.
Một số chức năng là:
- Dbms_output
- Dbms_random
- utl_file - các chức năng liên quan đến hệ thống tệp
- Dbms_pipe và dbms_alert
- PLVdate, PLVstr, PLVchr
- Kiểu dữ liệu DATE tương thích với Oracle và các chức năng như ADD_MONTHS, LAST_DAY, NEXT_DAY, v.v.
- Chức năng NVL
- Hàm SUBSTR và SUBSTRB
- Hỗ trợ VARCHAR2 và NVARCHAR2
- TO_DATE ()
Pg_bulkload
Mô-đun pg_bulkload cung cấp khả năng tải dữ liệu tốc độ cao cho người dùng PostgreSQL. mô-đun pg_bulkload được thiết kế để tải một lượng lớn dữ liệu vào cơ sở dữ liệu. Bạn có thể tải dữ liệu vào bảng bằng cách bỏ qua bộ đệm được chia sẻ PostgreSQL. Mô-đun pg_bulkload cũng có một số tính năng ETL như xác thực dữ liệu đầu vào và chuyển đổi dữ liệu với các chức năng bộ lọc.
Mục tiêu ban đầu của mô-đun pg_bulkload là một sự thay thế nhanh hơn cho lệnh COPY trong PostgreSQL.
Mô-đun pg_bulkload do Trung tâm NTT OSS phát triển và duy trì.
LƯU Ý QUAN TRỌNG:Trong môi trường nhân bản trực tuyến trong PostgreSQL, mô-đun pg_bulkload không hoạt động bình thường. Xem tại đây để biết thêm chi tiết.
Pgstattuple
Mô-đun pgstattuple cung cấp các chức năng khác nhau để có được số liệu thống kê cấp bộ trong PostgresQL. Hàm trong mô-đun pgstattuple trả về độ dài vật lý của một mối quan hệ, phần trăm bộ giá trị “chết” và thông tin khác. Điều này có thể hữu ích cho người dùng để xác định xem liệu có cần thiết phải hút chân không. Đối số cho hàm là tên của mối quan hệ đích (tùy chọn đủ điều kiện giản đồ) hoặc OID.
Pg_trgm
pg_trgm là một phần mở rộng PostgreSQL cung cấp đối sánh chuỗi mờ đơn giản trong PostgreSQL. Chi phí hoạt động và khái niệm của nó thấp hơn nhiều so với tìm kiếm toàn văn PostgreSQL hoặc một công cụ tìm kiếm riêng biệt.
Trigram hoặc trigraph là một nhóm gồm ba ký tự liên tiếp được lấy từ một chuỗi. Bạn có thể đo mức độ giống nhau của hai chuỗi bằng cách đếm số bát quái mà chúng chia sẻ. Ý tưởng đơn giản về bát quái này hóa ra lại rất hiệu quả để đo mức độ giống nhau của các từ trong nhiều ngôn ngữ tự nhiên.
Nói chung, mô-đun pg_trgm có thể trợ giúp khi:
- Bạn cần đối sánh chuỗi mờ không phân biệt chữ hoa chữ thường trong PostgreSQL.
- Bạn muốn tăng tốc LIKE, ILIKE, ~ hoặc ~ * trong PostgreSQL.
- Bạn muốn tìm kiếm các mẫu không được cố định bên trái (ví dụ:% john%). Các mẫu như vậy không được chỉ mục B-tree trong PostgreSQL hỗ trợ.
Danh sách các mô-đun / phần mở rộng ở trên rất hữu ích để mở rộng khả năng của PostgreSQL. Có một số tiện ích mở rộng khác không có trong blog nhưng nó rất hữu ích để mở rộng chức năng PostgreSQL. Những điều này như sau.
- Tiện ích mở rộng ngôn ngữ:PL / Python, PL / Perl, PL / R, PL / v8, PL / sh, v.v.
- Cstore_fdw
- Mongo_fdw
- HypoPG
- Tds_fdw
- Plprofiler
Kết luận
Có nhiều tiện ích mở rộng trong các tiện ích mở rộng được cộng đồng PostgreSQL hỗ trợ và một số tiện ích mở rộng của bên thứ ba, tất cả đều được sử dụng cho một trường hợp sử dụng cụ thể. Bạn có thể mở rộng khả năng hoặc chức năng của PostgreSQL bằng cách sử dụng các mô-đun đó.