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

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

作者:大眼仔~旭 日期:4个月前 (11-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.1
November 10, 2023
However, several mistakes have been discovered that could lead to certain types of indexes yielding wrong search results or being unnecessarily inefficient. It is advisable to REINDEX potentially-affected indexes after installing this update. See the fourth through seventh changelog entries below.
Fix handling of unknown-type arguments in DISTINCT “any” aggregate functions (Tom Lane)
This error led to a text-type value being interpreted as an unknown-type value (that is, a zero-terminated string) at runtime. This could result in disclosure of server memory following the text value.
The PostgreSQL Project thanks Jingzhou Fu for reporting this problem. (CVE-2023-5868)
Detect integer overflow while computing new array dimensions (Tom Lane)
When assigning new elements to array subscripts that are outside the current array bounds, an undetected integer overflow could occur in edge cases. Memory stomps that are potentially exploitable for arbitrary code execution are possible, and so is disclosure of server memory.
The PostgreSQL Project thanks Pedro Gallegos for reporting this problem. (CVE-2023-5869)
Prevent the pg_signal_backend role from signalling background workers and autovacuum processes (Noah Misch, Jelte Fennema-Nio)
The documentation says that pg_signal_backend cannot issue signals to superuser-owned processes. It was able to signal these background processes, though, because they advertise a role OID of zero. Treat that as indicating superuser ownership. The security implications of cancelling one of these process types are fairly small so far as the core code goes (we’ll just start another one), but extensions might add background workers that are more vulnerable.
Also ensure that the is_superuser parameter is set correctly in such processes. No specific security consequences are known for that oversight, but it might be significant for some extensions.
The PostgreSQL Project thanks Hemanth Sandrana and Mahendrakar Srinivasarao for reporting this problem. (CVE-2023-5870)
Fix misbehavior during recursive page split in GiST index build (Heikki Linnakangas)
Fix a case where the location of a page downlink was incorrectly tracked, and introduce some logic to allow recovering from such situations rather than silently doing the wrong thing. This error could result in incorrect answers from subsequent index searches. It may be advisable to reindex all GiST indexes after installing this update.
Prevent de-duplication of btree index entries for interval columns (Noah Misch)
There are interval values that are distinguishable but compare equal, for example 24:00:00 and 1 day. This breaks assumptions made by btree de-duplication, so interval columns need to be excluded from de-duplication. This oversight can cause incorrect results from index-only scans. Moreover, after updating amcheck will report an error for almost all such indexes. Users should reindex any btree indexes on interval columns.
Process date values more sanely in BRIN datetime_minmax_multi_ops indexes (Tomas Vondra)
The distance calculation for dates was backward, causing poor decisions about which entries to merge. The index still produces correct results, but is much less efficient than it should be. Reindexing BRIN minmax_multi indexes on date columns is advisable.
Process large timestamp and timestamptz values more sanely in BRIN datetime_minmax_multi_ops indexes (Tomas Vondra)
Infinities were mistakenly treated as having distance zero rather than a large distance from other values, causing poor decisions about which entries to merge. Also, finite-but-very-large values (near the endpoints of the representable timestamp range) could result in internal overflows, again causing poor decisions. The index still produces correct results, but is much less efficient than it should be. Reindexing BRIN minmax_multi indexes on timestamp and timestamptz columns is advisable if the column contains, or has contained, infinities or large finite values.
Avoid calculation overflows in BRIN interval_minmax_multi_ops indexes with extreme interval values (Tomas Vondra)
This bug might have caused unexpected failures while trying to insert large interval values into such an index.
Fix partition step generation and runtime partition pruning for hash-partitioned tables with multiple partition keys (David Rowley)
Some cases involving an IS NULL condition on one of the partition keys could result in a crash.
Fix inconsistent rechecking of concurrently-updated rows during MERGE (Dean Rasheed)
In READ COMMITTED mode, an update that finds that its target row was just updated by a concurrent transaction will recheck the query’s WHERE conditions on the updated row. MERGE failed to ensure that the proper rows of other joined tables were used during this recheck, possibly resulting in incorrect decisions about whether the newly-updated row should be updated again by MERGE.
Correctly identify the target table in an inherited UPDATE/DELETE/MERGE even when the parent table is excluded by constraints (Amit Langote, Tom Lane)
If the initially-named table is excluded by constraints, but not all its inheritance descendants are, the first non-excluded descendant was identified as the primary target table. This would lead to firing statement-level triggers associated with that table, rather than the initially-named table as should happen. In v16, the same oversight could also lead to “invalid perminfoindex 0 in RTE with relid NNNN” errors.
Fix edge case in btree mark/restore processing of ScalarArrayOpExpr clauses (Peter Geoghegan)
When restoring an indexscan to a previously marked position, the code could miss required setup steps if the scan had advanced exactly to the end of the matches for a ScalarArrayOpExpr (that is, an indexcol = ANY(ARRAY[])) clause. This could result in missing some rows that should have been fetched.
Fix intra-query memory leak in Memoize execution (Orlov Aleksej, David Rowley)
Fix intra-query memory leak when a set-returning function repeatedly returns zero rows (Tom Lane)
Don’t crash if cursor_to_xmlschema() is applied to a non-data-returning Portal (Boyu Yang)
Fix improper sharing of origin filter condition across successive pg_logical_slot_get_changes() calls (Hou Zhijie)
The origin condition set by one call of this function would be re-used by later calls that did not specify the origin argument. This was not intended.
Throw the intended error if pgrowlocks() is applied to a partitioned table (David Rowley)
Previously, a not-on-point complaint “only heap AM is supported” would be raised.
Handle invalid indexes more cleanly in assorted SQL functions (Noah Misch)
Report an error if pgstatindex(), pgstatginindex(), pgstathashindex(), or pgstattuple() is applied to an invalid index. If brin_desummarize_range(), brin_summarize_new_values(), brin_summarize_range(), or gin_clean_pending_list() is applied to an invalid index, do nothing except to report a debug-level message. Formerly these functions attempted to process the index, and might fail in strange ways depending on what the failed CREATE INDEX had left behind.
Avoid premature memory allocation failure with long inputs to to_tsvector() (Tom Lane)
Fix over-allocation of the constructed tsvector in tsvectorrecv() (Denis Erokhin)
If the incoming vector includes position data, the binary receive function left wasted space (roughly equal to the size of the position data) in the finished tsvector. In extreme cases this could lead to “maximum total lexeme length exceeded” failures for vectors that were under the length limit when emitted. In any case it could lead to wasted space on-disk.
Improve checks for corrupt PGLZ compressed data (Flavien Guedez)
Fix ALTER SUBSCRIPTION so that a commanded change in the run_as_owner option is actually applied (Hou Zhijie)
Fix bulk table insertion into partitioned tables (Andres Freund)
Improper sharing of insertion state across partitions could result in failures during COPY FROM, typically manifesting as “could not read block NNNN in file XXXX: read only 0 of 8192 bytes” errors.
In COPY FROM, avoid evaluating column default values that will not be needed by the command (Laurenz Albe)
This avoids a possible error if the default value isn’t actually valid for the column, or if the default’s expression would fail in the current execution context. Such edge cases sometimes arise while restoring dumps, for example. Previous releases did not fail in this situation, so prevent v16 from doing so.
In COPY FROM, fail cleanly when an unsupported encoding conversion is needed (Tom Lane)
Recent refactoring accidentally removed the intended error check for this, such that it ended in “cache lookup failed for function 0” instead of a useful error message.
Avoid crash in EXPLAIN if a parameter marked to be displayed by EXPLAIN has a NULL boot-time value (Xing Guo, Aleksander Alekseev, Tom Lane)
No built-in parameter fits this description, but an extension could define such a parameter.
Ensure we have a snapshot while dropping ON COMMIT DROP temp tables (Tom Lane)
This prevents possible misbehavior if any catalog entries for the temp tables have fields wide enough to require toasting (such as a very complex CHECK condition).
Avoid improper response to shutdown signals in child processes just forked by system() (Nathan Bossart)
This fix avoids a race condition in which a child process that has been forked off by system(), but hasn’t yet exec’d the intended child program, might receive and act on a signal intended for the parent server process. That would lead to duplicate cleanup actions being performed, which will not end well.
Cope with torn reads of pg_control in frontend programs (Thomas Munro)
On some file systems, reading pg_control may not be an atomic action when the server concurrently writes that file. This is detectable via a bad CRC. Retry a few times to see if the file becomes valid before we report error.
Avoid torn reads of pg_control in relevant SQL functions (Thomas Munro)
Acquire the appropriate lock before reading pg_control, to ensure we get a consistent view of that file.
Fix “could not find pathkey item to sort” errors occurring while planning aggregate functions with ORDER BY or DISTINCT options (David Rowley)
Avoid integer overflow when computing size of backend activity string array (Jakub Wartak)
On 64-bit machines we will allow values of track_activity_query_size large enough to cause 32-bit overflow when multiplied by the allowed number of connections. The code actually allocating the per-backend local array was careless about this though, and allocated the array incorrectly.
Fix briefly showing inconsistent progress statistics for ANALYZE on inherited tables (Heikki Linnakangas)
The block-level counters should be reset to zero at the same time we update the current-relation field.
Fix the background writer to report any WAL writes it makes to the statistics counters (Nazir Bilal Yavuz)
Fix confusion about forced-flush behavior in pgstat_report_wal() (Ryoga Yoshida, Michael Paquier)
This could result in some statistics about WAL I/O being forgotten in a shutdown.
Fix statistics tracking of temporary-table extensions (Karina Litskevich, Andres Freund)
These were counted as normal-table writes when they should be counted as temp-table writes.
When track_io_timing is enabled, include the time taken by relation extension operations as write time (Nazir Bilal Yavuz)
Track the dependencies of cached CALL statements, and re-plan them when needed (Tom Lane)
DDL commands, such as replacement of a function that has been inlined into a CALL argument, can create the need to re-plan a CALL that has been cached by PL/pgSQL. That was not happening, leading to misbehavior or strange errors such as “cache lookup failed”.
Avoid a possible pfree-a-NULL-pointer crash after an error in OpenSSL connection setup (Sergey Shinderuk)
Track nesting depth correctly when inspecting RECORD-type Vars from outer query levels (Richard Guo)
This oversight could lead to assertion failures, core dumps, or “bogus varno” errors.
Track hash function and negator function dependencies of ScalarArrayOpExpr plan nodes (David Rowley)
In most cases this oversight was harmless, since these functions would be unlikely to disappear while the node’s original operator remains present.
Fix error-handling bug in RECORD type cache management (Thomas Munro)
An out-of-memory error occurring at just the wrong point could leave behind inconsistent state that would lead to an infinite loop.
Treat out-of-memory failures as fatal while reading WAL (Michael Paquier)
Previously this would be treated as a bogus-data condition, leading to the conclusion that we’d reached the end of WAL, which is incorrect and could lead to inconsistent WAL replay.
Fix possible recovery failure due to trying to allocate memory based on a bogus WAL record length field (Thomas Munro, Michael Paquier)
Fix “could not duplicate handle” error occurring on Windows when min_dynamic_shared_memory is set above zero (Thomas Munro)
Fix order of operations in GenericXLogFinish (Jeff Davis)
This code violated the conditions required for crash safety by writing WAL before marking changed buffers dirty. No core code uses this function, but extensions do (contrib/bloom does, for example).
Remove incorrect assertion in PL/Python exception handling (Alexander Lakhin)
Fix pg_dump to dump the new run_as_owner option of subscriptions (Philip Warner)
Due to this oversight, subscriptions would always be restored with run_as_owner set to false, which is not equivalent to their behavior in pre-v16 releases.
Fix pg_restore so that selective restores will include both table-level and column-level ACLs for selected tables (Euler Taveira, Tom Lane)
Formerly, only the table-level ACL would get restored if both types were present.
Add logic to pg_upgrade to check for use of abstime, reltime, and tinterval data types (Álvaro Herrera)
These obsolete data types were removed in PostgreSQL version 12, so check to make sure they aren’t present in an older database before claiming it can be upgraded.
Avoid false “too many client connections” errors in pgbench on Windows (Noah Misch)
Fix vacuumdb’s handling of multiple -N switches (Nathan Bossart, Kuwamura Masaki)
Multiple -N switches should exclude tables in multiple schemas, but in fact excluded nothing due to faulty construction of a generated query.
Fix vacuumdb to honor its –buffer-usage-limit option in analyze-only mode (Ryoga Yoshida, David Rowley)
In contrib/amcheck, do not report interrupted page deletion as corruption (Noah Misch)
This fix prevents false-positive reports of “the first child of leftmost target page is not leftmost of its level”, “block NNNN is not leftmost” or “left link/right link pair in index XXXX not in agreement”. They appeared if amcheck ran after an unfinished btree index page deletion and before VACUUM had cleaned things up.
Fix failure of contrib/btree_gin indexes on interval columns, when an indexscan using the < or <= operator is performed (Dean Rasheed)
Such an indexscan failed to return all the entries it should.
Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov)
Suppress assorted build-time warnings on recent macOS (Tom Lane)
Xcode 15 (released with macOS Sonoma) changed the linker’s behavior in a way that causes many duplicate-library warnings while building PostgreSQL. These were harmless, but they’re annoying so avoid citing the same libraries twice. Also remove use of the -multiply_defined suppress linker switch, which apparently has been a no-op for a long time, and is now actively complained of.
When building contrib/unaccent’s rules file, fall back to using python if –with-python was not given and make variable PYTHON was not set (Japin Li)
Remove PHOT (Phoenix Islands Time) from the default timezone abbreviations list (Tom Lane)
Presence of this abbreviation in the default list can cause failures on recent Debian and Ubuntu releases, as they no longer install the underlying tzdb entry by default. Since this is a made-up abbreviation for a zone with a total human population of about two dozen, it seems unlikely that anyone will miss it. If someone does, they can put it back via a custom abbreviations file.

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

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

发表评论

返回顶部