Bước tới nội dung

Thành viên:Ioe2015/Chỗ thử

Bách khoa toàn thư mở Wikipedia
PostgreSQL
Nhà phát triểnNhóm Phát triển Toàn cầu PostgreSQL[2]
Phát hành lần đầu8 tháng 7 năm 1996;
29 năm trước
 (1996-07-08)[3]
Viết bằngC (và C++ cho phần phụ thuộc LLVM [en])
Thể loạiRDBMS
Giấy phépGiấy phép PostgreSQL (Phần mềm tự do nguồn mở, cho dùng [en])[4][5][6]
Giấy phép PostgreSQL[4]
Nhà xuất bảnNhóm Phát triển Toàn cầu PostgreSQL
Ban quản trị Viện Đại học California
Tương thích với DFSG[7][8]
OSI chứng nhận[6]
Tương thích với GPL
CopyleftKhông
Liên kết giữa mã nguồn với một giấy phép khác
Websitepostgresql.org/about/licence

PostgreSQL (/ˈpstɡrɛskjuˌɛl/ POHST-gres-kew-EL),[9][10] còn được gọi là Postgres, là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) tự do và mã nguồn mở nhấn mạnh vào khả năng mở rộng [en] và sự tuân thủ SQL. PostgreSQL cung cấp các giao tác [en] với các đặc tính nguyên tử, nhất quán, cô lập [en], bền vững (ACID), các khung nhìn [en] có thể cập nhật tự động, khung nhìn cụ thể hóa [en], thủ tục sự kiện [en], Khóa ngoại, và thủ tục lưu trữ [en].[11]Nó được hỗ trợ trên tất cả các hệ điều hành chính, bao gồm Windows, Linux, MacOS, FreeBSD, và OpenBSD [en], và xử lý nhiều khối lượng công việc khác nhau từ các máy đơn lẻ đến các kho dữ liệu, hồ dữ liệu [en],[12] hoặc các dịch vụ web có nhiều người dùng cùng lúc.

Nhóm Phát triển Toàn cầu PostgreSQL chỉ tập trung vào việc phát triển một bộ máy cơ sở dữ liệu [en] và các thành phần có liên quan chặt chẽ.Về mặt kỹ thuật, phần cốt lõi này là những gì cấu thành nên chính PostgreSQL. Tuy nhiên, có một cộng đồng nhà phát triển và hệ sinh thái rộng lớn cung cấp các bộ tính năng quan trọng khác mà theo truyền thống có thể được cung cấp bởi một nhà cung cấp phần mềm sở hữu độc quyền. Các bộ tính năng này bao gồm các tính năng của bộ máy cơ sở dữ liệu phục vụ mục đích đặc biệt, chẳng hạn như những tính năng cần thiết để hỗ trợ cơ sở dữ liệu không gian địa lý [en][13] hoặc thời gian [en][14], hoặc các tính năng mô phỏng các sản phẩm cơ sở dữ liệu khác.[15][16][17][18] Ngoài ra, các bên thứ ba cũng cung cấp nhiều tính năng giao diện người dùng và máy tính khác nhau, chẳng hạn như Giao diện đồ họa người dùng[19][20][21] hoặc các bộ công cụ cân bằng tải [en] và tính sẵn sàng cao [en].[22]Mạng lưới hỗ trợ PostgreSQL rộng lớn của bên thứ ba gồm nhiều cá nhân, công ty, sản phẩm và dự án. Mặc dù không thuộc Nhóm Phát triển PostgreSQL, mạng lưới này đóng vai trò thiết yếu đối với việc áp dụng và sử dụng bộ máy cơ sở dữ liệu PostgreSQL, tạo nên một hệ sinh thái PostgreSQL rộng lớn.[23]

PostgreSQL ban đầu được đặt tên là POSTGRES, ám chỉ nguồn gốc của nó là hệ thống kế nhiệm của cơ sở dữ liệu Ingres được phát triển tại Đại học California, Berkeley.[24][25] Năm 1996, dự án được đổi tên thành PostgreSQL để phản ánh sự hỗ trợ cho SQL. Sau một cuộc đánh giá vào năm 2007, nhóm phát triển đã quyết định giữ nguyên tên PostgreSQL và bí danh Postgres.[26]

Lịch sử

Ingres và POSTGRES của trường Đại học (1982–1994)

PostgreSQL phát triển từ dự án Ingres tại Đại học California, Berkeley. Năm 1982, trưởng nhóm Ingres, Michael Stonebraker [en], đã rời Berkeley để tạo ra một phiên bản độc quyền của Ingres.[24] Ông trở lại Berkeley vào năm 1985 và bắt đầu một dự án hậu Ingres nhằm giải quyết các vấn đề ngày càng trở nên rõ ràng trong đầu thập niên 1980 của những hệ thống cơ sở dữ liệu đương thời. Ông đã giành được Giải Turing vào năm 2014 cho dự án này cũng như các dự án khác,[27] cùng với các kỹ thuật tiên phong trong đó.

Dự án mới, mang tên POSTGRES, nhằm mục đích bổ sung số lượng tính năng vừa đủ để hỗ trợ hoàn toàn các kiểu dữ liệu.[28] Các tính năng này bao gồm khả năng định nghĩa kiểu và mô tả đầy đủ các mối quan hệ  một điều được sử dụng rộng rãi, nhưng được duy trì hoàn toàn bởi người dùng. Trong POSTGRES, cơ sở dữ liệu hiểu các mối quan hệ và có thể truy xuất thông tin trong các bảng liên quan một cách tự nhiên bằng cách sử dụng các quy tắc. POSTGRES sử dụng nhiều ý tưởng của Ingres, nhưng không dùng mã nguồn của nó.[29]

Bắt đầu từ năm 1986, các bài báo đã được xuất bản để mô tả cơ sở của hệ thống, và một phiên bản nguyên mẫu đã được trình diễn tại Hội nghị SIGMOD [en] của ACM năm 1988. Nhóm đã phát hành phiên bản 1 cho một số lượng nhỏ người dùng vào tháng 6 năm 1989, tiếp theo là phiên bản 2 vào tháng 6 năm 1990 với hệ thống quy tắc được viết lại. Phiên bản 3, được phát hành vào năm 1991, một lần nữa viết lại hệ thống quy tắc, đồng thời bổ sung hỗ trợ cho nhiều trình quản lý lưu trữ[30] và một bộ máy truy vấn cải tiến. Đến năm 1993, số lượng người dùng bắt đầu làm dự án trở nên quá tải với các yêu cầu hỗ trợ và tính năng. Sau khi phát hành phiên bản 4.2[31] vào ngày 30 tháng 6 năm 1994  chủ yếu là dọn dẹp mã nguồn  dự án đã kết thúc. Berkeley đã phát hành POSTGRES theo một biến thể của giấy phép MIT, cho phép các nhà phát triển khác sử dụng mã cho bất kỳ mục đích nào. Tại thời điểm đó, POSTGRES sử dụng một trình thông dịch ngôn ngữ truy vấn POSTQUEL [en] chịu ảnh hưởng từ Ingres, trình thông dịch này có thể được sử dụng tương tác bằng một ứng dụng bảng điều khiển [en] có tên là monitor.

Postgres95 (1994–1996)

Vào năm 1994, hai sinh viên cao học của Berkeley là Andrew Yu và Jolly Chen đã thay thế trình thông dịch ngôn ngữ truy vấn POSTQUEL bằng một trình thông dịch cho ngôn ngữ truy vấn SQL, tạo ra Postgres95. Bảng điều khiển monitor cũng được thay thế bằng psql. Yu và Chen đã công bố phiên bản đầu tiên (0.01) cho những người kiểm thử bản beta vào ngày 5 tháng 5 năm 1995. Phiên bản 1.0 của Postgres95 đã được công bố vào ngày 5 tháng 5 năm 1995, với một giấy phép rộng mở hơn, cho phép phần mềm có thể được sửa đổi tự do. Vào ngày 8 tháng 7 năm 1996, Marc Fournier tại Hub.org Networking Services đã cung cấp máy chủ phát triển phi đại học đầu tiên cho nỗ lực phát triển mã nguồn mở này.[3] Với sự tham gia của Bruce Momjian và Vadim B. Mikheev, công việc ổn định mã nguồn kế thừa từ Berkeley đã bắt đầu.

PostgreSQL (1996–nay)

Năm 1996, dự án được đổi tên thành PostgreSQL để phản ánh nó hỗ trợ SQL. Dự án bắt đầu có trang web riêng là PostgreSQL.org vào ngày 22 tháng 10 năm 1996.[32] Bản phát hành PostgreSQL đầu tiên đã tạo nên phiên bản 6.0 vào ngày 29 tháng 1 năm 1997. Kể từ đó, các nhà phát triển và tình nguyện viên trên khắp thế giới đã duy trì phần mềm này dưới danh nghĩa Nhóm Phát triển Toàn cầu PostgreSQL.[2]

Dự án tiếp tục cung cấp các bản phát hành theo Giấy phép PostgreSQL phần mềm tự do nguồn mở. Mã nguồn đến từ những đóng góp của các nhà cung cấp phần mềm độc quyền, công ty hỗ trợ, và các lập trình viên nguồn mở.

Tính đến năm 2025, PostgreSQL đang ở phiên bản chính thứ 18, phiên bản này nổi bật trong việc triển khai I/O bất đồng bộ (AIO), cho phép người dùng cơ sở dữ liệu thực hiện các tác vụ vào ra tương tranh như đọc trước (readahead) và quét tuần tự (sequential scan).[33]


Kiểm soát tương tranh nhiều phiên bản (MVCC)

PostgreSQL quản lý sự tương tranh thông qua kiểm soát tương tranh nhiều phiên bản [en] (MVCC). Cơ chế này cung cấp cho mỗi giao tác một "bản chụp" của cơ sở dữ liệu, cho phép thực hiện các thay đổi mà không ảnh hưởng đến các giao tác khác. Điều này loại bỏ phần lớn sự cần thiết của các khóa (lock) đọc và đảm bảo cơ sở dữ liệu duy trì các nguyên tắc ACID. PostgreSQL cung cấp bốn mức cô lập giao tác [en]: Read Uncommitted, Read Committed, Repeatable Read và Serializable. Bởi vì PostgreSQL miễn nhiễm với lỗi đọc bẩn (dirty read), việc yêu cầu mức độ cô lập giao tác Read Uncommitted sẽ được thay thế bằng mức Read Committed. PostgreSQL hỗ trợ khả năng nối tiếp hoá [en] hoàn toàn thông qua phương pháp cô lập bản chụp [en] (SSI) có thể nối tiếp hoá.[34] Cách triển khai MVCC của PostgreSQL dễ gặp các vấn đề về hiệu năng và cần phải tinh chỉnh khi chịu tải ghi nặng cập nhật các hàng hiện có.[35]

Lưu trữ và sao chép

Sao chép

PostgreSQL bao gồm tính năng sao chép nhị phân tích hợp dựa trên việc chuyển các thay đổi (nhật ký ghi trước [en] – WAL) đến các nút bản sao một cách bất đồng bộ. Hệ thống cũng có khả năng chạy các truy vấn chỉ đọc đối với các nút bản sao này. Điều này cho phép phân chia lưu lượng đọc giữa nhiều nút một cách hiệu quả. Các phần mềm sao chép trước đây, cho phép mở rộng khả năng đọc tương tự, thường dựa vào việc thêm các thủ tục sự kiện sao chép vào máy chủ, làm tăng mức tải.

PostgreSQL được tích hợp sẵn tính năng sao chép đồng bộ. Cơ chế này đảm bảo rằng với mỗi giao tác ghi, máy chủ chính sẽ chờ đến khi có ít nhất một nút bản sao ghi xong dữ liệu vào nhật ký giao tác [en] của nó. Khác với các hệ quản trị cơ sở dữ liệu khác, tính bền vững của một giao tác (dù là đồng bộ hay bất đồng bộ) trong PostgreSQL có thể được cấu hình linh hoạt ở mức cơ sở dữ liệu, mức người dùng, mức phiên làm việc hoặc thậm chí ở cấp độ của từng giao tác đơn lẻ. Sự linh hoạt này rất hữu ích, bởi vì không phải khối lượng công việc nào cũng đòi hỏi mức độ bảo đảm khắt khe như vậy. Việc áp dụng sao chép đồng bộ cho toàn bộ dữ liệu thường không được ưa chuộng, vì hệ thống sẽ bị giảm hiệu năng do phải chờ xác nhận từ các máy dự phòng đồng bộ.

Máy chủ dự phòng có thể là đồng bộ hoặc bất đồng bộ. Có thể chỉ định các máy chủ dự phòng đồng bộ trong cấu hình nhằm xác định máy chủ nào là ứng cử viên cho quá trình sao chép đồng bộ. Máy chủ đầu tiên trong danh sách đang hoạt động truyền phát tích cực sẽ được sử dụng làm máy chủ đồng bộ hiện tại. Khi máy chủ này gặp sự cố, hệ thống sẽ chuyển đổi dự phòng sang máy tiếp theo trong danh sách.

Tính năng sao chép của PostgreSQL có thể gây ra xung đột giữa máy chủ chính và máy chủ dự phòng. Điều này đặc biệt xảy ra bất cứ khi nào các bộ giá trị bị xóa sớm khỏi máy chủ dự phòng, mặc dù vẫn đang có các truy vấn truy cập vào chúng.[36] Để giải quyết vấn đề này, PostgreSQL đi kèm với một cờ phản hồi[37]. Cờ này cho phép máy chủ dự phòng chủ động thông báo cho máy chủ chính về những truy vấn đang diễn ra, nhằm giảm thiểu loại xung đột này.

Tính năng sao chép nhiều chủ [en] đồng bộ không có trong lõi của PostgreSQL. Postgres-XC, một dự án dựa trên PostgreSQL, cung cấp khả năng sao chép nhiều chủ đồng bộ có thể mở rộng.[38] Nó được cấp phép theo cùng một giấy phép với PostgreSQL. Một dự án liên quan được gọi là Postgres-XL [en]. Postgres-R là một bản phân nhánh khác.[39] Sao chép hai chiều (bidirectional replication – BDR) là một hệ thống sao chép nhiều chủ bất đồng bộ dành cho PostgreSQL.[40]

Các công cụ như repmgr giúp việc quản lý các cụm sao chép trở nên dễ dàng hơn.

Hiện có sẵn một số gói sao chép dựa trên thủ tục sự kiện bất đồng bộ. Những gói này vẫn hữu ích ngay cả sau khi đã mở rộng các khả năng cốt lõi, dành cho các tình huống mà việc sao chép nhị phân toàn bộ cụm cơ sở dữ liệu là không phù hợp:

  • Slony-I [en]
  • Londiste, một phần của SkyTools (được phát triển bởi Skype)
  • Sao chép nhiều chủ Bucardo (được phát triển bởi Backcountry.com [en])[41]
  • Hệ thống sao chép nhiều chủ, nhiều tầng SymmetricDS [en]

Chỉ mục

PostgreSQL có hỗ trợ tích hợp cho các chỉ mục B-treeBảng băm thông thường, cùng với bốn phương pháp truy cập chỉ mục: cây tìm kiếm tổng quát hóa (GiST [en]), chỉ mục đảo ngược [en] tổng quát hóa (GIN), GiST phân vùng không gian (SP-GiST)[42] và chỉ mục phạm vi khối [en] (BRIN). Ngoài ra, người dùng có thể tạo các phương pháp truy cập chỉ mục của riêng mình, mặc dù đây là một quá trình khá phức tạp. Các chỉ mục trong PostgreSQL cũng hỗ trợ những tính năng sau:

  • Chỉ mục biểu thức [en] có thể được tạo bằng chỉ mục của kết quả từ một biểu thức hoặc hàm, thay vì chỉ đơn giản là giá trị của một cột.
  • Chỉ mục một phần [en], vốn chỉ lập chỉ mục cho một phần của bảng, có thể được tạo bằng cách thêm mệnh đề WHERE vào cuối câu lệnh CREATE INDEX. Điều này cho phép tạo ra một chỉ mục có kích thước nhỏ hơn.
  • Bộ lập kế hoạch có khả năng sử dụng kết hợp nhiều chỉ mục để đáp ứng các truy vấn phức tạp, thông qua các thao tác chỉ mục bitmap [en] tạm thời trong bộ nhớ. Tính năng này rất hữu ích cho các ứng dụng kho dữ liệu trong việc kết hợp một bảng sự kiện [en] lớn với các bảng chiều [en] nhỏ hơn, chẳng hạn như những bảng được sắp xếp theo một lược đồ hình sao [en].
  • Lập chỉ mục k hàng xóm gần nhất (k-NN) (còn được gọi là KNN-GiST[43]) cung cấp khả năng tìm kiếm hiệu quả các "giá trị gần nhất" với giá trị được chỉ định. Tính năng này có thể được dùng để tìm các từ tương tự, hoặc các đối tượng hay địa điểm gần nhau với dữ liệu không gian địa lý [en]. Có thể làm vậy mà không cần phải đối chiếu toàn bộ các giá trị.
  • Quá trình quét chỉ sử dụng chỉ mục thường cho phép hệ thống tìm nạp dữ liệu từ các chỉ mục mà không bao giờ phải truy cập vào bảng chính.
  • Chỉ mục phạm vi khối [en] (BRIN).

Lược đồ

Các lược đồ PostgreSQL là các không gian tên, cho phép các đối tượng cùng loại và cùng tên cùng tồn tại trong một cơ sở dữ liệu duy nhất. Không nên nhầm lẫn chúng với lược đồ cơ sở dữ liệu [en] – một đặc tả mang tính trừu tượng, có cấu trúc và có tổ chức, định nghĩa cách thức dữ liệu của mỗi bảng liên kết với dữ liệu trong các bảng khác. Tất cả các đối tượng cơ sở dữ liệu PostgreSQL đều tồn tại trong một lược đồ, ngoại trừ một số đối tượng toàn cục chẳng hạn như các vai trò và không gian bảng [en]. Chúng không thể được lồng vào nhau, các lược đồ không thể chứa các lược đồ khác. Hệ thống cấp phép kiểm soát quyền truy cập vào các lược đồ và nội dung của chúng. Theo mặc định, các cơ sở dữ liệu mới tạo chỉ có một lược đồ duy nhất được gọi là public, nhưng có thể thêm các lược đồ khác và lược đồ public không phải là bắt buộc.

Cài đặt search_path xác định thứ tự mà PostgreSQL kiểm tra các lược đồ đối với các đối tượng không có đủ điều kiện (những đối tượng không có lược đồ làm tiền tố). Theo mặc định, nó được thiết đặt thành $user, public ($user tham chiếu đến người dùng cơ sở dữ liệu đang kết nối hiện tại). Giá trị mặc định này có thể được thiết lập ở cấp độ cơ sở dữ liệu hoặc vai trò. Tuy nhiên, vì nó là một tham số phiên, có thể thay đổi tự do (thậm chí nhiều lần) tham số này trong một phiên làm việc của máy khách, và chỉ ảnh hưởng đến phiên làm việc đó.

Các lược đồ không tồn tại hoặc các lược đồ khác không thể truy cập bởi người dùng đã đăng nhập, vốn được liệt kê trong search_path, sẽ âm thầm bị bỏ qua trong quá trình tra cứu đối tượng. Các đối tượng mới sẽ được tạo trong bất kỳ lược đồ hợp lệ nào (có thể truy cập được) xuất hiện đầu tiên trong search_path.

Kiểu dữ liệu

PostgreSQL hỗ trợ nhiều kiểu dữ liệu nguyên bản khác nhau, bao gồm:

  • Kiểu luận lí (boolean)
  • Kiểu số có độ chính xác tùy ý [en]
  • Ký tự (text, varchar, char)
  • Nhị phân
  • Ngày/giờ (timestamp, time (có hoặc không có múi giờ), date, interval)
  • Tiền tệ
  • Kiểu liệt kê (enum)
  • Chuỗi bit
  • Kiểu tìm kiếm văn bản
  • Kiểu hỗn hợp
  • HStore, một phần mở rộng cho phép lưu trữ dưới dạng khóa–giá trị bên trong PostgreSQL[44]
  • Mảng (độ dài thay đổi [en] và có thể thuộc bất kỳ kiểu dữ liệu nào, bao gồm văn bản và các kiểu hỗn hợp) với tổng dung lượng lưu trữ lên đến 1 GB
  • Các dạng hình học nguyên thủy
  • Địa chỉ IPv4IPv6
  • Khối CIDRĐịa chỉ MAC
  • XML hỗ trợ các truy vấn XPath [en]
  • Định danh duy nhất phổ quát [en] (UUID)
  • JavaScript Object Notation (JSON), và JSONB nhị phân [en] nhanh hơn (không giống với BSON [en][45])

Ngoài ra, người dùng có thể tạo các kiểu dữ liệu của riêng mình. Những kiểu dữ liệu này thường có thể được lập chỉ mục hoàn toàn thông qua cơ sở hạ tầng lập chỉ mục của PostgreSQL  GiST, GIN, SP-GiST. Các ví dụ bao gồm các kiểu dữ liệu của hệ thống thông tin địa lý (GIS) từ dự án PostGIS [en] dành cho PostgreSQL.

Ngoài ra còn có một kiểu dữ liệu được gọi là miền (domain), giống với như các kiểu dữ liệu khác nhưng có các ràng buộc tùy chọn do người tạo ra miền đó định nghĩa. Tức là, bất kỳ dữ liệu nào được nhập vào một cột sử dụng miền đó sẽ phải tuân thủ mọi ràng buộc của miền đó.

Một kiểu dữ liệu đại diện cho một phạm vi dữ liệu có thể được sử dụng, và chúng được gọi là các kiểu phạm vi (range type). Chúng có thể là các phạm vi rời rạc (ví dụ: tất cả các giá trị số nguyên từ 1 đến 10) hoặc các phạm vi liên tục (ví dụ: bất kỳ thời điểm nào từ 10:00 sáng đến 11:00 sáng). Các kiểu phạm vi tích hợp sẵn bao gồm phạm vi số nguyên, số nguyên lớn, số thập phân, dấu thời gian (có và không có múi giờ) và ngày tháng.

Có thể tạo ra các kiểu phạm vi tùy chỉnh để có các loại phạm vi mới, chẳng hạn như phạm vi địa chỉ IP sử dụng kiểu inet làm cơ sở, hoặc phạm vi số thực phẩy động sử dụng kiểu dữ liệu float làm cơ sở. Các kiểu phạm vi hỗ trợ ranh giới phạm vi bao hàm và loại trừ, lần lượt sử dụng các ký tự [](). (ví dụ, nửa khoảng [4,9) gồm các số 4, 5, 6, 7 và 8.) Các kiểu phạm vi cũng tương thích với các toán tử hiện có được sử dụng để kiểm tra sự chồng chéo, sự bao hàm, nằm bên phải của, v.v.

Đối tượng do người dùng định nghĩa

Hầu hết tất cả các loại đối tượng mới bên trong cơ sở dữ liệu đều có thể được tạo, bao gồm:

  • Ép kiểu
  • Chuyển đổi (conversion)
  • Kiểu dữ liệu
  • Miền dữ liệu [en]
  • Hàm, bao gồm hàm tổng hợp và hàm cửa sổ
  • Chỉ mục, gồm cả chỉ mục tùy chỉnh cho các kiểu dữ liệu tùy chỉnh
  • Toán tử (các toán tử hiện có có thể được nạp chồng)
  • Ngôn ngữ thủ tục

Kế thừa

Các bảng có thể được thiết lập để kế thừa các đặc điểm của chúng từ một bảng cha. Dữ liệu trong các bảng con sẽ có vẻ như tồn tại trong các bảng cha, trừ khi dữ liệu được chọn từ bảng cha bằng cách sử dụng từ khóa ONLY, ví dụ: SELECT * FROM ONLY parent_table;. Việc thêm một cột vào bảng cha sẽ khiến cột đó xuất hiện trong bảng con.

Sự kế thừa có thể dùng để thực hiện phân vùng bảng, sử dụng các thủ tục sự kiện hoặc các quy tắc để hướng các lệnh chèn vào bảng cha đến đúng các bảng con thích hợp.

Tính năng này không được hỗ trợ hoàn toàn. Cụ thể, các ràng buộc bảng hiện tại không thể kế thừa được. Tất cả các ràng buộc kiểm tra và ràng buộc not-null (không rỗng) trên bảng cha sẽ tự động được các bảng con kế thừa. Các loại ràng buộc khác (ràng buộc duy nhất, khóa chính và khóa ngoại) không được kế thừa.

Sự kế thừa cung cấp một cách để ánh xạ các đặc điểm của cấu trúc phân cấp tổng quát hóa, vốn được mô tả trong các mô hình thực thể – liên kết [en] (ERD), ánh xạ trực tiếp vào cơ sở dữ liệu PostgreSQL.

Các tính năng lưu trữ khác

  • Ràng buộc toàn vẹn tham chiếu [en] bao gồm các ràng buộc khóa ngoại, ràng buộc [en] cột, và kiểm tra hàng
  • Lưu trữ đối tượng lớn dưới dạng nhị phân và văn bản
  • Không gian bảng [en]
  • So lựa sắp xếp (collation) cho từng cột
  • Sao lưu trực tuyến
  • Khôi phục theo thời điểm, được triển khai bằng cách sử dụng ghi nhật ký ghi trước (WAL)
  • Nâng cấp tại chỗ với pg_upgrade giúp giảm thiểu thời gian ngừng hoạt động

Kiểm soát và kết nối

Trình bọc dữ liệu ngoại

PostgreSQL có thể liên kết với các hệ thống khác để truy xuất dữ liệu thông qua các trình bọc dữ liệu ngoại (FDW).[46] Chúng có thể mang định dạng của bất kỳ nguồn dữ liệu nào, chẳng hạn như hệ thống tệp, một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) khác hoặc một dịch vụ web. Điều này có nghĩa là các truy vấn cơ sở dữ liệu thông thường có thể sử dụng những nguồn dữ liệu này giống như các bảng thông thường, và thậm chí có thể kết hợp nhiều nguồn dữ liệu lại với nhau.

Giao diện

PostgreSQL hỗ trợ một giao thức truyền thông nhị phân cho phép các ứng dụng kết nối với máy chủ cơ sở dữ liệu. Giao thức này được quản lý theo phiên bản (hiện tại là 3.0, kể từ PostgreSQL 7.4) và có một bản đặc tả chi tiết.[47]

Bản triển khai máy khách chính thức của giao thức truyền thông này là một giao diện lập trình ứng dụng bằng ngôn ngữ C, mang tên libpq.[48] Ngoài ra, công cụ chính thức ECPG [en] cho phép nhúng lệnh SQL vào mã C.[49] Cả hai đều là một phần của bản phân phối PostgreSQL tiêu chuẩn.[50]

Nhiều ngôn ngữ lập trình có sẵn các thư viện của bên thứ ba dành cho việc kết nối tới PostgreSQL, bao gồm C++,[51] Java,[52] Julia [en],[53][54][55] Python,[56] Node.js,[57] Go,[58]Rust.[59]

Ngôn ngữ thủ tục

Các ngôn ngữ thủ tục cho phép các nhà phát triển mở rộng cơ sở dữ liệu với các chương trình con (hàm) tùy chỉnh, thường được gọi là các thủ tục lưu trữ [en]. Các hàm này có thể được sử dụng để xây dựng các thủ tục sự kiện [en] (hàm được gọi khi sửa đổi một số dữ liệu nhất định), các kiểu dữ liệu tùy chỉnh và các hàm tổng hợp [en].[60] Các ngôn ngữ thủ tục cũng có thể được gọi mà không cần định nghĩa hàm, thông qua lệnh DO ở cấp độ SQL.[61]

Các ngôn ngữ được chia thành hai nhóm: Các thủ tục được viết bằng các ngôn ngữ an toàn sẽ được đặt trong một môi trường có kiểm soát [en] và có thể được bất kỳ người dùng nào tạo và sử dụng một cách an toàn. Các thủ tục được viết bằng ngôn ngữ không an toàn chỉ có thể được tạo bởi các siêu người dùng, bởi vì chúng cho phép vượt qua các hạn chế bảo mật của cơ sở dữ liệu, nhưng cũng có thể truy cập các nguồn bên ngoài cơ sở dữ liệu. Một số ngôn ngữ như Perl cung cấp cả phiên bản an toàn và không an toàn.

PostgreSQL có hỗ trợ tích hợp sẵn cho ba ngôn ngữ thủ tục:

  • SQL thuần túy (an toàn). Các hàm SQL đơn giản hơn có thể được khai triển nội tuyến [en] vào truy vấn gọi (SQL), giúp tiết kiệm chi phí gọi hàm và cho phép trình tối ưu hóa truy vấn "nhìn thấy bên trong" hàm.
  • Ngôn ngữ thủ tục/PostgreSQL (PL/pgSQL [en]) (an toàn), có nét tương đồng với ngôn ngữ thủ tục Procedural Language for SQL (PL/SQL [en]) của Oracle và SQL/Persistent Stored Modules (SQL/PSM [en]).
  • C (không an toàn), cho phép tải một hoặc nhiều thư viện chia sẻ [en] tùy chỉnh vào cơ sở dữ liệu. Các hàm được viết bằng C mang lại hiệu năng tốt nhất, nhưng lỗi trong mã có thể làm sập và có khả năng làm hỏng cơ sở dữ liệu. Hầu hết các hàm tích hợp đều được viết bằng C.

Ngoài ra, PostgreSQL cho phép nạp các ngôn ngữ thủ tục vào cơ sở dữ liệu thông qua các phần mở rộng. PostgreSQL hỗ trợ Perl, Tcl, và Python nhờ ba phần mở rộng ngôn ngữ đi kèm. Đối với Python, phiên bản Python 3 hiện tại được sử dụng, trong khi phiên bản Python 2 bị ngừng cung cấp sẽ không còn được hỗ trợ kể từ PostgreSQL 15. Cả hai phiên bản này từng được hỗ trợ trước đây với mặc định là Python 2, trong khi đó các phiên bản cũ và mới không thể được sử dụng trong cùng một phiên.[62] Các dự án bên ngoài cung cấp hỗ trợ cho nhiều ngôn ngữ khác,[63] bao gồm PL/Java, JavaScript (PL/V8), PL/Julia [en],[55] PL/R,[64] PL/Ruby và các ngôn ngữ khác.

Thủ tục sự kiện

Các thủ tục sự kiện (trigger) là các sự kiện được kích hoạt bởi hành động của các câu lệnh ngôn ngữ thao tác dữ liệu [en] (DML) trong SQL. Ví dụ, một câu lệnh INSERT có thể kích hoạt một thủ tục sự kiện để kiểm tra xem các giá trị của câu lệnh có hợp lệ hay không. Hầu hết các thủ tục sự kiện chỉ được kích hoạt bởi các câu lệnh INSERT hoặc UPDATE.

Các thủ tục sự kiện được hỗ trợ hoàn toàn và có thể được gắn vào các bảng. Thủ tục sự kiện có thể áp dụng cho từng cột và có điều kiện, trong đó các thủ tục sự kiện UPDATE có thể nhắm mục tiêu vào các cột cụ thể của một bảng, và thủ tục sự kiện có thể được yêu cầu thực thi theo một tập hợp các điều kiện được chỉ định trong mệnh đề WHERE của nó. Thủ tục sự kiện có thể được gắn vào các khung nhìn [en] bằng cách sử dụng điều kiện INSTEAD OF. Nhiều thủ tục sự kiện được kích hoạt theo thứ tự bảng chữ cái. Ngoài việc gọi các hàm được viết bằng ngôn ngữ gốc PL/pgSQL, thủ tục sự kiện cũng có thể gọi các hàm được viết bằng những ngôn ngữ khác như PL/Python hoặc PL/Perl.

Thông báo bất đồng bộ

PostgreSQL cung cấp một hệ thống thông điệp bất đồng bộ được truy cập thông qua các lệnh NOTIFY, LISTEN và UNLISTEN. Một phiên có thể phát ra lệnh NOTIFY, cùng với kênh do người dùng chỉ định và dữ liệu thực (payload) tùy chọn, để đánh dấu một sự kiện cụ thể đang xảy ra. Các phiên khác có khả năng phát hiện những sự kiện này bằng cách phát ra lệnh LISTEN, cho phép lắng nghe một kênh cụ thể. Chức năng này có thể được sử dụng cho nhiều mục đích khác nhau, chẳng hạn như cho các phiên khác biết khi nào một bảng đã được cập nhật, hoặc cho các ứng dụng riêng biệt phát hiện khi nào một hành động cụ thể đã được thực hiện. Một hệ thống như vậy sẽ ngăn ngừa việc các ứng dụng phải thực hiện thăm dò [en] liên tục để xem liệu có bất kỳ điều gì đã thay đổi hay chưa, đồng thời làm giảm chi phí hoạt động không cần thiết. Các thông báo hoàn toàn có tính giao tác, tức là các thông điệp sẽ không được gửi đi cho đến khi giao tác thực hiện việc gửi chúng được cam kết. Điều này loại bỏ vấn đề gửi thông điệp cho một hành động đang được thực hiện nhưng sau đó lại bị huỷ lùi (rollback).

Nhiều trình kết nối cho PostgreSQL hỗ trợ hệ thống thông báo này (bao gồm libpq, JDBC, Npgsql, psycopg và node.js) nên nó có thể được sử dụng bởi các ứng dụng bên ngoài.

PostgreSQL có thể hoạt động như một máy chủ "pub/sub" [en] ổn định, hiệu quả hoặc máy chủ công việc bằng cách kết hợp LISTEN với FOR UPDATE SKIP LOCKED.[65][66][67]

Quy tắc

Các quy tắc cho phép viết lại "cây truy vấn" của một truy vấn đang đi tới; chúng là một ngôn ngữ vĩ lệnh được gọi tự động dành cho SQL. "Quy tắc viết lại truy vấn" được gắn với một bảng/lớp và "viết lại" DML đang đi tới (select, insert, update, và/hoặc delete) thành một hoặc nhiều truy vấn có thể thay thế câu lệnh DML ban đầu hoặc thực thi bổ sung thêm vào đó. Quá trình viết lại truy vấn diễn ra sau khi phân tích cú pháp câu lệnh DML và trước khi lập kế hoạch truy vấn.

Về cơ bản, hầu hết các chức năng của quy tắc sau này đều có thể thực hiện được thông qua các loại thủ tục sự kiện mới. Trong thực tế, người ta thường ưu tiên sử dụng thủ tục sự kiện hơn là các quy tắc. Lý do là vì việc dự đoán, theo dõi luồng hoạt động và các tương tác của thủ tục sự kiện diễn ra dễ dàng và rõ ràng hơn rất nhiều so với việc sử dụng các quy tắc tương đương.

Các tính năng truy vấn khác

  • Giao tác
  • Tìm kiếm toàn văn [en]
  • Khung nhìn
    • Khung nhìn cụ thể hóa[68]
    • Khung nhìn có thể cập nhật[69]
    • Khung nhìn đệ quy[70]
  • Các loại nối: nối trong (inner join), nối ngoài (outer join - bao gồm full, left và right), và nối chéo (cross join)
  • Lựa chọn phụ (Sub-select)
    • Truy vấn con tương quan[71]
  • Biểu thức chính quy[72]
  • Biểu thức bảng chung [en] và biểu thức bảng chung có thể ghi
  • Các kết nối được mã hóa thông qua Transport Layer Security (TLS); các phiên bản hiện tại không sử dụng SSL có lỗ hổng, ngay cả khi dùng tùy chọn cấu hình đó[73]
  • Miền (domain)
  • Điểm lưu [en]
  • Cam kết hai pha
  • Kỹ thuật lưu trữ thuộc tính quá khổ (TOAST) được sử dụng để lưu trữ âm thầm và tự động các thuộc tính bảng có kích thước lớn (chẳng hạn như các tệp đính kèm MIME hoặc thông điệp XML lớn) trong một khu vực riêng biệt, với khả năng nén tự động.
  • SQL nhúng [en] được triển khai bằng cách sử dụng bộ tiền xử lý. Mã SQL trước tiên được viết nhúng vào mã C. Sau đó, mã được chạy qua bộ tiền xử lý ECPG, bộ này sẽ thay thế SQL bằng các lời gọi tới thư viện mã. Kế tiếp, mã có thể được biên dịch bằng một trình biên dịch C. Việc nhúng cũng hoạt động với C++ nhưng nó không nhận dạng được tất cả các cấu trúc của C++.

Mô hình tương tranh

Máy chủ PostgreSQL hoạt động dựa trên tiến trình (không phải dạng luồng) và sử dụng một tiến trình hệ điều hành cho mỗi phiên cơ sở dữ liệu. Nhiều phiên sẽ được hệ điều hành tự động phân bổ trên tất cả các CPU khả dụng. Nhiều loại truy vấn cũng có thể được song song hóa qua nhiều tiến trình chạy việc nền (background worker process), tận dụng lợi thế của nhiều CPU hoặc lõi.[74] Các ứng dụng khách có thể sử dụng các luồng và tạo nhiều kết nối cơ sở dữ liệu từ mỗi luồng.[75]


Bảo mật

PostgreSQL quản lý bảo mật nội bộ dựa trên từng vai trò [en]. Một vai trò thường được coi là một người dùng (một vai trò có thể đăng nhập) hoặc một nhóm (một vai trò mà các vai trò khác là thành viên). Các quyền có thể được cấp hoặc thu hồi trên bất kỳ đối tượng nào cho đến cấp độ cột, và có thể cho phép hoặc ngăn chặn việc hiển thị, tạo, sửa đổi, xóa các đối tượng ở cấp độ cơ sở dữ liệu, lược đồ, bảng và hàng.

Tính năng SECURITY LABEL của PostgreSQL (phần mở rộng cho các tiêu chuẩn SQL) cho phép bổ sung bảo mật; đi kèm với một mô đun có thể tải để hỗ trợ điều khiển truy cập bắt buộc (MAC) dựa trên nhãn, theo chính sách bảo mật của SE Linux (SELinux).[76][77] PostgreSQL hỗ trợ riêng một lượng lớn các cơ chế xác thực bên ngoài, bao gồm:

  • Mật khẩu: có thể là SCRAM-SHA-256 [en],[78] MD5 hoặc văn bản thuần
  • Giao diện chương trình ứng dụng dịch vụ bảo mật chung [en] (GSSAPI)
  • Giao diện nhà cung cấp hỗ trợ bảo mật [en] (SSPI)
  • Kerberos
  • ident [en] (ánh xạ tên người dùng hệ điều hành do máy chủ ident cung cấp với tên người dùng cơ sở dữ liệu)
  • Peer (ánh xạ tên người dùng cục bộ với tên người dùng cơ sở dữ liệu)
  • Lightweight Directory Access Protocol (LDAP)
  • RADIUS
  • Chứng chỉ
  • mô đun xác thực có thể cắm [en] (PAM)

Các phương thức GSSAPI, SSPI, Kerberos, peer, ident và chứng chỉ cũng có thể sử dụng một tệp "ánh xạ" cụ thể để liệt kê những người dùng khớp với hệ thống xác thực đó được phép kết nối với tư cách là một người dùng cơ sở dữ liệu cụ thể.

Các phương thức này được chỉ định trong tệp cấu hình xác thực dựa trên máy chủ của cụm (pg_hba.conf), nhằm xác định những kết nối nào được cho phép. Điều này cho phép kiểm soát người dùng nào có thể kết nối với cơ sở dữ liệu nào, nơi họ có thể kết nối từ đó (địa chỉ IP, dải địa chỉ IP, domain socket), hệ thống xác thực nào sẽ được thực thi và liệu kết nối có phải sử dụng Transport Layer Security (TLS) hay không.

Tuân thủ tiêu chuẩn

PostgreSQL tuyên bố tuân thủ mức độ cao, nhưng không hoàn toàn, với tiêu chuẩn SQL mới nhất ("tính đến bản phát hành phiên bản 17 vào tháng 9 năm 2024, PostgreSQL tuân thủ ít nhất 170 trong số 177 tính năng bắt buộc đối với Sự tuân thủ Cốt lõi của SQL:2023 [en]", và không có cơ sở dữ liệu nào khác hoàn toàn tuân thủ cả[79]). Một ngoại lệ là việc xử lý các định danh không được đặt trong dấu ngoặc kép như tên bảng hoặc tên cột. Trong PostgreSQL, chúng được chuyển thành các ký tự viết thường[80] trong khi tiêu chuẩn quy định rằng các định danh không có dấu ngoặc kép phải được chuyển thành chữ hoa. Do đó, Foo sẽ tương đương với FOO chứ không phải foo theo tiêu chuẩn. Các thiếu sót khác liên quan đến sự vắng mặt của các bảng thời gian cho phép tự động ghi nhật ký các phiên bản hàng trong quá trình của giao tác với khả năng duyệt theo thời gian (vị từ FOR SYSTEM TIME),[cần dẫn nguồn] mặc dù có sẵn các phần mở rộng của bên thứ ba tương đối tuân thủ SQL.[14]

Kiểm chuẩn và hiệu năng

Nhiều nghiên cứu hiệu năng không chính thức về PostgreSQL đã được thực hiện.[81] Các cải tiến hiệu năng nhằm cải thiện khả năng mở rộng bắt đầu mạnh mẽ với phiên bản 8.1. Các bài kiểm chuẩn đơn giản giữa phiên bản 8.0 và phiên bản 8.4 cho thấy phiên bản sau nhanh hơn hơn mười lần trên khối lượng công việc chỉ đọc và nhanh hơn ít nhất 7,5 lần trên khối lượng công việc cả đọc và ghi.[82]

Bài kiểm chuẩn đầu tiên theo tiêu chuẩn ngành và được đồng cấp xác nhận đã hoàn thành vào tháng 6 năm 2007, sử dụng Sun Java System Application Server (phiên bản độc quyền của GlassFish [en]) 9.0 Platform Edition, máy chủ Sun Fire [en] dựa trên nền tảng UltraSPARC T1 [en] và PostgreSQL 8.2.[83] Kết quả 778.14 SPECjAppServer2004 JOPS@Standard này có lợi thế so với kết quả 874 JOPS@Standard của Oracle 10 trên hệ thống HP-UX [en] dựa trên nền tảng Itanium.[81]

Vào tháng 8 năm 2007, Sun đã nộp một điểm số kiểm chuẩn cải thiện là 813.73 SPECjAppServer2004 JOPS@Standard. Với việc hệ thống đang được kiểm thử [en] có giá giảm, tỷ lệ giá/hiệu năng đã cải thiện từ $84.98/JOPS xuống $70.57/JOPS.[84]

Cấu hình mặc định của PostgreSQL chỉ sử dụng một lượng nhỏ bộ nhớ chuyên dụng cho các mục đích thiết yếu về hiệu năng như bộ nhớ đệm các khối cơ sở dữ liệu và sắp xếp. Hạn chế này chủ yếu là do các hệ điều hành cũ yêu cầu phải thay đổi nhân (kernel) để cho phép cấp phát các khối bộ nhớ dùng chung [en] lớn.[85] PostgreSQL.org cung cấp các lời khuyên về thực tiễn hiệu năng cơ bản được khuyến nghị trên một Wiki.[86]

Tháng 4 năm 2012, Robert Haas của EnterpriseDB [en] đã trình diễn khả năng mở rộng CPU tuyến tính của PostgreSQL 9.2 sử dụng một máy chủ có 64 lõi.[87]

Matloob Khushi đã thực hiện các bài kiểm chuẩn giữa PostgreSQL 9.0 và MySQL 5.6.15 về khả năng xử lý dữ liệu bộ gen. Trong phân tích hiệu năng của mình, ông nhận thấy PostgreSQL trích xuất các vùng bộ gen bị chồng lấp nhanh hơn tám lần so với MySQL bằng cách sử dụng hai bộ dữ liệu, mỗi bộ 80.000, tạo thành các vùng DNA người ngẫu nhiên. Khả năng chèn và tải dữ liệu lên trong PostgreSQL cũng tốt hơn, mặc dù khả năng tìm kiếm chung của cả hai cơ sở dữ liệu gần như tương đương nhau.[88]

Vào tháng 10 năm 2024, một bài kiểm chuẩn của Sanket Vilas Salunke và Abdelkader Ouda đã đánh giá hiệu năng giữa PostgreSQL và MySQL trong bối cảnh các hệ thống xác thực liên tục đòi hỏi xử lý lượng lớn dữ liệu sinh trắc học hành vi. Kết quả cho thấy PostgreSQL vượt trội đáng kể ở các thao tác chọn (SELECT), nhanh hơn khoảng 13 lần so với MySQL khi truy xuất 1 triệu bản ghi. Đặc biệt, trong các thử nghiệm phức tạp đòi hỏi thực hiện truy vấn chọn đồng thời với quá trình chèn (INSERT) dữ liệu, PostgreSQL vẫn duy trì hiệu năng ổn định, trong khi MySQL bị suy giảm đáng kể.[89]

Nền tảng

PostgreSQL có sẵn trên các hệ điều hành sau: Linux (tất cả các bản phân phối gần đây), các trình cài đặt X86-64 và AArch64 [en] cho cấu trúc 64-bit có sẵn và được kiểm thử trên MacOS phiên bản 10.14 trở lên,[90] Windows (với các trình cài đặt có sẵn và được kiểm thử trên Windows Server 2022 64-bit và 2016[91]), FreeBSD, OpenBSD [en],[92] NetBSD [en], DragonFlyBSD [en], và cả những nền tảng không có tệp thực thi nhị phân chính thức (mặc dù có thể có các bản không chính thức), Solaris,[93] và illumos [en]. PostgreSQL có thể hoạt động trên các kiến trúc tập lệnh (và hệ điều hành) sau đây: X86-64 64-bit và X86 32-bit trên Windows và các hệ điều hành khác; những kiến trúc sau được hỗ trợ trên các hệ điều hành không phải Windows: AArch64 [en] 64-bit[94]ARM 32-bit cũ hơn, bao gồm các kiến trúc cũ như họ kiến trúc ARM trong Raspberry Pi[95]), RISC-V, z/Architecture [en], S/390 [en], PowerPC (bao gồm Power ISA [en] 64-bit), SPARC (cũng 64-bit), MIPS và PA-RISC [en]. Nó cũng có thể hoạt động trên một số nền tảng khác (mặc dù chưa được kiểm thử trong nhiều năm, tức là cho các phiên bản mới nhất).[96]

Quản trị cơ sở dữ liệu

Các giao diện người dùng (front-end) và công cụ mã nguồn mở để quản trị PostgreSQL bao gồm:

Ví dụ Phiên psql[97]
regression=# select foo;ERROR:  column "foo" does not existCONTEXT:  PL/pgSQL function "test1" while casting return value to function's return typeLINE 1: select foo;               ^regression=# \q
peter@localhost testdb=> \a \t \xOutput format is aligned.Tuples only is off.Expanded display is on.
regression=# select '\x';WARNING:  nonstandard use of escape in a string literalLINE 1: select '\x';               ^HINT:  Use the escape string syntax for escapes, e.g., E'\r\n'. ?column? ---------- x(1 row)regression=# select E'\x';
piro=> \set foo 30;piro=> select * from test where foo <= :foo; foo | bar -----+-----  10 |   20 | (2 rows)
testdb=> \set foo 'my_table'testdb=> SELECT * FROM :"foo";testdb=> \set content `cat my_file.txt`testdb=> INSERT INTO my_table VALUES (:'content');
regression=# select (regression(# 1); ?column? ----------        1(1 row)
piro=> select (piro(> 'piro'> ' || $$piro$> $$)piro-> from "piro"> foo";ERROR:  relation "foo" does not existLINE 5: from "             ^
testdb=> CREATE TABLE my_table (first integer not null default 0,second text) ; -- end of commandCREATE TABLE=# SELECT '0x10'::mpz AS "hex", '10'::mpz AS "dec",-#        '010'::mpz AS oct, '0b10'::mpz AS bin; -- Table output hex | dec | oct | bin-----+-----+-----+----- 16  | 10  | 8   | 2(1 row)
regression=# select schemaname from  pg_tables limit 3; -- One field output schemaname ------------ pg_catalog pg_catalog pg_catalog(3 rows)=# select 10.0, 1e-6, 1E+6; ?column? | ?column? | ?column? ----------+----------+----------     10.0 | 0.000001 |  1000000(1 row)regression=# begin;BEGINregression=# create table asdf (foo serial primary key);NOTICE:  CREATE TABLE will create implicit sequence "asdf_foo_seq" for serial column "asdf.foo"NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "asdf_pkey" for table "asdf"CREATE TABLEregression=# insert into asdf values (10) returning foo; foo -----  10(1 row)INSERT 0 1regression=# ROLLBACK ;ROLLBACK
psql
Giao diện người dùng chính cho PostgreSQL là chương trình dòng lệnh [en] psql, có thể được sử dụng để nhập trực tiếp các truy vấn SQL hoặc thực thi chúng từ một tệp. Ngoài ra, psql cung cấp một số siêu lệnh và nhiều tính năng giống hệ vỏ (shell) để tạo điều kiện viết kịch bản (script) và tự động hóa nhiều tác vụ; ví dụ: tự động điền tên đối tượng và cú pháp SQL khi nhấn Tab.
pgAdmin
Gói pgAdmin là một công cụ quản trị có Giao diện đồ họa người dùng (GUI) tự do và mã nguồn mở dành cho PostgreSQL, được hỗ trợ trên nhiều nền tảng máy tính.[98] Chương trình có sẵn bằng hơn một chục ngôn ngữ. Nguyên mẫu đầu tiên, có tên là pgManager, được viết cho PostgreSQL 6.3.2 từ năm 1998, sau đó được viết lại và phát hành thành pgAdmin theo Giấy phép Công cộng GNU (GPL) trong những tháng sau đó. Phiên bản thứ hai (có tên là pgAdmin II) là một bản viết lại hoàn toàn, được phát hành lần đầu vào ngày 16 tháng 1 năm 2002. Phiên bản thứ ba, pgAdmin III, ban đầu được phát hành theo Giấy phép Artistic [en] và sau đó được phát hành theo cùng giấy phép với PostgreSQL. Không giống như các phiên bản trước được viết bằng Visual Basic, pgAdmin III được viết bằng C++, sử dụng nền tảng wxWidgets [en][99] cho phép nó chạy trên hầu hết các hệ điều hành phổ biến. Công cụ truy vấn bao gồm một ngôn ngữ kịch bản có tên là pgScript để hỗ trợ các tác vụ quản trị và phát triển. Vào tháng 12 năm 2014, Dave Page, người sáng lập và phát triển chính dự án pgAdmin,[100] đã thông báo rằng với sự chuyển dịch hướng tới các mô hình dựa trên web, công việc đã bắt đầu trên pgAdmin 4 với mục tiêu hỗ trợ các đợt triển khai trên đám mây.[101] Năm 2016, pgAdmin 4 được phát hành. Thành phần back-end của pgAdmin 4 được viết bằng Python, sử dụng Flask [en]nền tảng Qt.[102]
phpPgAdmin
phpPgAdmin là một công cụ quản trị dựa trên web cho PostgreSQL được viết bằng PHP và dựa trên giao diện của PhpMyAdmin, một công cụ phổ biến ban đầu được viết để quản trị MySQL.[103]
PostgreSQL Studio
PostgreSQL Studio cho phép người dùng thực hiện các tác vụ phát triển cơ sở dữ liệu PostgreSQL thiết yếu từ một bảng điều khiển dựa trên web. PostgreSQL Studio cho phép người dùng làm việc với các cơ sở dữ liệu đám mây mà không cần mở tường lửa.[104]
TeamPostgreSQL
Giao diện web được điều khiển bằng AJAX/JavaScript cho PostgreSQL. Cho phép duyệt, bảo trì và tạo dữ liệu cũng như tạo các đối tượng cơ sở dữ liệu thông qua trình duyệt web. Giao diện cung cấp trình soạn thảo SQL dạng thẻ với khả năng tự động điền, các điều khiển chỉnh sửa hàng, điều hướng khóa ngoại bằng cách nháy chuột qua giữa các hàng và bảng, quản lý mục ưa thích cho các kịch bản thường dùng, cùng với các tính năng khác. Hỗ trợ SSH cho cả giao diện web và các kết nối cơ sở dữ liệu [en]. Có các trình cài đặt trên Windows, Macintosh và Linux, cùng với một tệp nén đa nền tảng đơn giản chạy từ một tập lệnh.[105]
LibreOffice, OpenOffice.org
LibreOfficeOpenOffice.org Base có thể được sử dụng làm giao diện (front-end) cho PostgreSQL.[106][107]
pgBadger
Trình phân tích nhật ký PostgreSQL pgBadger tạo ra các báo cáo chi tiết từ tệp nhật ký PostgreSQL.[108]
pgDevOps
pgDevOps là một bộ công cụ web để cài đặt và quản lý nhiều phiên bản PostgreSQL, phần mở rộng và thành phần cộng đồng, phát triển các truy vấn SQL, giám sát các cơ sở dữ liệu đang chạy và tìm các vấn đề về hiệu năng.[109]
Adminer
Adminer là một công cụ quản trị dựa trên web đơn giản cho PostgreSQL và các cơ sở dữ liệu khác, được viết bằng PHP.
pgBackRest
pgBackRest là một công cụ sao lưu và khôi phục cho PostgreSQL cho phép sao lưu toàn bộ, sao lưu khác biệt và sao lưu tăng tiến.[110]
pgaudit
pgaudit là một phần mở rộng của PostgreSQL cung cấp tính năng ghi nhật ký kiểm tra phiên làm việc và/hoặc đối tượng chi tiết thông qua công cụ ghi nhật ký tiêu chuẩn do PostgreSQL cung cấp.[111]
WAL-E
WAL-E là một công cụ sao lưu và khôi phục cho PostgreSQL cung cấp hỗ trợ cho các bản sao lưu vật lý (dựa trên WAL [en]), được viết bằng Python.[112]
DBeaver
DBeaver [en] là một công cụ quản trị GUI tự do và mã nguồn mở cho PostgreSQL, nó có Sơ đồ Thực thể Trực quan và các tính năng Intellisense [en]. Nó cũng có giấy phép PRO thương mại.
Postgresus
Postgresus là một công cụ sao lưu mã nguồn mở có GUI cho các bản sao lưu theo lịch trình với sự hỗ trợ của các nguồn bên ngoài (S3, NAS, FTP, Google Drive, Google Cloud, v.v.) và thông báo đến các dịch vụ bên ngoài (Slack, Discord, Telegram, SMTP, v.v.).[113]

Một số công ty cung cấp các công cụ độc quyền cho PostgreSQL. Chúng thường bao gồm một lõi dùng chung được điều chỉnh cho nhiều sản phẩm cơ sở dữ liệu cụ thể khác nhau. Những công cụ này hầu hết chia sẻ các tính năng quản trị với các công cụ mã nguồn mở nhưng cung cấp các cải tiến trong mô hình hóa dữ liệu, nhập, xuất hoặc báo cáo.


Sử dụng

Các tổ chức và sản phẩm nổi bật sau đây sử dụng PostgreSQL làm cơ sở dữ liệu chính:

  • Microsoft, được sử dụng cho bảng điều khiển phân tích “Cái nhìn Chất lượng Phát hành” (Release Quality View - RQV) có quy mô petabyte, nhằm theo dõi chất lượng của các bản cập nhật Windows bằng cách phân tích 20 nghìn loại số liệu từ hơn 800 triệu thiết bị Windows.[114]
  • Năm 2009, trang web mạng xã hội Myspace đã sử dụng cơ sở dữ liệu nCluster của Aster Data Systems [en] cho việc lưu trữ kho dữ liệu, vốn được xây dựng trên PostgreSQL chưa sửa đổi.[115][116]
  • Geni.com [en] sử dụng PostgreSQL cho cơ sở dữ liệu phả hệ chính của họ.[117]
  • OpenStreetMap, một dự án hợp tác nhằm tạo ra một bản đồ thế giới có thể chỉnh sửa tự do.[118]
  • Afilias [en], cơ quan đăng ký tên miền cho .org, .info [en] và các tên miền khác.[119][120]
  • Trò chơi trực tuyến nhiều người chơi của Sony Online [en].[121]
  • BASF, nền tảng mua sắm cho cổng thông tin kinh doanh nông nghiệp của họ.[122]
  • Trang web tin tức xã hội Reddit.[123]
  • Ứng dụng VoIP Skype, các cơ sở dữ liệu kinh doanh trung tâm.[124]
  • Sun xVM [en], bộ tự động hóa trung tâm dữ liệu và ảo hóa của Sun.[125]
  • MusicBrainz, bách khoa toàn thư âm nhạc trực tuyến mở.[126]
  • Trạm vũ trụ Quốc tế – để thu thập dữ liệu đo từ xa trên quỹ đạo và sao chép nó về mặt đất.[127]
  • Trang web mạng xã hội MyYearbook [en].[128]
  • Instagram, một dịch vụ chia sẻ ảnh trên thiết bị di động.[129]
  • Disqus [en], một dịch vụ bình luận và thảo luận trực tuyến.[130]
  • TripAdvisor, trang web thông tin du lịch chủ yếu là nội dung do người dùng tạo.[131]
  • Yandex, một công ty internet của Nga đã chuyển đổi dịch vụ Yandex.Mail của mình từ Oracle sang Postgres.[132]
  • Amazon Redshift [en], một phần của AWS, một hệ thống xử lý phân tích trực tuyến (OLAP) dạng cột dựa trên các sửa đổi Postgres của ParAccel [en].
  • Hệ thống Chuẩn bị Dự báo Tương tác (Interactive Forecast Preparation System - IFPS) thuộc Cục Thời tiết Quốc gia Hoa Kì [en] (NWS) của Cơ quan quản lý Đại dương và Khí quyển quốc gia (Hoa Kỳ) (NOAA), một hệ thống tích hợp dữ liệu từ các radar thời tiết [en] NEXRAD [en], bề mặt và hệ thống thủy văn để xây dựng các mô hình dự báo chi tiết theo từng địa phương.[120][133]
  • Cơ quan thời tiết quốc gia của Vương quốc Liên hiệp Anh và Bắc Ireland, Met Office [en], đã bắt đầu hoán đổi Oracle sang PostgreSQL trong chiến lược triển khai nhiều công nghệ mã nguồn mở hơn.[133][134]
  • WhitePages.com [en] từng sử dụng Oracle và MySQL, nhưng khi cần đưa các thư mục cốt lõi của mình vào nội bộ, họ đã chuyển sang PostgreSQL. Vì WhitePages.com cần kết hợp các tập dữ liệu lớn từ nhiều nguồn, khả năng tải và lập chỉ mục dữ liệu ở tốc độ cao của PostgreSQL là chìa khóa cho quyết định sử dụng PostgreSQL của họ.[120]
  • FlightAware [en], một trang web theo dõi chuyến bay.[135]
  • Grofers [en], một dịch vụ giao hàng trực tuyến.[136]
  • The Guardian đã chuyển đổi từ MongoDB sang PostgreSQL vào năm 2018.[137]
  • YugabyteDB [en] triển khai lớp truy vấn PostgreSQL làm chế độ SQL mặc định của nó
  • OpenAI sử dụng PostgreSQL như một phần của dịch vụ API chính của mình – bao gồm cả ChatGPT.[138][139]

Các bản triển khai dịch vụ

Một số nhà cung cấp nổi bật sau đây cung cấp PostgreSQL dưới dạng phần mềm dạng dịch vụ:

  • Heroku, một nhà cung cấp nền tảng như một dịch vụ, đã hỗ trợ PostgreSQL kể từ khi thành lập vào năm 2007.[140] Họ cung cấp các tính năng giá trị gia tăng như huỷ lùi (roll-back) toàn bộ cơ sở dữ liệu (khả năng khôi phục một cơ sở dữ liệu từ bất kỳ thời điểm nào được chỉ định),[141] dựa trên WAL-E, một phần mềm mã nguồn mở do Heroku phát triển.[142]
  • Vào tháng 1 năm 2012, EnterpriseDB [en] đã phát hành phiên bản đám mây của cả PostgreSQL và Postgres Plus Advanced Server độc quyền của riêng họ với tính năng cung cấp tự động cho việc chuyển đổi dự phòng, sao chép, cân bằng tải và mở rộng quy mô. Nó chạy trên Amazon Web Services.[143] Kể từ năm 2015, Postgres Advanced Server đã được cung cấp dưới dạng ApsaraDB cho PPAS, một cơ sở dữ liệu quan hệ dưới dạng dịch vụ trên Alibaba Cloud.[144]
  • VMware đã cung cấp vFabric Postgres (còn được gọi là vPostgres[145]) cho các đám mây riêng trên VMware vSphere kể từ tháng 5 năm 2012.[146] Công ty đã thông báo ngừng cung cấp (EOA) sản phẩm này vào năm 2014.[147]
  • Vào tháng 11 năm 2013, Amazon Web Services đã thông báo việc bổ sung PostgreSQL vào dịch vụ Relational Database Service [en] của họ.[148][149]
  • Vào tháng 11 năm 2016, Amazon Web Services đã thông báo việc bổ sung khả năng tương thích PostgreSQL vào dịch vụ cơ sở dữ liệu chuyên biệt cho đám mây được quản lý là Amazon Aurora của họ.[150]
  • Vào tháng 5 năm 2017, Microsoft Azure đã công bố Azure Databases cho PostgreSQL.[151]
  • Vào tháng 5 năm 2019, Alibaba Cloud [en] đã công bố PolarDB cho PostgreSQL.[152]
  • Nền tảng như một dịch vụ đa đám mây [en] Jelastic [en] đã cung cấp hỗ trợ PostgreSQL dựa trên vùng chứa kể từ năm 2011. Nền tảng này cũng cung cấp khả năng sao chép chủ-tớ bất đồng bộ tự động của PostgreSQL.[153]
  • Vào tháng 6 năm 2019, IBM Cloud [en] đã công bố IBM Cloud Hyper Protect DBaaS cho PostgreSQL.[154]
  • Vào tháng 9 năm 2020, Crunchy Data đã công bố Crunchy Bridge.[155]
  • Vào tháng 6 năm 2022, Neon.tech đã công bố Neon Serverless Postgres.[156]
  • Vào tháng 12 năm 2022, Google Cloud Platform đã công bố khả dụng chung của AlloyDB dưới dạng dịch vụ đám mây PostgreSQL được quản lý hoàn toàn.[157]
  • Vào tháng 10 năm 2023, Nile đã công bố Nền tảng Nile Postgres.[158]
  • Vào tháng 4 năm 2024, Google Cloud Platform đã công bố tính khả dụng chung của AlloyDB Omni, một phiên bản có thể tải xuống của AlloyDB được thiết kế để chạy trên mọi cơ sở hạ tầng, bao gồm tại chỗ, các đám mây khác hoặc môi trường biên.[159]

Lịch sử phát hành

Lịch sử phát hành
Phiên bảnPhát hành lần đầuPhiên bản phụ mới nhấtBản phát hành mới nhấtKết thúc
vòng đời[160]
Cột mốc
6.01997-01-29Bản phát hành chính thức đầu tiên của PostgreSQL, chỉ mục duy nhất, tiện ích pg_dumpall, xác thực ident
6.11997-06-08Phiên bản cũ, không còn được hỗ trợ: 6.1.11997-07-22Chỉ mục nhiều cột, chuỗi (sequence), kiểu dữ liệu tiền tệ (money), GEQO (Trình tối ưu hóa truy vấn di truyền)
6.21997-10-02Phiên bản cũ, không còn được hỗ trợ: 6.2.11997-10-17Giao diện JDBC, thủ tục sự kiện, giao diện lập trình máy chủ, các ràng buộc
6.31998-03-01Phiên bản cũ, không còn được hỗ trợ: 6.3.21998-04-072003-03-01Khả năng truy vấn con (subselect) SQL-92, PL/pgTCL
6.41998-10-30Phiên bản cũ, không còn được hỗ trợ: 6.4.21998-12-202003-10-30VIEW (khung nhìn) (khi đó chỉ cho phép đọc) và RULE (quy tắc), PL/pgSQL [en]
6.51999-06-09Phiên bản cũ, không còn được hỗ trợ: 6.5.31999-10-132004-06-09MVCC, các bảng tạm, hỗ trợ thêm các câu lệnh SQL (CASE, INTERSECT, và EXCEPT)
7.02000-05-08Phiên bản cũ, không còn được hỗ trợ: 7.0.32000-11-112004-05-08Khóa ngoại, cú pháp SQL-92 cho các phép kết nối (join)
7.12001-04-13Phiên bản cũ, không còn được hỗ trợ: 7.1.32001-08-152006-04-13Nhật ký ghi trước (WAL), nối ngoài (outer join)
7.22002-02-04Phiên bản cũ, không còn được hỗ trợ: 7.2.82005-05-092007-02-04PL/Python, không còn yêu cầu OID [en], quốc tế hóa các thông điệp
7.32002-11-27Phiên bản cũ, không còn được hỗ trợ: 7.3.212008-01-072007-11-27Lược đồ, hàm bảng, truy vấn soạn sẵn [en][161]
7.42003-11-17Phiên bản cũ, không còn được hỗ trợ: 7.4.302010-10-042010-10-01Tối ưu hóa trên các phép JOIN (kết nối) và các hàm kho dữ liệu[162]
8.02005-01-19Phiên bản cũ, không còn được hỗ trợ: 8.0.262010-10-042010-10-01Máy chủ nguyên bản trên Microsoft Windows, điểm lưu [en], không gian bảng [en], khôi phục theo thời điểm [en][163]
8.12005-11-08Phiên bản cũ, không còn được hỗ trợ: 8.1.232010-12-162010-11-08Tối ưu hóa hiệu năng, cam kết hai pha, phân vùng [en] bảng, quét bitmap chỉ mục, khóa hàng chia sẻ, các vai trò
8.22006-12-05Phiên bản cũ, không còn được hỗ trợ: 8.2.232011-12-052011-12-05Tối ưu hóa hiệu năng, xây dựng chỉ mục trực tuyến, khóa tư vấn, máy dự phòng ấm[164]
8.32008-02-04Phiên bản cũ, không còn được hỗ trợ: 8.3.232013-02-072013-02-07Bộ giá trị chỉ có đống (Heap-only tuple), tìm kiếm toàn văn [en],[165] SQL/XML [en], kiểu ENUM, kiểu UUID [en]
8.42009-07-01Phiên bản cũ, không còn được hỗ trợ: 8.4.222014-07-242014-07-24Hàm cửa sổ [en], quyền cấp cột, khôi phục cơ sở dữ liệu song song, so lựa sắp xếp trên từng cơ sở dữ liệu, biểu thức bảng chung [en] và các truy vấn đệ quy[166]
9.02010-09-20Phiên bản cũ, không còn được hỗ trợ: 9.0.232015-10-082015-10-08Sao chép [en] luồng nhị phân tích hợp sẵn, dự phòng nóng [en], khả năng nâng cấp tại chỗ, Windows 64-bit[167]
9.12011-09-12Phiên bản cũ, không còn được hỗ trợ: 9.1.242016-10-272016-10-27Sao chép đồng bộ [en], so lựa sắp xếp trên từng cột, các bảng không ghi nhật ký, cô lập bản chụp có thể nối tiếp hoá [en], biểu thức bảng chung có thể ghi, tích hợp SELinux, phần mở rộng, bảng ngoại[168]
9.22012-09-10[169]Phiên bản cũ, không còn được hỗ trợ: 9.2.242017-11-092017-11-09Sao chép luồng xếp tầng, quét chỉ bằng chỉ mục, hỗ trợ JSON nguyên bản, cải thiện quản lý khóa, các kiểu phạm vi, công cụ pg_receivexlog, các chỉ mục GiST phân vùng không gian
9.32013-09-09Phiên bản cũ, không còn được hỗ trợ: 9.3.252018-11-082018-11-08Trình chạy việc nền tùy chỉnh, tổng kiểm tra dữ liệu, các toán tử JSON chuyên dụng, LATERAL JOIN, pg_dump nhanh hơn, công cụ giám sát máy chủ pg_isready mới, tính năng thủ tục sự kiện, tính năng khung nhìn, bảng ngoại có thể ghi, khung nhìn cụ thể hóa [en], cải tiến sao chép
9.42014-12-18Phiên bản cũ, không còn được hỗ trợ: 9.4.262020-02-132020-02-13Kiểu dữ liệu JSONB, câu lệnh ALTER SYSTEM để thay đổi giá trị cấu hình, khả năng làm mới khung nhìn cụ thể hóa mà không chặn quá trình đọc, đăng ký/khởi động/dừng tính động của các trình chạy việc nền, API giải mã logic, cải tiến chỉ mục GiN, hỗ trợ trang khổng lồ (huge page) trên Linux, tải lại bộ đệm cơ sở dữ liệu qua pg_prewarm, đưa Hstore trở lại làm kiểu cột ưu tiên cho dữ liệu kiểu tài liệu.[170]
9.52016-01-07Phiên bản cũ, không còn được hỗ trợ: 9.5.252021-02-112021-02-11UPSERT, bảo mật cấp độ hàng [en], TABLESAMPLE, CUBE/ROLLUP, GROUPING SETS, và chỉ mục BRIN [en] mới[171]
9.62016-09-29Phiên bản cũ, không còn được hỗ trợ: 9.6.242021-11-112021-11-11Hỗ trợ truy vấn song song, cải tiến trình bọc dữ liệu ngoại (FDW) của PostgreSQL với việc đẩy xuống (pushdown) quá trình sắp xếp/kết nối, nhiều máy dự phòng đồng bộ, VACUUM bảng lớn nhanh hơn
102017-10-05Phiên bản cũ, không còn được hỗ trợ: 10.232022-11-102022-11-10Sao chép logic,[172] phân vùng bảng khai báo, cải thiện tính song song của truy vấn
112018-10-18Phiên bản cũ, không còn được hỗ trợ: 11.222023-11-092023-11-09Tăng cường sức mạnh và hiệu năng cho việc phân vùng, các giao tác được hỗ trợ trong các thủ tục lưu trữ, nâng cao khả năng cho tính song song của truy vấn, biên dịch tức thời (JIT) cho các biểu thức[173][174]
122019-10-03Phiên bản cũ, không còn được hỗ trợ: 12.222024-11-212024-11-21Cải thiện hiệu năng truy vấn và sử dụng không gian; hỗ trợ biểu thức đường dẫn SQL/JSON; các cột sinh ra; cải thiện quốc tế hóa và xác thực; giao diện lưu trữ bảng có thể cắm mới.[175]
132020-09-24Phiên bản cũ, không còn được hỗ trợ: 13.232025-11-132025-11-13Tiết kiệm không gian và tăng hiệu năng nhờ xoá trùng lặp các mục chỉ mục B-tree, cải thiện hiệu năng cho các truy vấn sử dụng hàm tổng hợp hoặc bảng được phân vùng, lập kế hoạch truy vấn tốt hơn khi sử dụng thống kê mở rộng, hút chân không (VACUUM) song song cho các chỉ mục, sắp xếp tăng dần[176][177]
142021-09-30Phiên bản cũ, vấn được hỗ trợ: 14.222026-02-262026-11-12Đã thêm các mệnh đề SEARCH và CYCLE theo chuẩn SQL cho các biểu thức bảng chung, cho phép thêm DISTINCT vào GROUP BY[178][179]
152022-10-13Phiên bản cũ, vấn được hỗ trợ: 15.172026-02-262027-11-11Triển khai câu lệnh MERGE [en] theo chuẩn SQL. PL/Python hiện chỉ hỗ trợ Python 3 hiện tại, và plpythonu hiện có nghĩa là Python 3, không còn hỗ trợ Python 2 đã ngừng hoạt động.
162023-09-14Phiên bản cũ, vấn được hỗ trợ: 16.132026-02-262028-11-09Cải tiến cho việc sao chép logic, khung nhìn pg_stat_io (dành cho các số liệu I/O)[180]
172024-09-26Phiên bản cũ, vấn được hỗ trợ: 17.92026-02-262029-11-08Tăng cường hiệu năng cho quá trình hút chân không, lớp I/O và thực thi truy vấn, mở rộng chức năng JSON, thêm tính năng cho MERGE và cải thiện COPY; nâng cao khả năng sao chép logic để đảm bảo tính sẵn sàng cao và nâng cấp, các cải tiến về bảo mật, vận hành, giám sát và phân tích.[181]
182025-09-25Phiên bản ổn định hiện tại: 18.3 2026-02-262030-11-14Hệ thống con vào ra mới và các cải tiến về vào ra bất đồng bộ.[182]
Chú giải:
Phiên bản cũ
Phiên bản cũ, vẫn được hỗ trợ
Phiên bản mới nhất
Phiên bản xem trước mới nhất
Ra mắt trong tương lai

Hệ sinh thái và các bản phái sinh

Nhờ giấy phép mã nguồn mở cho phép sự tự do và kiến trúc có thể mở rộng, một hệ sinh thái rộng lớn đã phát triển xung quanh PostgreSQL. Điều này bao gồm nhiều công ty cung cấp dịch vụ lưu trữ và hỗ trợ chuyên dụng, cũng như một số bản phân nhánh (fork) và cơ sở dữ liệu phái sinh đã điều chỉnh PostgreSQL cho các khối lượng công việc cụ thể. Các bản phái sinh nổi bật bao gồm:

  • Cơ sở dữ liệu Greenplum [en]: Một kho dữ liệu xử lý song song khối lượng lớn (MPP) dựa trên phiên bản cũ của PostgreSQL, được thiết kế cho phân tích quy mô lớn.[183]
  • TimescaleDB [en]: Một cơ sở dữ liệu chuỗi thời gian được cung cấp dưới dạng phần mở rộng của PostgreSQL, được tối ưu hóa để xử lý việc nhập dữ liệu nhanh và các truy vấn phức tạp của dữ liệu chuỗi thời gian.[184]
  • Amazon Aurora: Một cơ sở dữ liệu quan hệ chuyên chạy trên đám mây được cung cấp bởi Amazon Web Services, mang đến một phiên bản tương thích với PostgreSQL.[185]
  • Neon: Một bản triển khai không máy chủ, mã nguồn mở của PostgreSQL, tách biệt lưu trữ và tính toán để cung cấp các tính năng phát triển hiện đại như phân nhánh cơ sở dữ liệu (database branching).[186]
  • AlloyDB: Một cơ sở dữ liệu Google Cloud tương thích với PostgreSQL được quản lý hoàn toàn, tách biệt tính toán và lưu trữ, được thiết kế cho các khối lượng công việc kết hợp và khả năng AI tích hợp.[187]

Xem thêm

Tham khảo

  1. "PostgreSQL". Truy cập ngày 21 tháng 9 năm 2019. PostgreSQL: The World's Most Advanced Open Source Relational Database
  2. 1 2 "Contributor Profiles". PostgreSQL Global Development Group. Truy cập ngày 14 tháng 3 năm 2017.
  3. 1 2 "Happy Birthday, PostgreSQL!". PostgreSQL Global Development Group. ngày 8 tháng 7 năm 2008.
  4. 1 2 "License". PostgreSQL Global Development Group. Truy cập ngày 20 tháng 9 năm 2010.
  5. "PostgreSQL licence approved by OSI". Crynwr. ngày 18 tháng 2 năm 2010. Bản gốc lưu trữ ngày 8 tháng 8 năm 2016. Truy cập ngày 18 tháng 2 năm 2010.
  6. 1 2 "OSI PostgreSQL Licence". Open Source Initiative. ngày 20 tháng 2 năm 2010. Truy cập ngày 20 tháng 2 năm 2010.
  7. "Debian -- Details of package postgresql in sid". packages.debian.org. Truy cập ngày 25 tháng 1 năm 2021.
  8. "Licensing:Main". FedoraProject.
  9. "FAQ: What is PostgreSQL? How is it pronounced? What is Postgres?". PostgreSQL Wiki. Cộng đồng PostgreSQL. Truy cập ngày 2 tháng 10 năm 2021.
  10. "Audio sample, 5.6k MP3".
  11. "What is PostgreSQL?". PostgreSQL 9.3.0 Documentation. PostgreSQL Global Development Group. Truy cập ngày 20 tháng 9 năm 2013.
  12. "Parquet and Postgres in the Data Lake | Crunchy Data Blog". Crunchy Data (bằng tiếng Anh). ngày 3 tháng 5 năm 2022. Truy cập ngày 19 tháng 9 năm 2024.
  13. "PostGIS". postgis.net. ngày 18 tháng 12 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. PostGIS extends the capabilities of the PostgreSQL relational database by adding support for storing, indexing, and querying geospatial data.
  14. 1 2 "Temporal Extensions". PostgreSQL Wiki. ngày 18 tháng 12 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. Postgres can be extended to become a Temporal Database. Such databases track the history of database content over time, automatically retaining said history and allowing it to be altered and queried.
  15. "Orafce - Oracle's compatibility functions and packages". GitHub.com. ngày 17 tháng 12 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS.
  16. "pg_dbms_job". GitHub.com. ngày 8 tháng 11 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. PostgreSQL extension to schedules and manages jobs in a job queue similar to Oracle DBMS_JOB package.
  17. "WiltonDB". WiltonDB. 2023. Truy cập ngày 18 tháng 12 năm 2023. WiltonDB [is] packaged for Windows. It strives to be usable as a drop-in replacement to Microsoft SQL Server.
  18. "Babelfish for PostgreSQL". babelfishpg.org. Truy cập ngày 18 tháng 12 năm 2023. Babelfish for PostgreSQL ... provides the capability for PostgreSQL to understand queries from applications written for Microsoft SQL Server.
  19. "PostgreSQL Clients". wiki.postgresql.org. ngày 18 tháng 10 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. This page is a partial list of interactive SQL clients (GUI or otherwise) ... that you can type SQL in to and get results from them.
  20. "Design Tools". wiki.postgresql.org. ngày 23 tháng 10 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. Tools to help with designing a schema, via creating Entity-Relationship diagrams and similar. Most are GUI.
  21. "Community Guide to PostgreSQL GUI Tools". wiki.postgresql.org. ngày 1 tháng 12 năm 2023. Truy cập ngày 18 tháng 12 năm 2023. This page is a list of miscellaneous utilities that work with Postgres (ex: data loaders, comparators etc.).
  22. "Replication, Clustering, and Connection Pooling". wiki.postgresql.org. ngày 13 tháng 7 năm 2020. Truy cập ngày 18 tháng 12 năm 2023. There are many approaches available to scale PostgreSQL beyond running on a single server. ... There is no one-size fits all...
  23. Điều này được công nhận thông qua sự cho phép tự do sử dụng tên PostgreSQL. Việc sử dụng tên này được chấp thuận (như một hình thức sử dụng hợp lý, khi không gây nhầm lẫn cho mọi người về mối quan hệ pháp lý với dự án PostgreSQL thực tế) khi được dùng để hỗ trợ PostgreSQL, tuân theo Chính sách Nhãn hiệu PostgreSQL:"Trademark Policy". PostgreSQL.org. ngày 8 tháng 12 năm 2020. Truy cập ngày 17 tháng 12 năm 2023. We will try to work with you to permit uses [of the PostgreSQL name] that support the PostgreSQL project and our Community.
  24. 1 2 Stonebraker, M.; Rowe, L. A. (tháng 5 năm 1986). The design of POSTGRES (PDF). Proc. 1986 ACM SIGMOD [en] Conference on Management of Data. Washington, DC. Truy cập ngày 17 tháng 12 năm 2011.
  25. "PostgreSQL: History". PostgreSQL Global Development Group. Bản gốc lưu trữ ngày 26 tháng 3 năm 2017. Truy cập ngày 27 tháng 8 năm 2016.
  26. "Project name – statement from the core team". archives.postgresql.org. ngày 16 tháng 11 năm 2007. Truy cập ngày 16 tháng 11 năm 2007.
  27. "Michael Stonebraker – A.M. Turing Award Winner". amturing.acm.org (bằng tiếng Anh). Truy cập ngày 20 tháng 3 năm 2018. Techniques pioneered in Postgres were widely implemented [..] Stonebraker is the only Turing award winner to have engaged in serial entrepreneurship on anything like this scale, giving him a distinctive perspective on the academic world.
  28. Stonebraker, M.; Rowe, L. A. The POSTGRES data model (PDF). Proceedings of the 13th International Conference on Very Large Data Bases. Brighton, England: Morgan Kaufmann Publishers. tr. 83–96. ISBN 0-934613-46-X.
  29. Pavel Stehule (ngày 9 tháng 6 năm 2012). "Historie projektu PostgreSQL" (bằng tiếng Séc).
  30. A Brief History of PostgreSQL "Version 3 appeared in 1991 and added support for multiple storage managers, an improved query executor, and a rewritten rule system.". postgresql.org. The PostgreSQL Global Development Group, Truy cập ngày 18 tháng 3 năm 2020.
  31. "University POSTGRES, Version 4.2". ngày 26 tháng 7 năm 1999.
  32. Page, Dave (ngày 7 tháng 4 năm 2015). "Re: 20th anniversary of PostgreSQL ?". pgsql-advocacy (Danh sách thư). Truy cập ngày 9 tháng 4 năm 2015.
  33. Group, PostgreSQL Global Development (ngày 25 tháng 9 năm 2025). "PostgreSQL 18 Released!". PostgreSQL News (bằng tiếng Anh). Truy cập ngày 6 tháng 12 năm 2025. {{Chú thích web}}: |last= có tên chung (trợ giúp)
  34. Dan R. K. Ports; Kevin Grittner (2012). "Serializable Snapshot Isolation in PostgreSQL" (PDF). Proceedings of the VLDB Endowment. 5 (12): 1850–1861. arXiv:1208.4179. Bibcode:2012arXiv1208.4179P. doi:10.14778/2367502.2367523. S2CID 16006111.
  35. Bohan Zhang; Andy Pavlo (2023). "The part of PostgreSQL we hate the most". OtterTune (blog).
  36. "26.4. Hot Standby". PostgreSQL Documentation (bằng tiếng Anh). ngày 8 tháng 5 năm 2025. Truy cập ngày 22 tháng 7 năm 2025.
  37. Hood, Stu (ngày 30 tháng 6 năm 2025). "We Made Postgres Writes Faster, but it Broke Replication". ParadeDB (bằng tiếng Anh). Truy cập ngày 22 tháng 7 năm 2025.
  38. "Postgres-XC project page" (website). Postgres-XC. Bản gốc lưu trữ tháng 7 1, 2012.
  39. "Postgres-R: a database replication system for PostgreSQL". Postgres Global Development Group. Bản gốc lưu trữ ngày 29 tháng 3 năm 2010. Truy cập ngày 27 tháng 8 năm 2016.
  40. "Postgres-BDR". 2ndQuadrant Ltd. Truy cập ngày 27 tháng 8 năm 2016.
  41. Marit Fischer (ngày 10 tháng 11 năm 2007). "Backcountry.com finally gives something back to the open source community" (Thông cáo báo chí). Backcountry.com. Bản gốc lưu trữ tháng 12 26, 2010.
  42. Bartunov, O; Sigaev, T (tháng 5 năm 2011). SP-GiST – a new indexing framework for PostgreSQL (PDF). PGCon 2011. Ottawa, Canada. Truy cập ngày 31 tháng 1 năm 2016.
  43. Bartunov, O; Sigaev, T (tháng 5 năm 2010). K-nearest neighbour search for PostgreSQL (PDF). PGCon 2010. Ottawa, Canada. Truy cập ngày 31 tháng 1 năm 2016.
  44. "PostgreSQL, the NoSQL Database | Linux Journal". www.linuxjournal.com.
  45. Geoghegan, Peter (ngày 23 tháng 3 năm 2014). "What I think of jsonb".
  46. Obe, Regina; Hsu, Leo S. (2012). "10: Replication and External Data". PostgreSQL: Up and Running (ấn bản thứ 1). Sebastopol, CA: O'Reilly Media, Inc. tr. 129. ISBN 978-1-4493-2633-3. Truy cập ngày 17 tháng 10 năm 2016. Foreign Data Wrappers (FDW) [...] are mechanisms of querying external datasources. PostgreSQL 9.1 introduced this nolink: SQL/MED standards compliant feature.
  47. "Frontend/Backend Protocol". postgresql.org. ngày 9 tháng 11 năm 2023. Truy cập ngày 17 tháng 12 năm 2023. This document describes version 3.0 of the protocol, implemented in PostgreSQL 7.4 and later.
  48. "libpq". postgresql.org. ngày 9 tháng 11 năm 2023. Truy cập ngày 17 tháng 12 năm 2023.
  49. "Embedded SQL in C". postgresql.org. ngày 9 tháng 11 năm 2023. Truy cập ngày 17 tháng 12 năm 2023.
  50. "Client Interfaces". postgresql.org. ngày 9 tháng 11 năm 2023. Truy cập ngày 17 tháng 12 năm 2023.
  51. "libpqxx". Truy cập ngày 4 tháng 4 năm 2020.
  52. "PostgreSQL JDBC Driver". Truy cập ngày 4 tháng 4 năm 2020.
  53. "[ANN] PostgresORM.jl: Object Relational Mapping for PostgreSQL". JuliaLang (bằng tiếng Anh). ngày 30 tháng 6 năm 2021. Truy cập ngày 26 tháng 8 năm 2021.
  54. "GitHub - invenia/LibPQ.jl: A Julia wrapper for libpq". GitHub (bằng tiếng Anh). Truy cập ngày 26 tháng 8 năm 2021.
  55. 1 2 "PL/Julia extension ( minimal )". JuliaLang (bằng tiếng Anh). ngày 8 tháng 3 năm 2020. Truy cập ngày 26 tháng 8 năm 2021.
  56. "PostgreSQL + Python | Psycopg". initd.org. Bản gốc lưu trữ ngày 1 tháng 11 năm 2012. Truy cập ngày 21 tháng 1 năm 2015.
  57. "node-postgres". Truy cập ngày 4 tháng 4 năm 2020.
  58. "SQL database drivers". Go wiki. golang.org. Truy cập ngày 22 tháng 6 năm 2015.
  59. "Rust-Postgres". Truy cập ngày 4 tháng 4 năm 2020.
  60. "Server Programming". PostgreSQL documentation. Truy cập ngày 19 tháng 5 năm 2019.
  61. "DO". PostgreSQL documentation. Truy cập ngày 19 tháng 5 năm 2019.
  62. "PL/Python - Python Procedural Language". PostgreSQL documentation. Truy cập ngày 23 tháng 10 năm 2022.
  63. "Procedural Languages". postgresql.org. ngày 31 tháng 3 năm 2016. Truy cập ngày 7 tháng 4 năm 2016.
  64. "postgres-plr/plr". ngày 17 tháng 6 năm 2021 qua GitHub.
  65. Chartier, Colin (ngày 8 tháng 11 năm 2019). "System design hack: Postgres is a great pub/sub & job server". LayerCI blog. Truy cập ngày 24 tháng 11 năm 2019.
  66. "Release 9.5". postgresql.org. ngày 11 tháng 2 năm 2021.
  67. Ringer, Craig (ngày 13 tháng 4 năm 2016). "What is SKIP LOCKED for in PostgreSQL 9.5?". 2nd Quadrant. Truy cập ngày 24 tháng 11 năm 2019.
  68. "Add a materialized view relations". ngày 4 tháng 3 năm 2013. Truy cập ngày 4 tháng 3 năm 2013.
  69. "Support automatically-updatable views". ngày 8 tháng 12 năm 2012. Truy cập ngày 8 tháng 12 năm 2012.
  70. "Add CREATE RECURSIVE VIEW syntax". ngày 1 tháng 2 năm 2013. Truy cập ngày 28 tháng 2 năm 2013.
  71. Momjian, Bruce (2001). "Subqueries". PostgreSQL: Introduction and Concepts. Addison-Wesley. ISBN 0-201-70331-9. Bản gốc lưu trữ tháng 8 9, 2010. Truy cập tháng 9 25, 2010.
  72. Bernier, Robert (ngày 2 tháng 2 năm 2006). "Using Regular Expressions in PostgreSQL". O'Reilly Media. Truy cập ngày 25 tháng 9 năm 2010.
  73. "A few short notes about PostgreSQL and POODLE". hagander.net.
  74. Berkus, Josh (ngày 2 tháng 6 năm 2016). "PostgreSQL 9.6 Beta and PGCon 2016". LWN.net.
  75. "FAQ – PostgreSQL wiki". wiki.postgresql.org (bằng tiếng Anh). Truy cập ngày 13 tháng 4 năm 2017.
  76. "SEPostgreSQL Documentation – PostgreSQL wiki". wiki.postgresql.org.
  77. "NB SQL 9.3 - SELinux Wiki". selinuxproject.org.
  78. "PostgreSQL 10 Documentation: Appendix E. Release Notes". ngày 12 tháng 8 năm 2021.
  79. "PostgreSQL: About". www.postgresql.org. Truy cập ngày 14 tháng 10 năm 2024.
  80. "Case sensitivity of identifiers". PostgreSQL Global Development Group. ngày 11 tháng 11 năm 2021.
  81. 1 2 Berkus, Josh (ngày 6 tháng 7 năm 2007). "PostgreSQL publishes first real benchmark". Bản gốc lưu trữ tháng 7 12, 2007. Truy cập tháng 7 10, 2007.
  82. Vilmos, György (ngày 29 tháng 9 năm 2009). "PostgreSQL history". Truy cập ngày 28 tháng 8 năm 2010.
  83. "SPECjAppServer2004 Result". SPEC [en]. ngày 6 tháng 7 năm 2007. Truy cập ngày 10 tháng 7 năm 2007.
  84. "SPECjAppServer2004 Result". SPEC [en]. ngày 4 tháng 7 năm 2007. Truy cập ngày 1 tháng 9 năm 2007.
  85. "Managing Kernel Resources". PostgreSQL Manual. PostgreSQL.org. Truy cập ngày 12 tháng 11 năm 2011.
  86. Greg Smith (ngày 15 tháng 10 năm 2010). PostgreSQL 9.0 High Performance. Packt Publishing [en]. ISBN 978-1-84951-030-1.
  87. Robert Haas (ngày 3 tháng 4 năm 2012). "Did I Say 32 Cores? How about 64?". Truy cập ngày 8 tháng 4 năm 2012.
  88. Khushi, Matloob (tháng 6 năm 2015). "Benchmarking database performance for genomic data". J Cell Biochem. 116 (6): 877–83. arXiv:2008.06835. doi:10.1002/jcb.25049. PMID 25560631. S2CID 27458866.
  89. Salunke, Sanket Vilas; Ouda, Abdelkader (ngày 19 tháng 10 năm 2024). "A Performance Benchmark for the PostgreSQL and MySQL Databases". Future Internet. Quyển 16 số 10. tr. 382. doi:10.3390/fi16100382. Truy cập ngày 22 tháng 3 năm 2026.{{Chú thích tạp chí}}: Quản lý CS1: DOI truy cập mở nhưng không được đánh ký hiệu (liên kết)
  90. "Mac OS X packages". The PostgreSQL Global Development Group. Truy cập ngày 27 tháng 8 năm 2016.
  91. "PostgreSQL: Windows installers". www.postgresql.org. Truy cập ngày 26 tháng 8 năm 2021.
  92. "postgresql-client-10.5p1 – PostgreSQL RDBMS (client)". OpenBSD ports [en]. ngày 4 tháng 10 năm 2018. Truy cập ngày 10 tháng 10 năm 2018.
  93. "Installing and Configuring PostgreSQL - Oracle Solaris Cluster Data Service for PostgreSQL Guide". docs.oracle.com. Truy cập ngày 4 tháng 2 năm 2023.
  94. "AArch64 planning BoF at DebConf". debian.org.
  95. Souza, Rubens (ngày 17 tháng 6 năm 2015). "Step 5 (update): Installing PostgreSQL on my Raspberry Pi 1 and 2". Raspberry PG. Bản gốc lưu trữ ngày 20 tháng 9 năm 2016. Truy cập ngày 27 tháng 8 năm 2016.
  96. "Supported Platforms". PostgreSQL Global Development Group. Truy cập ngày 6 tháng 4 năm 2012.
  97. "Available lexers — Pygments".
  98. "pgAdmin: PostgreSQL administration and management tools". website. Truy cập ngày 12 tháng 11 năm 2011.
  99. "Debian -- Details of package pgadmin3 in jessie". Truy cập ngày 10 tháng 3 năm 2017.
  100. "pgAdmin Development Team". pgadmin.org. Truy cập ngày 22 tháng 6 năm 2015.
  101. Dave, Page (ngày 7 tháng 12 năm 2014). "The story of pgAdmin". Dave's Postgres Blog. pgsnake.blogspot.co.uk. Truy cập ngày 7 tháng 12 năm 2014.
  102. "pgAdmin 4 README". GitHub. Truy cập ngày 15 tháng 8 năm 2018.
  103. phpPgAdmin Project (ngày 25 tháng 4 năm 2008). "About phpPgAdmin". Truy cập ngày 25 tháng 4 năm 2008.
  104. PostgreSQL Studio (ngày 9 tháng 10 năm 2013). "About PostgreSQL Studio". Bản gốc lưu trữ tháng 10 7, 2013. Truy cập tháng 10 9, 2013.
  105. "TeamPostgreSQL website". ngày 3 tháng 10 năm 2013. Truy cập ngày 3 tháng 10 năm 2013.
  106. oooforum.org (ngày 10 tháng 1 năm 2010). "Back Ends for OpenOffice". Bản gốc lưu trữ ngày 28 tháng 9 năm 2011. Truy cập ngày 5 tháng 1 năm 2011.
  107. libreoffice.org (ngày 14 tháng 10 năm 2012). "Base features". Bản gốc lưu trữ tháng 1 7, 2012. Truy cập tháng 10 14, 2012.
  108. Greg Smith; Robert Treat & Christopher Browne. "Tuning your PostgreSQL server". Wiki. PostgreSQL.org. Truy cập ngày 12 tháng 11 năm 2011.
  109. "pgDevOps". BigSQL.org. Bản gốc lưu trữ ngày 1 tháng 4 năm 2017. Truy cập ngày 4 tháng 5 năm 2017.
  110. "pgbackrest/pgbackrest". GitHub. ngày 21 tháng 11 năm 2021.
  111. "pgaudit/pgaudit". GitHub. ngày 21 tháng 11 năm 2021.
  112. "wal-e/wal-e". ngày 24 tháng 6 năm 2021 qua GitHub.
  113. Dugin, Rostislav (ngày 28 tháng 11 năm 2025), RostislavDugin/postgresus, truy cập ngày 28 tháng 11 năm 2025
  114. Claire Giordano (ngày 31 tháng 10 năm 2019). "Architecting petabyte-scale analytics by scaling out Postgres on Azure with the Citus extension". Blog. Microsoft Tech Community.
  115. Emmanuel Cecchet (ngày 21 tháng 5 năm 2009). Building PetaByte Warehouses with Unmodified PostgreSQL (PDF). PGCon 2009. Truy cập ngày 12 tháng 11 năm 2011.
  116. "MySpace.com scales analytics for all their friends" (PDF). case study. Aster Data. ngày 15 tháng 6 năm 2010. Lưu trữ (PDF) bản gốc ngày 14 tháng 11 năm 2010. Truy cập ngày 12 tháng 11 năm 2011.
  117. "Last Weekend's Outage". Blog. Geni. ngày 1 tháng 8 năm 2011.
  118. "Database". Wiki. OpenStreetMap.
  119. PostgreSQL affiliates .ORG domain, Australia: Computer World, ngày 24 tháng 8 năm 2023
  120. 1 2 3 W. Jason Gilmore; R.H. Treat (2006). Beginning PHP and PostgreSQL 8: From Novice to Professional. Apress. ISBN 978-1-43020-136-6. Truy cập ngày 30 tháng 8 năm 2017.
  121. Sony Online opts for open-source database over Oracle, Computer World
  122. "A Web Commerce Group Case Study on PostgreSQL" (PDF) (ấn bản thứ 1.2). PostgreSQL.
  123. "Architecture Overview". Reddit software wiki. Reddit. ngày 27 tháng 3 năm 2014. Truy cập ngày 25 tháng 11 năm 2014.
  124. Pihlak, Martin. "PostgreSQL @Skype" (PDF). wiki.postgresql.org. Truy cập ngày 16 tháng 1 năm 2019.
  125. "How Much Are You Paying For Your Database?". Sun Microsystems blog. 2007. Bản gốc lưu trữ tháng 3 7, 2009. Truy cập tháng 12 14, 2007.
  126. "Database – MusicBrainz". MusicBrainz Wiki. Truy cập ngày 5 tháng 2 năm 2011.
  127. Duncavage, Daniel P (ngày 13 tháng 7 năm 2010). "NASA needs Postgres-Nagios help".
  128. Roy, Gavin M (2010). "PostgreSQL at myYearbook.com" (talk). USA East: PostgreSQL Conference. Bản gốc lưu trữ tháng 7 27, 2011.
  129. "Keeping Instagram up with over a million new users in twelve hours". Instagram-engineering.tumblr.com. ngày 17 tháng 5 năm 2011. Truy cập ngày 7 tháng 7 năm 2012.
  130. "Postgres at Disqus". Truy cập ngày 24 tháng 5 năm 2013.
  131. Kelly, Matthew (ngày 27 tháng 3 năm 2015). At the Heart of a Giant: Postgres at TripAdvisor. PGConf US 2015. Bản gốc lưu trữ ngày 23 tháng 7 năm 2015. Truy cập ngày 23 tháng 7 năm 2015. (Presentation video)
  132. "Yandex.Mail's successful migration from Oracle to Postgres [pdf]". Hacker News: news.ycombinator.com. Truy cập ngày 28 tháng 9 năm 2016.
  133. 1 2 S. Riggs; G. Ciolli; H. Krosing; G. Bartolini (2015). PostgreSQL 9 Administration Cookbook - Second Edition. Packt. ISBN 978-1-84951-906-9. Truy cập ngày 5 tháng 9 năm 2017.
  134. "Met Office swaps Oracle for PostgreSQL". computerweekly.com. ngày 17 tháng 6 năm 2014. Truy cập ngày 5 tháng 9 năm 2017.
  135. "Open Source Software". FlightAware. Truy cập ngày 22 tháng 11 năm 2017.
  136. "Ansible at Grofers (Part 2) — Managing PostgreSQL". Lambda - The Grofers Engineering Blog. ngày 28 tháng 2 năm 2017. Truy cập ngày 5 tháng 9 năm 2018.
  137. McMahon, Philip; Chiorean, Maria-Livia; Coleman, Susie; Askoolum, Akash (ngày 30 tháng 11 năm 2018). "Digital Blog: Bye bye Mongo, Hello Postgres". The Guardian (bằng tiếng Anh). ISSN 0261-3077.
  138. "Elevated Errors on API and ChatGPT". ngày 21 tháng 11 năm 2023. Truy cập ngày 2 tháng 12 năm 2023.
  139. "Microsoft FY25 Third Quarter Earnings Conference Call". ngày 5 tháng 5 năm 2025.
  140. Alex Williams (ngày 1 tháng 4 năm 2013). "Heroku Forces Customer Upgrade To Fix Critical PostgreSQL Security Hole". TechCrunch.
  141. Barb Darrow (ngày 11 tháng 11 năm 2013). "Heroku gussies up Postgres with database roll-back and proactive alerts". GigaOM. Bản gốc lưu trữ ngày 12 tháng 11 năm 2013.
  142. Craig Kerstiens (ngày 26 tháng 9 năm 2013). "WAL-E and Continuous Protection with Heroku Postgres". Heroku blog.
  143. "EnterpriseDB Offers Up Postgres Plus Cloud Database". Techweekeurope.co.uk. ngày 27 tháng 1 năm 2012. Bản gốc lưu trữ ngày 30 tháng 1 năm 2012. Truy cập ngày 7 tháng 7 năm 2012.
  144. "Alibaba Cloud Expands Technical Partnership with EnterpriseDB". Milestone Partners (bằng tiếng Anh). ngày 26 tháng 9 năm 2018. Truy cập ngày 9 tháng 6 năm 2020.
  145. O'Doherty, Paul; Asselin, Stephane (2014). "3: VMware Workspace Architecture". VMware Horizon Suite: Building End-User Services. VMware Press Technology. Upper Saddle River, NJ: VMware Press. tr. 65. ISBN 978-0-13-347910-2. Truy cập ngày 19 tháng 9 năm 2016. In addition to the open source version of PostgreSQL, VMware offers vFabric Postgres, or vPostgres. vPostgres is a PostgreSQL virtual appliance that has been tuned for virtual environments.
  146. Al Sargent (ngày 15 tháng 5 năm 2012). "Introducing VMware vFabric Suite 5.1: Automated Deployment, New Components, and Open Source Support". VMware blogs.
  147. "VMware vFabric Suite EOA" (PDF). ngày 1 tháng 9 năm 2014. Truy cập ngày 17 tháng 12 năm 2023.
  148. Jeff (ngày 14 tháng 11 năm 2013). "Amazon RDS for PostgreSQL – Now Available". Amazon Web Services Blog.
  149. Alex Williams (ngày 14 tháng 11 năm 2013). "PostgreSQL Now Available On Amazon's Relational Database Service". TechCrunch.
  150. "Amazon Aurora Update – PostgreSQL Compatibility". AWS Blog. ngày 30 tháng 11 năm 2016. Truy cập ngày 1 tháng 12 năm 2016.
  151. "Announcing Azure Database for PostgreSQL". Azure Blog. ngày 10 tháng 5 năm 2017. Truy cập ngày 19 tháng 6 năm 2019.
  152. "Aliyun PolarDB released major updates to support one-click migration of databases such as Oracle to the cloud". Develop Paper. ngày 6 tháng 7 năm 2019.
  153. "Asynchronous Master-Slave Replication of PostgreSQL Databases in One Click". DZone. Truy cập ngày 26 tháng 5 năm 2017.
  154. "IBM Cloud Hyper Protect DBaaS for PostgreSQL documentation". cloud.ibm.com (bằng tiếng Anh). Truy cập ngày 24 tháng 6 năm 2020.
  155. "Crunchy Data Continues PostgreSQL Support with the Release of Crunchy Bridge". ngày 18 tháng 9 năm 2020.
  156. "SELECT 'Hello, World' Serverless Postgres built for the cloud". ngày 15 tháng 6 năm 2022.
  157. "AlloyDB for PostgreSQL fast high-availability cloud database - Google Cloud Blog". ngày 6 tháng 3 năm 2025.
  158. "Introducing Nile, Serverless Postgres for modern SaaS". ngày 25 tháng 10 năm 2023.
  159. "Announcing the general availability of AlloyDB Omni". Google Cloud Blog. ngày 10 tháng 4 năm 2024.
  160. "Versioning policy". PostgreSQL Global Development Group. Truy cập ngày 4 tháng 10 năm 2018.
  161. Vaas, Lisa (ngày 2 tháng 12 năm 2002). "Databases Target Enterprises". eWeek [en]. Truy cập ngày 29 tháng 10 năm 2016.
  162. Krill, Paul (ngày 20 tháng 11 năm 2003). "PostgreSQL boosts open source database". InfoWorld. Truy cập ngày 21 tháng 10 năm 2016.
  163. Krill, Paul (ngày 19 tháng 1 năm 2005). "PostgreSQL open source database boasts Windows boost". InfoWorld. Truy cập ngày 2 tháng 11 năm 2016.
  164. Weiss, Todd R. (ngày 5 tháng 12 năm 2006). "Version 8.2 of open-source PostgreSQL DB released". Computerworld. Truy cập ngày 17 tháng 10 năm 2016.
  165. Gilbertson, Scott (ngày 5 tháng 2 năm 2008). "PostgreSQL 8.3: Open Source Database Promises Blazing Speed". Wired. Truy cập ngày 17 tháng 10 năm 2016.
  166. Huber, Mathias (ngày 2 tháng 7 năm 2009). "PostgreSQL 8.4 Proves Feature-Rich". Linux Magazine [en]. Truy cập ngày 17 tháng 10 năm 2016.
  167. Brockmeier, Joe (ngày 30 tháng 9 năm 2010). "Five Enterprise Features in PostgreSQL 9". Linux.com. Linux Foundation. Truy cập ngày 6 tháng 2 năm 2017.
  168. Timothy Prickett Morgan (ngày 12 tháng 9 năm 2011). "PostgreSQL revs to 9.1, aims for enterprise". The Register [en]. Truy cập ngày 6 tháng 2 năm 2017.
  169. "PostgreSQL: PostgreSQL 9.2 released". www.postgresql.org. ngày 10 tháng 9 năm 2012.
  170. "Reintroducing Hstore for PostgreSQL". InfoQ.
  171. Richard, Chirgwin (ngày 7 tháng 1 năm 2016). "Say oops, UPSERT your head: PostgreSQL version 9.5 has landed". The Register [en]. Truy cập ngày 17 tháng 10 năm 2016.
  172. "PostgreSQL: Documentation: 10: Chapter 31. Logical Replication". www.postgresql.org. ngày 12 tháng 8 năm 2021.
  173. "PostgreSQL 11 Released". ngày 18 tháng 10 năm 2018. Truy cập ngày 18 tháng 10 năm 2018.
  174. "PostgreSQLRelease Notes". Truy cập ngày 18 tháng 10 năm 2018.
  175. "PostgreSQL: PostgreSQL 12 Released!". Postgresql News. ngày 3 tháng 10 năm 2019.
  176. "PostgreSQL 13 Release Notes". www.postgresql.org. ngày 12 tháng 8 năm 2021.
  177. "PostgreSQL 13 Released!". www.postgresql.org. ngày 24 tháng 9 năm 2020.
  178. "PostgreSQL 14 Release Notes". www.postgresql.org. ngày 11 tháng 11 năm 2021.
  179. "PostgreSQL 14 Released!". www.postgresql.org. ngày 30 tháng 9 năm 2021.
  180. "PostgreSQL 16 Released!". ngày 14 tháng 9 năm 2023.
  181. "PostgreSQL 17 Released!". ngày 26 tháng 9 năm 2024.
  182. "PostgreSQL 18 Released!". ngày 25 tháng 9 năm 2025.
  183. "Greenplum Database Documentation". docs.greenplum.org. Truy cập ngày 10 tháng 8 năm 2025.
  184. "About Timescale". Timescale. Truy cập ngày 10 tháng 8 năm 2025. TimescaleDB is implemented as an extension on PostgreSQL, which means that it runs within a PostgreSQL instance and that you interact with it in the same way that you interact with PostgreSQL.
  185. "Amazon Aurora with PostgreSQL compatibility". Amazon Web Services, Inc. Truy cập ngày 10 tháng 8 năm 2025.
  186. "What is Neon?". Neon. Truy cập ngày 10 tháng 8 năm 2025. Neon is a fully managed serverless PostgreSQL. It separates storage and compute and substitutes PostgreSQL's storage layer with a custom-built, multi-tenant storage engine designed for the cloud.
  187. "AlloyDB overview". Google Cloud. Truy cập ngày 10 tháng 8 năm 2025. AlloyDB for PostgreSQL is a fully managed, PostgreSQL-compatible database service that's designed for your most demanding workloads, including hybrid transactional and analytical processing... AlloyDB employs a disaggregated architecture. The compute and storage layers are separate and offer individual scaling.
  188. PostgreSQL 9.1 with synchronous replication (news), H Online

Đọc thêm

Liên kết ngoài