Mục lục
Trong con đường tìm hiểu tối ưu hóa con database PostgreSQL của mình, tôi đã tìm được một bài viết rất hay so sánh 2 phần mềm thông dụng nhất có tác dụng quản lý số lượng session trong PostgreSQL, đó là pgpool II và pgbouncer. Thấy khá hữu ích cho mọi người nên tôi đã dịch ra tiếng Việt cho anh em mình dễ theo dõi nhé.
Link bài viết gốc ở đây:
1. Bài dịch – Phần 1: So sánh về tính năng
Trong các bài viết trước, chúng tôi đã nói sơ qua về việc sử dụng PgBouncer và Pgpool-II, kiến trúc Connection Pooling và những ưu và nhược điểm của việc sử dụng 1 trong số chúng để triển khai database PostgreSQL của bạn. Trong bài viết này, chúng tôi sẽ so sánh trực diện PgBouncer và Pgpool-II về tính năng và hiệu năng khi triển khai trên database PostgreSQL.
Hãy bắt đầu bằng cách so sánh các tính năng của PgBouncer với Pgpool-II:
| PgBouncer | Pgpool-II |
---|---|---|
Tiêu tốn tài nguyên | Chỉ sử dụng một process nên rất nhẹ. PgBouncer chỉ cần lượng bộ nhớ nhỏ, ngay cả khi xử lý các tập dữ liệu lớn. Winner! | Nếu chúng ta yêu cầu n kết nối song song, điều này sẽ tạo ra n process con. Theo mặc định, có 32 process con được chia nhỏ. |
Khi nào connection được tái sử dụng | PgBouncer xác định một Pool connection cho mỗi cặp user-database. Pool này được chia sẻ giữa tất cả các máy khách, vì vậy luôn có kết nối trong Pool cho tất cả các máy khách. Winner! | Pgpool-II định nghĩa một process cho mỗi process con. Chúng ta không thể kiểm soát máy khách sẽ được kết nối với process con nào. Một máy khách chỉ được hưởng lợi nếu nó kết nối với đúng một process con mà trước đó đã phục vụ một connection khác cho đúng cặp user-database mà máy khách hiện tại đang dùng. |
Các chế độ Pooling | PgBouncer hỗ trợ ba chế độ khác nhau: session (connection được trả về pool khi máy khách ngắt kết nối), transaction(được trả về pool khi user thực hiện commit hoặc rollback) hoặc statement (connect được trả lại pool sau khi thực hiện mỗi câu lệnh). Quá nhiều option đúng không? Winner | Pgpool-II chỉ hỗ trợ chế độ session – hiệu quả đến đâu phụ thuộc vào hành vi trên máy khách khá nhiều. |
Hỗ trợ High Avaiability (HA) | Không hỗ trợ | Có thể cấu hình tính năng High Avaiability cho PostgreSQL được hỗ trợ thông qua các process theo dõi được tích hợp sẵn trong Pgpool-II. Winner! |
Hỗ trợ Load Balancing | Không hỗ trợ – PgBouncer khuyến nghị sử dụng HAProxy để có 2 chức năng High Avaiability và Load Balancing | Hỗ trợ cân bằng tải tự động – thậm chí còn đủ thông minh để chuyển hướng các câu lệnh chỉ đọc (read-only) đến các database standby và câu lệnh có ghi vào database chính. Winner! |
Hỗ trợ nhiều cluster | Một PgBouncer instance có thể đứng trước nhiều PostgreSQL cluster (một node hoặc tập hợp các replication). Điều này có thể giảm chi phí cho phần mềm trung gian khi có nhiều PostgreSQL cluster. Winner! (Lưu ý – lợi thế này chỉ dành cho các trường hợp cụ thể) | Pgpool-II không hỗ trợ nhiều cluster. |
Điều khiển connection | PgBouncer cho phép giới hạn các connection trên mỗi pool, mỗi database, mỗi user hoặc mỗi máy khách. Winner! | Pgpool-II chỉ cho phép giới hạn số lượng connection tổng thể. |
Hàng đợi connection | PgBouncer hỗ trợ xếp hàng ở cấp độ ứng dụng. Winner! | Pgpool-II hỗ trợ xếp hàng ở cấp kernel – điều này có thể khiến pg_bench trên CentOS 6 bị đóng băng. |
Khả năng xác thực (Authentication) |
PgBouncer hỗ trợ cơ chế xác thực Pass-through Winner! | Pgpool-II không hỗ trợ xác thực Pass-through – người dùng và mật khẩu được mã hóa md5 phải được liệt kê trong một tệp và được cập nhật theo cách thủ công mỗi khi người dùng cập nhật mật khẩu. Pgpool-II hỗ trợ xác thực không cần mật khẩu thông qua chứng chỉ PAM hoặc SSL. Tuy nhiên, chúng phải được thiết lập bên ngoài hệ thống PostgreSQL, trong khi PgBouncer có thể đẩy nó xuống cho máy chủ PostgreSQL xử lý. |
Khả năng quản lý | PgBouncer cung cấp một database ảo báo cáo nhiều số liệu thống kê hữu ích khác nhau. | Pgpool-II cung cấp giao diện quản trị chi tiết, bao gồm giao diện người dùng GUI. Winner! |
Xác thực Host-based | Có hỗ trợ | Có hỗ trợ |
SSL | Hỗ trợ toàn bộ | Hỗ trợ toàn bộ |
Logical Replication | Không được hỗ trợ thông qua PgBouncer. | Được hỗ trợ thông qua Pgpool-II, nhưng điều này được thực hiện bằng cách gửi truy vấn ghi tới tất cả các node và thường không được khuyến khích. |
License | ISC – rất dễ dãi, về cơ bản cho phép sử dụng tất cả. | Giấy phép tùy chỉnh – dễ dãi như nhau 😀 |
2. Tóm lại:
- Pgpool-II là một công cụ tuyệt vời nếu bạn cần tính năng Load Balancing và High Availability. Connection Pooling chỉ nên được coi là bia kèm lạc thôi
- PgBouncer chỉ làm một việc, nhưng nó thực sự rất tốt. Nếu mục tiêu là hạn chế số lượng kết nối và giảm tiêu thụ tài nguyên, thì PgBouncer sẽ lựa chọn sáng suốt.
- Cũng hoàn toàn ổn khi sử dụng cả PgBouncer và Pgpool-II. Bạn có thể dùng PgBouncer để cung cấp Connection Pooling, kết nối với Pgpool-II đế cung cấp khả năng Load Balancing và High Availability. Điều này mang lại cho bạn ưu điểm của cả 2 công cụ. WOW!
Phần 2 của bài viết, xin mời các bạn đọc tại đây
Nguồn: https://dangxuanduy.com/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.