Tiêu đề không phải là chiêu dụ hoặc cường điệu. Tôi dự định chứng minh rằng bằng cả thiết kế và triển khai rằng PostgreSQL là một cơ sở dữ liệu tốt hơn một cách khách quan và có thể đo lường được so với bất kỳ thứ gì hiện có, dù có cân nhắc về tiền bạc hay không.
Làm thế nào trên thế giới này tôi có thể tuyên bố và biện minh cho một tuyên bố cao cả như vậy? Đọc tiếp, mọt sách nhẹ nhàng. Tôi hứa rằng thời gian của bạn sẽ không bị lãng phí.
Bảo mật minh bạch
PostgreSQL có một danh sách gửi thư bảo mật. Dự án PostgreSQL tìm hiểu về các vectơ xâm nhập cùng lúc mà mọi người khác làm. Không có gì bị che giấu và bất kỳ thứ gì được tìm thấy đều được xử lý với tốc độ khiến các nhà cung cấp thương mại quay cuồng. Đừng để bị lừa bởi các danh sách lỗi ngắn hơn được xuất bản bởi cùng một nhà cung cấp cung cấp phần mềm đang được giám sát kỹ lưỡng.
Điều này có nghĩa là tất cả các vectơ tấn công đã biết đều được xử lý ngay sau khi chúng được công khai. Loại phản ứng bảo mật này thậm chí còn không được dự tính trong thị trường thương mại. Đối với các nhà cung cấp thương mại, giữ bí mật cho đến khi vấn đề có thể được giải quyết là rất quan trọng đối với việc khắc phục. PostgreSQL không được giải tỏa như vậy và điều đó thật tuyệt vời đối với bạn.
Kiểm soát đồng thời nhiều phiên bản phù hợp với bạn
PostgreSQL chọn một phương pháp kiểm soát đồng thời hoạt động tốt nhất cho khối lượng công việc CHÈN và CHỌN cao.
Nó rất dễ thiết kế cho PostgreSQL, lưu ý các giới hạn về chi phí theo dõi cho
CẬP NHẬT và XÓA. Hầu hết, nếu bạn tôn trọng dữ liệu của mình, bạn nên học cách yêu thích tính bảo mật dữ liệu mà PostgreSQL cung cấp cho bạn.
DDL tham gia vào các giao dịch sử dụng PostgreSQL. Việc di chuyển hoạt động theo mọi cách hoặc không theo cách nào (loại tồi tệ nhất của việc không hoạt động là gần như hoạt động). Dây nịt kiểm tra rất dễ chế tạo. Cần đặt lại dây kiểm tra? Chỉ cần QUAY LẠI.
PostgreSQL hỗ trợ các hình thức cách ly giao dịch tuân thủ các tiêu chuẩn, bao gồm tuần tự hóa, đọc cam kết và đọc lặp lại. Các phương pháp này cung cấp sự tuân thủ ACID hoàn toàn.
PostgreSQL thực hiện mọi thứ
Vì vậy, bạn muốn NoSQL, Riak, REACT, Redis, Mongo, v.v.? PostgreSQL thực hiện tất cả những điều đó. Phải thừa nhận rằng không phải với tất cả các chuông và còi của tất cả các sản phẩm ban đầu. Ví dụ:PostgreSQL không tạo các phân đoạn mới cho bạn cho bất kỳ phân đoạn nào trong số đó. Đó vẫn là một quy trình thủ công. Nhưng một lần nữa, luôn có pg_partman. . .
Bạn muốn có một kho dữ liệu dạng cột? Còn về hstore thì sao? Bạn không muốn đào tạo lại nhân viên của mình? Cắm ngôn ngữ bạn chọn và tiếp tục vận chuyển. Bạn muốn sao chép một phần? Truyền trực tuyến Bản sao lôgic là dành cho bạn.
Tôi sẽ rất khó nghĩ ra một tính năng mà tôi muốn mà PostgreSQL không có hoặc không có một tiện ích mở rộng nổi tiếng nào để cung cấp.
Bạn muốn trích xuất dữ liệu từ các hệ thống khác? PostgreSQL có bộ sưu tập các đối tượng liên kết sôi động nhất của bất kỳ cơ sở dữ liệu nào. Họ gọi chúng là trình bao bọc dữ liệu nước ngoài và bạn có thể kết nối PostgreSQL với một con cá sấu bằng băng keo và dây buộc zip. Xử lý mọi thứ như đó là dữ liệu của bạn.
Kết nối nó vào bản đồ
Cộng đồng PostGIS có thể được cho là lớn hơn chính cộng đồng PostgreSQL. Khả năng ánh xạ của PostgreSQL tự xếp nó vào một lớp, thậm chí so với các lựa chọn thay thế rất đắt tiền.
Dự án PostGIS đã chọn PostgreSQL làm nền tảng vì tính dễ mở rộng và khả năng làm giàu dữ liệu sâu rộng. Những khả năng này được bộc lộ trực tiếp cho bất kỳ dự án nào khác tận dụng. Chúng cũng không được trả lời bởi bất kỳ nhà cung cấp, thương mại hoặc nguồn mở nào khác.
Cuối cùng, bạn có thể kết nối nó với bất kỳ thứ gì.
PostgreSQL đang phát triển và dẫn đầu về mã nguồn mở
Dự án PostgreSQL là một trong những tổ chức được đánh giá cao nhất trong phần mềm nguồn mở. Với một cộng đồng khổng lồ và đang phát triển với tốc độ khủng khiếp, bất kỳ khiếm khuyết nào mà nó có hiện nay được cho là sẽ bị đánh bại trong một khung thời gian mà các nhà cung cấp khác chỉ có thể mơ ước.
Các tính năng chất lượng bổ sung dành cho doanh nghiệp được công bố hàng ngày và đội ngũ nhân viên để duy trì các tính năng đó được tự chọn từ nhóm thiên tài mà mọi công ty đều hy vọng sẽ thuê và chỉ có không đủ.
PostgreSQL xây dựng các giải pháp ổn định vĩnh viễn
PostgreSQL có bản sao lôgic được xây dựng trong lõi. Điều này cho phép di chuyển giữa các phiên bản. Đọc lại. Bạn không bị khóa trong một phiên bản phần cứng hoặc phần mềm cụ thể. Giải pháp có thể được nâng cấp vô thời hạn.
Ngoài ra, PostgreSQL được hỗ trợ trên nhiều nền tảng, bao gồm cả các phiên bản siêu ổn định của Linux. Bạn có cần một giải pháp tồn tại lâu hơn ROI thông thường từ 3 ~ 5 năm không? PostgreSQL sẽ tồn tại mãi mãi với bạn, ngay cả khi bạn không bao giờ nâng cấp phần cứng. Và các khoản phí cho điều đó rất dễ dàng để tính toán. 0 đô la.
Khai báo tốt hơn mệnh lệnh
Các ngôn ngữ cơ sở dữ liệu thường là ngôn ngữ khai báo. Đó là, bạn viết một truy vấn bằng ngôn ngữ xây dựng theo lựa chọn của bạn, mô tả kết quả mà bạn muốn xem. Cơ sở dữ liệu cố gắng giải mã ý định của bạn và đưa ra kết quả thích hợp. Đây là cơ sở của tất cả các mô hình lập trình khai báo. Trong PostgreSQL, điều này liên quan đến ánh xạ các hàm tới các từ khóa trong ngôn ngữ SQL, đôi khi có một số lựa chọn thuật toán để biết chính xác cách triển khai từng khai báo.
Trong lập luận cũ kỹ về mô hình lập trình imperitive so với mô hình khai báo 5, tôi thấy rằng lập trình khai báo chỉ là lập trình mệnh lệnh trong một lớp ngụy trang mỏng manh. Mỗi mã thông báo khai báo trong ngôn ngữ truy vấn cơ sở dữ liệu cuối cùng ánh xạ tới một hoặc một số thuật toán áp dụng khai báo theo các thuật ngữ ngụ ý. Do đó, sự không phù hợp trở kháng được xác định bởi Henrietta cuối cùng là trong suy nghĩ của nhà phát triển. Nghĩa là, nếu nhà phát triển nghĩ chính xác như người lập trình hàm cơ sở dữ liệu nghĩ, thì sẽ không có sự không khớp.
Vì vậy, làm thế nào mà một mô hình khai báo cuối cùng có thể tốt hơn một mô hình trực quan, cho rằng một mô hình này chỉ là một tính năng gọi của mô hình kia? Rất vui vì bạn đã hỏi, vì điều đó đưa tôi đến quan điểm của tôi.
Các nhà phát triển PostgreSQL thông minh hơn bạn. Ý tôi không phải là trở nên cứng cỏi hay cợt nhả. Theo nghĩa đen, hàng nghìn cộng tác viên đã thực hiện hàng triệu đóng góp cho dự án PostgreSQL, nhiều người trong số họ là những cải tiến cho những đóng góp của những người khác. Cơ hội rằng bất cứ điều gì bạn nghĩ ra trên đầu tốt hơn những gì đã được thực hiện là rất thấp. Và, ngay cả khi suy nghĩ của bạn tốt hơn, bạn nên đóng góp chúng cho dự án PostgreSQL vì lợi ích của tất cả mọi người, do đó nâng cao tiêu chuẩn cho mọi người khác.
Vì vậy, điều gì làm cho PostgreSQL trở nên tuyệt vời sau đó? Chia sẻ tư duy trên toàn thế giới mà không có sự cân nhắc của công ty. Hàng nghìn nhà phát triển đang làm việc hàng trăm nghìn giờ để đưa ra các lựa chọn thuật toán tốt hơn. Vì vậy, phần mềm của bạn trở nên tốt hơn sau mỗi lần phát hành, hầu hết thông thường mà bạn không cần phải làm bất cứ điều gì cụ thể.
Bạn nói đó có phải là bản chất của phần mềm nói chung không? Vâng, vâng. Nhưng không đến mức gần như toàn bộ thế giới tham gia vào dự án của bạn. PostgreSQL có một vị trí rất nổi bật trong cộng đồng mã nguồn mở. Các nhà cung cấp thương mại sẽ không bao giờ có thể theo kịp tốc độ thay đổi mà một dự án nguồn mở có thể cung cấp ở cấp độ này. Việc chuyển đổi sang mã nguồn mở (và đặc biệt là PostgreSQL) là ở đây để chứng minh điều đó.
Các tính năng tiếp tục phát triển. Có rất ít thứ còn lại mà các nhà cung cấp thương mại có thể chỉ ra như một lợi thế khác biệt. Trong số những thứ đó là hỗ trợ SMP, sao chép hai chiều và các công cụ bên ngoài. Đoán xem cộng đồng hiện đang làm gì và rất có thể sẽ phát hành trong vài năm tới?
Mở rộng PostgreSQL theo bất kỳ cách nào bạn thích
PostgreSQL có một cộng đồng sôi nổi gồm các tác giả viết phần mềm phụ trợ. Điều này bao gồm việc cắm bất kỳ ngôn ngữ nào bạn thích và sử dụng nó để mở rộng PostgreSQL theo bất kỳ cách nào có vẻ hữu ích. Bạn có thích xử lý chuỗi perl không? Ok, sau đó sử dụng. Làm thế nào về hỗ trợ bản đồ Python? Chắc chắn, chỉ cần cắm python và đi đến thị trấn. Bạn muốn viết các dịch vụ web bằng cách sử dụng back end PostgreSQL? Điều đó thật tuyệt và PostgreSQL sẽ giúp bạn. JSON? Được. XML? Bạn đặt cược. PostgreSQL có hỗ trợ trực tiếp cho tất cả những điều đó và hơn thế nữa. Nếu bạn có thể nghĩ ra một ngôn ngữ hoạt động tốt, thì hãy cắm nó vào PostgreSQL và bạn có thể có ngôn ngữ đó ở phía máy chủ.
Bạn có thể tạo các hàm, kiểu dữ liệu, toán tử, tổng hợp, hàm cửa sổ của riêng mình hoặc bất cứ thứ gì khác. Không thấy tính năng bạn thích? Đạo văn và tùy chỉnh nó từ mã nguồn. Bạn có thể tự do làm điều đó vì có giấy phép.
PostgreSQL cũng cung cấp một số hàm hook cho phép bạn mở rộng cơ sở dữ liệu mà không cần phải lập trình cực đoan.
Khả năng đồng hóa bất kỳ tính năng nào của bất kỳ ngôn ngữ nào khác là duy nhất đối với PostgreSQL. Bạn có thể cung cấp bất kỳ tính năng nào bằng cách sử dụng bất kỳ thư viện chuẩn hóa nào đang tồn tại. Bạn có thể tuân theo các tiêu chuẩn, cập nhật các thay đổi, vẫn cập nhật PostgreSQL khi nó còn tồn tại và bạn có thể làm tất cả điều đó miễn phí.
Đi lớn và đi rộng
PostgreSQL có một số tính năng để tận dụng tối đa nền tảng phần cứng mà nó được cung cấp. Phân vùng, thực thi song song, chỉ mục một phần, không gian bảng, bộ nhớ cache và các quy trình bảo trì song song không chặn (hầu hết mọi thứ trong PostgreSQL gần đây đều xuất hiện từ khóa CONCURRENTLY).
Khi điều đó là không đủ đối với bạn, thì tính năng sao chép phát trực tuyến vật lý sẽ tạo ra một loạt các chế độ chờ đọc cho bạn với chi phí rẻ. Sharding, memcache, hàng đợi, cân bằng tải và tổng hợp kết nối đều hoạt động với PostgreSQL. Vẫn không đủ? Làm thế nào về nhân rộng luồng hợp lý? Bạn muốn geoshard cơ sở dữ liệu trên toàn thế giới, bạn nói? Chà, chào mừng bạn đến với nhân rộng hai chiều.
Và thẻ giá vẫn ở mức $ 0.
Lập chỉ mục tất cả những thứ đó
PostgreSQL hỗ trợ một danh sách các chỉ mục khổng lồ đến nỗi nó khiến tâm trí của bạn phải suy nghĩ để tìm ra cách sử dụng tất cả chúng. GiST, SP-Gist, KNN Gist, GIN, BRIN và Btree đều có sẵn. Và còn nhiều thứ khác được cung cấp thông qua hệ thống tiện ích mở rộng, như bộ lọc Bloom và các bộ lọc khác.
PostgreSQL có thể sử dụng chúng với các chỉ mục điều khiển chức năng, chỉ mục một phần, chỉ mục bao gồm và tìm kiếm toàn văn. Và các tính năng mở rộng này không loại trừ lẫn nhau. Bạn có thể sử dụng tất cả chúng cùng một lúc.
Cuốn vào, cuốn ra
Một số công nghệ đã được đề cập làm cho PostgreSQL trở thành một nền tảng tích hợp và phân phối dữ liệu tuyệt vời. Nhiều hình thức sao chép, kết hợp với nhiều hình thức liên kết cung cấp cả công nghệ đẩy và kéo cho gần như bất kỳ loại hệ thống dữ liệu nào.
Chúng có thể được kết hợp trong các cấu hình vô hạn để kết nối các giải pháp lưu trữ cơ sở dữ liệu. Tất cả điều đó mà không yêu cầu bất kỳ gói xử lý ETL / ELT nào. PostgreSQL chỉ làm điều đó. Nguồn cơ sở dữ liệu sự thật duy nhất nhanh nhất trên hành tinh thực hiện điều đó bằng cách hoàn toàn không di chuyển dữ liệu ra khỏi hệ thống nguồn. Điều này có nghĩa là dữ liệu luôn cập nhật và có thể quản lý thời gian phản hồi.
Nếu bạn không thể chịu được sự không đáng tin cậy của hệ thống nguồn hoặc muốn có hiệu suất tốt hơn một chút về phía truy vấn, bạn cũng có thể lưu dữ liệu vào bộ nhớ cache định kỳ với các chế độ xem cụ thể hóa, có thể được cập nhật trong khi vẫn được truy vấn.
Giấy phép mở rộng
PostgreSQL có giấy phép riêng phần lớn dựa trên giấy phép BSD. Điều này cho phép quyền tự do sử dụng và phân phối lớn hơn nữa.
Giấy phép áp dụng cho tất cả mã của dự án chính, tiện ích mở rộng đóng góp lớn, thư viện khách hàng, trình quản lý kết nối và hầu hết các công cụ liên quan.
Nó rất dễ hiểu, được viết bằng tiếng Anh đơn giản và không có sẵn để mua.
Tài liệu tuyệt vời
Dự án PostgreSQL yêu cầu bất kỳ nhà phát triển nào gửi mã sẽ cung cấp tài liệu cho đề xuất. Đề xuất này được sử dụng để tạo tài liệu cho tính năng được cung cấp ở một số định dạng. Tài liệu này cũng được sử dụng để đánh giá bản thân tính năng và làm tài liệu tham khảo để phát triển các tính năng trong tương lai.
Tất cả cùng nhau, điều này có nghĩa là PostgreSQL sống trên tài liệu. Có rất nhiều nhà phát triển cho PostgreSQL đã học cách viết mã bằng C, cách hoạt động của cơ sở dữ liệu và cách các dự án được quản lý bằng cách làm việc với dự án PostgreSQL. Tài liệu này không ai sánh kịp.
Phát triển theo hướng thử nghiệm
PostgreSQL được thử nghiệm rộng rãi. Không, điều đó không đủ mạnh mẽ. PostgreSQL được kiểm tra toàn diện. Mọi lỗi đều được đáp ứng với một bài kiểm tra để xác minh sự tồn tại của nó và mã được viết để đáp ứng bài kiểm tra. Các tính năng mới được viết bằng cách tạo các bài kiểm tra (và tài liệu) trước, sau đó được mã hóa cho đến khi tính năng xuất hiện.
Các thử nghiệm này được tích hợp vào trang trại xây dựng để hồi quy, vì vậy lỗi không (lại) xuất hiện trong các phiên bản PostgreSQL trong tương lai. Điều đó có nghĩa là mọi thử nghiệm (vẫn còn hiện tại) được chạy cho mọi phiên bản PostgreSQL cho mọi chu kỳ xây dựng. Đó là quá nhiều thử nghiệm và nó đảm bảo rằng PostgreSQL vẫn là cơ sở dữ liệu ổn định nhất hiện có.
PostgreSQL chỉ được phát hành khi TẤT CẢ các bài kiểm tra hồi quy vượt qua. Điều này cung cấp cho các bản phát hành "0 lỗi đã biết".
Quốc tế hóa và bản địa hóa
Các nhà phát triển của PostgreSQL đến từ khắp nơi trên thế giới. Họ đã làm việc bằng nhiều ngôn ngữ mẹ đẻ kể từ khi PostgreSQL thành lập như một dự án tốt nghiệp đại học. Quốc tế hóa và bản địa hóa đã được đưa vào PostgreSQL như một thông lệ tiêu chuẩn, không phải là một điểm nhấn khi PostgreSQL bắt đầu thu hút thị trường thương mại toàn cầu.
Mặc dù PostgreSQL ủy quyền một số quốc tế hóa cho hệ điều hành vì lý do tương thích, phần lớn bản dịch được nhúng vào hệ thống, mang lại trải nghiệm chuyển đổi ngôn ngữ liền mạch.
Hoạt động trên đám mây
PostgreSQL hoạt động trong kiến trúc đám mây bằng cách sử dụng ansible, kubernetes và các công cụ độc quyền từ nhiều nhà cung cấp đám mây. Có một số triển khai đám mây gốc để lựa chọn để phù hợp với kiến trúc của bạn.
Nếu bạn muốn coi các máy chủ như gia súc chứ không phải vật nuôi, thì PostgreSQL cũng đã bao phủ bạn trên đám mây.
Tuân thủ Tiêu chuẩn
PostgreSQL là tiêu chuẩn được chú trọng trong suốt thời gian tồn tại của dự án. Vì PostgreSQL bắt nguồn từ chương trình sau đại học nên nó đã được sử dụng như một triển khai tham chiếu cho nhiều tiêu chuẩn SQL.
PostgreSQL triển khai SQL / Med và ANSI SQL.
Theo tài liệu tuyệt vời, “PostgreSQL hỗ trợ hầu hết các tính năng chính của SQL:2016. Trong số 179 tính năng bắt buộc cần thiết để tuân thủ đầy đủ Core, PostgreSQL tuân theo ít nhất 160. ” Đây là nhiều hơn hầu hết các công cụ cơ sở dữ liệu khác.
Tính năng ngôn ngữ
PostgreSQL triển khai các biểu thức bảng chung (CTE), cấu trúc điều khiển ngôn ngữ (if, for, case, v.v.), xử lý lỗi có cấu trúc và tất cả các tính năng bạn mong đợi từ một ngôn ngữ thủ tục trưởng thành.
Bạn đã bị thuyết phục chưa?
Tôi vẫn có thể nói về cộng đồng tuyệt vời gồm các nhóm người dùng, các kênh IRC, các trang web với các giải pháp, các bài báo trên blog và người cố vấn. Tôi có thể triết lý về cách cơ sở dữ liệu đa nền tảng, đa kiến trúc và đa văn hóa. Có hàng giờ thuyết trình, video và bài giảng.
Hoặc bạn có thể tải xuống và xem nó có lớn hơn trí tưởng tượng của bạn không. Tôi nghĩ bạn sẽ rất ngạc nhiên.