当前位置: 首页 > 微软应用 > 办公软件 > 正文
开源数据库工具 PostgreSQL 16.3 中文多语免费版

开源数据库工具 PostgreSQL 16.3 中文多语免费版

作者:大眼仔~旭 日期:4周前 (05-09) 评论:0 条

摘要:PostgreSQL 是世界上最先进的开源数据库,也是第四大最受欢迎的数据库。在20多年的开发中,PostgreSQL 由一个组织良好,高度原则性和经验丰富的开源社区管理。它是一个面向对象的数据库,完全符合 ACID 标准且具有高度可扩展性,使社区能够随着工作负载需求的发展添加新的特性和功能。 由于其可扩展性,Post…

PostgreSQL 是世界上最先进的开源数据库,也是第四大最受欢迎的数据库。在20多年的开发中,PostgreSQL 由一个组织良好,高度原则性和经验丰富的开源社区管理。它是一个面向对象的数据库,完全符合 ACID 标准且具有高度可扩展性,使社区能够随着工作负载需求的发展添加新的特性和功能。

由于其可扩展性,PostgreSQL 提供了多种内置的 PostgreSQL 数据类型,包括 JSON,XML,HSTORE(键值),Geo-spatial(PostGIS),IPv6,灵活的索引,具有复合索引,GiST,SP-GiST,GIN;全文搜索,在线索引重组;后台工作线程,例如称为 Mongress 的托管进程,它接受 MongoDB 查询以与 Postgres 数据接口;一个 contrib 模块接口:pgcrypto(数据加密),pg_trgm(查找“类似”数据),HSTORE(无模式数据);和广泛的 SQL 支持。

PostgreSQL 可以在所有主要的操作系统上运行,包括 Linux,UNIX(AIX,BSD,HP-UX,macOS,Solaris)和 Windows。它提供以下编程语言:PL / pgSQL,PL / SQL,Java,Python,Ruby,C / C +,PHP,Perl,Tcl,Scheme。Postgres 还提供以下库接口:OCI、libpq、JDBC、ODBC、.NET、Perl、Python、Ruby、C/C+、PHP、Lisp、Scheme 和 Qt。

PostgreSQL 数据库提供企业级数据库解决方案,并被许多行业的各种企业使用,包括金融服务,信息技术,政府以及媒体和通信。

PostgreSQL 中文版

PostgreSQL 中文多语免费版

什么是 PostgreSQL?

PostgreSQL 是一个功能强大的开源对象关系数据库系统,它使用并扩展了 SQL 语言,并结合了许多可安全存储和扩展最复杂数据工作负载的特性。 PostgreSQL 的起源可以追溯到 1986 年,作为加州大学伯克利分校 POSTGRES 项目的一部分,并在核心平台上进行了 30 多年的积极开发。

PostgreSQL 因其久经考验的架构、可靠性、数据完整性、强大的功能集、可扩展性以及软件背后的开源社区致力于始终如一地提供高性能和创新解决方案而赢得了良好的声誉。 PostgreSQL 可在所有主要操作系统上运行,自 2001 年以来一直符合 ACID,并具有强大的附加组件,例如流行的 PostGIS 地理空间数据库扩展器。毫不奇怪,PostgreSQL 已成为许多人和组织选择的开源关系数据库。

开始使用 PostgreSQL 从未如此简单 – 选择一个您想要构建的项目,让 PostgreSQL 安全可靠地存储您的数据。

为什么使用 PostgreSQL?

PostgreSQL 具有许多功能,旨在帮助开发人员构建应用程序,帮助管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集有多大或多小。除了免费和开源之外,PostgreSQL 还具有高度可扩展性。例如,您可以定义自己的数据类型、构建自定义函数,甚至使用不同的编程语言编写代码,而无需重新编译数据库!

PostgreSQL 试图符合 SQL 标准,这样的一致性不会与传统特性相矛盾或可能导致糟糕的架构决策。支持 SQL 标准所需的许多功能,但有时语法或功能略有不同。随着时间的推移,可以预期进一步朝着一致性迈进。从 2021 年 9 月发布的第 14 版开始,PostgreSQL 至少符合 SQL:2016 Core 一致性的 179 个强制性特性中的 170 个。在撰写本文时,没有任何关系数据库完全符合该标准。

以下是 PostgreSQL 中各种功能的详尽列表,每个主要版本中都会添加更多功能:

  • 数据类型

基元:整数、数字、字符串、布尔值
结构化:日期/时间、数组、范围/多范围、UUID
文档:JSON/JSONB、XML、键值(Hstore)
几何:点、线、圆、多边形
自定义:复合,自定义类型

  • 数据完整性

唯一,不为空
主密钥
外密钥
排除约束
显式锁,建议锁

  • 并发性,性能

索引:B-tree、多列、表达式、部分
高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
复杂的查询计划器/优化器、仅索引扫描、多列统计信息
事务、嵌套事务(通过保存点)
多版本并发控制 (MVCC)
读取查询的并行化和构建 B-tree 索引
表分区
SQL 标准中定义的所有事务隔离级别,包括 Serializable
表达式的即时 (JIT) 编译

  • 可靠性,灾难恢复

预写式日志记录 (WAL)
复制:异步、同步、逻辑
时间点恢复 (PITR),活动备用
表空间

  • 安全

身份验证:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等
强大的门禁系统
列和行级别的安全性
使用证书和其他方法的多因素身份验证

  • 可扩展性

存储函数和过程
过程语言:PL/PGSQL、Perl、Python(等等)
SQL/JSON 路径表达式
外部数据包装器:使用标准 SQL 接口连接到其他数据库或流
可定制的表格存储界面
许多提供附加功能的扩展,包括 PostGIS

  • 国际化,文本搜索

支持国际字符集,例如 通过 ICU 整理
不区分大小写和不区分重音的排序规则
全文搜索

您可以在 PostgreSQL 文档中发现更多功能。 此外,PostgreSQL 具有高度可扩展性:许多功能(例如索引)都定义了 API,以便您可以使用 PostgreSQL 进行构建以解决您的挑战。

PostgreSQL 已被证明具有高度可扩展性,无论是在它可以管理的庞大数据量还是在它可以容纳的并发用户数量上。 生产环境中有活跃的 PostgreSQL 集群来管理数 TB 的数据,以及专门的系统来管理数 PB 的数据。

此外,该应用程序还具有直观的功能,即 Vacuum、Analyze 和 Reindex,可帮助您在几秒钟内维护数据库对象。第一个函数扫描数据库或表中不再使用的行。如果一行被更新或删除,之前的内容不会被替换,而是被标记为无效。第二个功能名为分析,调查每个选定的数据库或表包含的所有可用值。重新索引功能可帮助您快速重建索引,以防它们被不寻常的插入数据模式修改。

总的来说,PostgreSQL 被证明是一个稳定的解决方案,可以帮助 DBA 快速管理多个数据库,并且由于它支持包括 Perl、Java、Ruby、C/C++ 和 Python 在内的各种编程语言,它能够运行不同的存储过程和 SQL脚本。

PostgreSQL 许可证

PostgreSQL 是在 PostgreSQL 许可证下发布的,这是一个自由的开源许可证,类似于 BSD 或 MIT 许可证。

官方主页

What’s new in PostgreSQL 16.3
May 10, 2024
Changes:
Restrict visibility of pg_stats_ext and pg_stats_ext_exprs entries to the table owner (Nathan Bossart)
These views failed to hide statistics for expressions that involve columns the accessing user does not have permission to read. View columns such as most_common_vals might expose security-relevant data. The potential interactions here are not fully clear, so in the interest of erring on the side of safety, make rows in these views visible only to the owner of the associated table.
The PostgreSQL Project thanks Lukas Fittl for reporting this problem. (CVE-2024-4317)
By itself, this fix will only fix the behavior in newly initdb’d database clusters. If you wish to apply this change in an existing cluster, you will need to do the following:
Find the SQL script fix-CVE-2024-4317.sql in the share directory of the PostgreSQL installation (typically located someplace like /usr/share/postgresql/). Be sure to use the script appropriate to your PostgreSQL major version. If you do not see this file, either your version is not vulnerable (only v14–v16 are affected) or your minor version is too old to have the fix.
In each database of the cluster, run the fix-CVE-2024-4317.sql script as superuser. In psql this would look like
i /usr/share/postgresql/fix-CVE-2024-4317.sql
(adjust the file path as appropriate). Any error probably indicates that you’ve used the wrong script version. It will not hurt to run the script more than once.
Do not forget to include the template0 and template1 databases, or the vulnerability will still exist in databases you create later. To fix template0, you’ll need to temporarily make it accept connections. Do that with
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
and then after fixing template0, undo it with
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
Fix INSERT from multiple VALUES rows into a target column that is a domain over an array or composite type (Tom Lane)
Such cases would either fail with surprising complaints about mismatched datatypes, or insert unexpected coercions that could lead to odd results.
Require SELECT privilege on the target table for MERGE with a DO NOTHING clause (Álvaro Herrera)
SELECT privilege would be required in all practical cases anyway, but require it even if the query reads no columns of the target table. This avoids an edge case in which MERGE would require no privileges whatever, which seems undesirable even when it’s a do-nothing command.
Fix handling of self-modified tuples in MERGE (Dean Rasheed)
Throw an error if a target row joins to more than one source row, as required by the SQL standard. (The previous coding could silently ignore this condition if a concurrent update was involved.) Also, throw a non-misleading error if a target row is already updated by a later command in the current transaction, thanks to a BEFORE trigger or a volatile function used in the query.
Fix incorrect pruning of NULL partition when a table is partitioned on a boolean column and the query has a boolean IS NOT clause (David Rowley)
A NULL value satisfies a clause such as boolcol IS NOT FALSE, so pruning away a partition containing NULLs yielded incorrect answers.
Make ALTER FOREIGN TABLE SET SCHEMA move any owned sequences into the new schema (Tom Lane)
Moving a regular table to a new schema causes any sequences owned by the table to be moved to that schema too (along with indexes and constraints). This was overlooked for foreign tables, however.
Make ALTER TABLE … ADD COLUMN create identity/serial sequences with the same persistence as their owning tables (Peter Eisentraut)
CREATE UNLOGGED TABLE will make any owned sequences be unlogged too. ALTER TABLE missed that consideration, so that an added identity column would have a logged sequence, which seems pointless.
Improve ALTER TABLE … ALTER COLUMN TYPE’s error message when there is a dependent function or publication (Tom Lane)
In CREATE DATABASE, recognize strategy keywords case-insensitively for consistency with other options (Tomas Vondra)
Fix EXPLAIN’s counting of heap pages accessed by a bitmap heap scan (Melanie Plageman)
Previously, heap pages that contain no visible tuples were not counted; but it seems more consistent to count all pages returned by the bitmap index scan.
Fix EXPLAIN’s output for subplans in MERGE (Dean Rasheed)
EXPLAIN would sometimes fail to properly display subplan Params referencing variables in other parts of the plan tree.
Avoid deadlock during removal of orphaned temporary tables (Mikhail Zhilin)
If the session that creates a temporary table crashes without removing the table, autovacuum will eventually try to remove the orphaned table. However, an incoming session that’s been assigned the same temporary namespace will do that too. If a temporary table has a dependency (such as an owned sequence) then a deadlock could result between these two cleanup attempts.
Fix updating of visibility map state in VACUUM with the DISABLE_PAGE_SKIPPING option (Heikki Linnakangas)
Due to an oversight, this mode caused all heap pages to be dirtied, resulting in excess I/O. Also, visibility map bits that were incorrectly set would not get cleared.
Avoid race condition while examining per-relation frozen-XID values (Noah Misch)
VACUUM’s computation of per-database frozen-XID values from per-relation values could get confused by a concurrent update of those values by another VACUUM.
Fix buffer usage reporting for parallel vacuuming (Anthonin Bonnefoy)
Buffer accesses performed by parallel workers were not getting counted in the statistics reported in VERBOSE mode.
Ensure that join conditions generated from equivalence classes are applied at the correct plan level (Tom Lane)
In versions before PostgreSQL 16, it was possible for generated conditions to be evaluated below outer joins when they should be evaluated above (after) the outer join, leading to incorrect query results. All versions have a similar hazard when considering joins to UNION ALL trees that have constant outputs for the join column in some SELECT arms.
Fix “could not find pathkey item to sort” errors occurring while planning aggregate functions with ORDER BY or DISTINCT options (David Rowley)
This is similar to a fix applied in 16.1, but it solves the problem for parallel plans.
Prevent potentially-incorrect optimization of some window functions (David Rowley)
Disable “run condition” optimization of ntile() and count() with non-constant arguments. This avoids possible misbehavior with sub-selects, typically leading to errors like “WindowFunc not found in subplan target lists”.
Avoid unnecessary use of moving-aggregate mode with a non-moving window frame (Vallimaharajan G)
When a plain aggregate is used as a window function, and the window frame start is specified as UNBOUNDED PRECEDING, the frame’s head cannot move so we do not need to use the special (and more expensive) moving-aggregate mode. This optimization was intended all along, but due to a coding error it never triggered.
Avoid use of already-freed data while planning partition-wise joins under GEQO (Tom Lane)
This would typically end in a crash or unexpected error message.
Avoid freeing still-in-use data in Memoize (Tender Wang, Andrei Lepikhov)
In production builds this error frequently didn’t cause any problems, as the freed data would most likely not get overwritten before it was used.
Fix incorrectly-reported statistics kind codes in “requested statistics kind X is not yet built” error messages (David Rowley)
Use a hash table instead of linear search for “catcache list” objects (Tom Lane)
This change solves performance problems that were reported for certain operations in installations with many thousands of roles.
Be more careful with RECORD-returning functions in FROM (Tom Lane)
The output columns of such a function call must be defined by an AS clause that specifies the column names and data types. If the actual function output value doesn’t match that, an error is supposed to be thrown at runtime. However, some code paths would examine the actual value prematurely, and potentially issue strange errors or suffer assertion failures if it doesn’t match expectations.
Fix confusion about the return rowtype of SQL-language procedures (Tom Lane)
A procedure implemented in SQL language that returns a single composite-type column would cause an assertion failure or core dump.
Add protective stack depth checks to some recursive functions (Egor Chindyaskin)
Fix mis-rounding and overflow hazards in date_bin() (Moaaz Assali)
In the case where the source timestamp is before the origin timestamp and their difference is already an exact multiple of the stride, the code incorrectly subtracted the stride anyway. Also, detect some integer-overflow cases that would have produced incorrect results.
Detect integer overflow when adding or subtracting an interval to/from a timestamp (Joseph Koshakow)
Some cases that should cause an out-of-range error produced an incorrect result instead.
Avoid race condition in pg_get_expr() (Tom Lane)
If the relation referenced by the argument is dropped concurrently, the function’s intention is to return NULL, but sometimes it failed instead.
Fix detection of old transaction IDs in XID status functions (Karina Litskevich)
Transaction IDs more than 231 transactions in the past could be misidentified as recent, leading to misbehavior of pg_xact_status() or txid_status().
Ensure that a table’s freespace map won’t return a page that’s past the end of the table (Ronan Dunklau)
Because the freespace map isn’t WAL-logged, this was possible in edge cases involving an OS crash, a replica promote, or a PITR restore. The result would be a “could not read block” error.
Fix file descriptor leakage when an error is thrown while waiting in WaitEventSetWait (Etsuro Fujita)
Avoid corrupting exception stack if an FDW implements async append but doesn’t configure any wait conditions for the Append plan node to wait for (Alexander Pyhalov)
Throw an error if an index is accessed while it is being reindexed (Tom Lane)
Previously this was just an assertion check, but promote it into a regular runtime error. This will provide a more on-point error message when reindexing a user-defined index expression that attempts to access its own table.
Ensure that index-only scans on name columns return a fully-padded value (David Rowley)
The value physically stored in the index is truncated, and previously a pointer to that value was returned to callers. This provoked complaints when testing under valgrind. In theory it could result in crashes, though none have been reported.
Fix race condition that could lead to reporting an incorrect conflict cause when invalidating a replication slot (Bertrand Drouvot)
Fix race condition in deciding whether a table sync operation is needed in logical replication (Vignesh C)
An invalidation event arriving while a subscriber identifies which tables need to be synced would be forgotten about, so that any tables newly in need of syncing might not get processed in a timely fashion.
Fix crash with DSM allocations larger than 4GB (Heikki Linnakangas)
Disconnect if a new server session’s client socket cannot be put into non-blocking mode (Heikki Linnakangas)
It was once theoretically possible for us to operate with a socket that’s in blocking mode; but that hasn’t worked fully in a long time, so fail at connection start rather than misbehave later.
Fix inadequate error reporting with OpenSSL 3.0.0 and later (Heikki Linnakangas, Tom Lane)
System-reported errors passed through by OpenSSL were reported with a numeric error code rather than anything readable.
Fix thread-safety of error reporting for getaddrinfo() on Windows (Thomas Munro)
A multi-threaded libpq client program could get an incorrect or corrupted error message after a network lookup failure.
Avoid concurrent calls to bindtextdomain() in libpq and ecpglib (Tom Lane)
Although GNU gettext’s implementation seems to be fine with concurrent calls, the version available on Windows is not.
Fix crash in ecpg’s preprocessor if the program tries to redefine a macro that was defined on the preprocessor command line (Tom Lane)
In ecpg, avoid issuing false “unsupported feature will be passed to server” warnings (Tom Lane)
Ensure that the string result of ecpg’s intoasc() function is correctly zero-terminated (Oleg Tselebrovskiy)
In initdb’s -c option, match parameter names case-insensitively (Tom Lane)
The server treats parameter names case-insensitively, so this code should too. This avoids putting redundant entries into the generated postgresql.conf file.
In psql, avoid leaking a query result after the query is cancelled (Tom Lane)
This happened only when cancelling a non-last query in a query string made with ; separators.
Fix pg_dumpall so that role comments, if present, will be dumped regardless of the setting of –no-role-passwords (Daniel Gustafsson, Álvaro Herrera)
Skip files named .DS_Store in pg_basebackup, pg_checksums, and pg_rewind (Daniel Gustafsson)
This avoids problems on macOS, where the Finder may create such files.
Fix PL/pgSQL’s parsing of single-line comments (—style comments) following expressions (Erik Wienhold, Tom Lane)
This mistake caused parse errors if such a comment followed a WHEN expression in a PL/pgSQL CASE statement.
In contrib/amcheck, don’t report false match failures due to short- versus long-header values (Andrey Borodin, Michael Zhilin)
A variable-length datum in a heap tuple or index tuple could have either a short or a long header, depending on compression parameters that applied when it was made. Treat these cases as equivalent rather than complaining if there’s a difference.
Fix bugs in BRIN output functions (Tomas Vondra)
These output functions are only used for displaying index entries in contrib/pageinspect, so the errors are of limited practical concern.
In contrib/postgres_fdw, avoid emitting requests to sort by a constant (David Rowley)
This could occur in cases involving UNION ALL with constant-emitting subqueries. Sorting by a constant is useless of course, but it also risks being misinterpreted by the remote server, leading to “ORDER BY position N is not in select list” errors.
Make contrib/postgres_fdw set the remote session’s time zone to GMT not UTC (Tom Lane)
This should have the same results for practical purposes. However, GMT is recognized by hard-wired code in the server, while UTC is looked up in the timezone database. So the old code could fail in the unlikely event that the remote server’s timezone database is missing entries.
In contrib/xml2, avoid use of library functions that have been deprecated in recent versions of libxml2 (Dmitry Koval)
Fix incompatibility with LLVM 18 (Thomas Munro, Dmitry Dolgov)
Allow make check to work with the musl C library (Thomas Munro, Bruce Momjian, Tom Lane)

官方下载:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《开源数据库工具 PostgreSQL 16.3 中文多语免费版
文章固定链接:http://www.dayanzai.me/postgresql.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部