PostgreSQL 发布者与订阅者不同的 datestyle 导致失败
最近在浏览 PostgreSQL 邮件列表时发现一个 bug:逻辑复制时,如果发布者和订阅者的 datestyle
不一致可能导致逻辑复制失败。本文简要记录这个问题的分析与修复方法。
最近在浏览 PostgreSQL 邮件列表时发现一个 bug:逻辑复制时,如果发布者和订阅者的 datestyle
不一致可能导致逻辑复制失败。本文简要记录这个问题的分析与修复方法。
在最近发布的 PostgreSQL 14 中,我们最兴奋的功能之一是引入了 multirange 类型。简而言之,multirange 类型是一组不重叠的范围(range)。与范围数组不同,它们防止重叠,因此允许你有效地建立有间隙的范围模型。
我们对它们的一个用例是建立时间模型。例如,如果您想记录累积的时间和某人在医院的天数,您可以将其存储为一个 datemultirange 类型。
在 PostgreSQL 14 中,有相当多的运算符和函数可用,但我们需要的一些明显的运算符和函数包括聚合,如联合聚合,目前还不存在。然而,还有一些标准的运算符,如 +
(合并两个范围)和 *
表示两个范围相交,-
表示两个范围的差,以及常见的包含布尔运算符。
Oracle 数据库中空字符串和 NULL
在字符串的环境下是相同的,这就意味着我们可以直接将其与字符串进行操作从而得到我们想要的结果,然而在 PostgreSQL 数据库中,任何字符串与 NULL
进行操作结果均为 NULL
。因此,在迁移 NULL
字符串操作时,我们需要特别注意。
Oracle 迁移到 PostgreSQL 中最常见的问题就是 DUAL
表的问题。在 Oracle 数据库中,每个查询都必须跟随一个 FROM
子句,这是强制性的。然而在 PostgreSQL 数据库中,FROM
子句是可选的。本文记录了如何将 Oracle 中的 DUAL
表迁移到 PostgreSQL 数据库中。
数据库通常都提供了一系列预定义的聚合函数(Aggregate Functions),例如 MAX,MIN,SUM 等,它们对一组数据进行操作。这些预定义的聚合函数通常只能处理标量类型,不能处理诸如对象类型等复杂的数据类型,当前大部分数据库都提供了为复杂数据类型自定义聚合函数(User-Defined Aggregate Functions)的功能。本文简要介绍 Oracle 中的自定义聚合函数以及如何迁移到 PostgreSQL 数据库中。
Boyer-Moore 投票算法是流行的最优算法之一,它用于在给定元素中找出出现次数超过 N/2
的元素。它需要对给定元素进行 2 次遍历,其时间复杂度为 O(N)
,空间复杂度为 O(1)
。
强化 PostgreSQL 变得越来越重要。如今,安全是王道,人们想知道如何确保 PostgreSQL 的安全。我们中的一些人可能还记得近年来发生在 MongoDB 身上的事情,我们当然希望在 PostgreSQL 世界中避免类似的安全问题。MongoDB 的遭遇实际上是令人震惊的:数以千计的数据库因为糟糕的默认安全设置而被勒索–这绝对是一场噩梦,不仅大大损害了 MongoDB 的声誉,也损害了整个行业的声誉。PostgreSQL 人员尽其所能避免在我们的生态系统中重复出现这种情况。
当有人在谈论您的公司时,标签 #ransomware
(勒索软件)并不是您想要看到的。为了避免一些最常见的问题,我们编制了一个 “PostgreSQL 最佳安全问题”,它可以作为改进设置的 12 个步骤的指南。
本文简要记录一下如何使用 Go 语言来访问达梦数据库。达梦数据库随安装包提供了 Go 语言的 driver,目前该 driver 仅支持 Windows 和 Linux 操作系统,不支持 MacOS 系统。