PostgreSQL 每周新闻 2020-7-1

PostgreSQL每周新闻#362 - 2020年7月1日

_config.yml 备注:英文原文地址 img

Amazon RDS代理现已正式提供

RDS Proxy是RDS的完全托管数据库代理(包括PostgreSQL变体)。无需更改代码,但需要收费(数据库服务器每vCPU每小时0.015美元)。由于可能会出现大量的开放式数据库连接,因此构建 serverless应用程序的人可能会特别感兴趣。

Channy Yun (AWS)

使用GitHub Actions测试扩展

pgxn工具提供了一个Docker映像,其中包含安装和运行任何版本Postgres的脚本,并且可以将其与CI/CD平台(如GitHub Actions)结合起来,在多个Postgres版本上测试Postgres扩展。

David E. Wheeler

白皮书:BDR-针对PostgreSQL的高级集群和扩展

了解有关使用BDR的PostgreSQL的高级集群和扩展的更多信息,包括使用案例、体系结构、特性和优点。BDR为PostgreSQL数据库提供具有AlwaysOn可用性的多主机复制、全球集群和云本地部署。

2ndQuadrant PostgreSQL Products

在SQL中计算行之间的差异

如果有很多行表示不断变化的值(比如说时间序列数据),那么能够计算值随时间的差异可能会很有用,下面是一些方法。

Hans-Jürgen Schönig

在K8S运行PostgreSQL

PDF:Kubernetes中运行Postgres的主要选项以及每个选项中包含的一些特性的幻灯片。

Lukas Fittl

提高Postgres和TimescaleDB插入性能的13个技巧

前五个技巧通常与Postgres相关,其余的则特定于TimescaleDB,一个Postgres的时间序列数据扩展。

Michael Freedman

论Join策略与性能

有必要了解Postgres在连接关系时使用的三种连接策略形式,以及如何通过索引影响它们。

Laurenz Albe

PostgreSQL的关键字大小写可控么

“让我们回顾一下Postgres的一些大小写精度行为,比如字符串、标识符和关键字的处理。”这里是一个关于大小写比较问题的简单入门。

Bruce Momjian

Timescale云:高性能PostgreSQL

现在在三个主要云层的75+个地区都可以使用。分析、性能和规模。

Timescale

Postgres按需匿名化

如果你的数据库存储了个人身份信息——很可能是这样!–匿名化可以帮助保护数据,同时保持数据库的有用性。本文深入研究了一种在全局范围内应用匿名化的方法,它覆盖了所有应用程序,并且代码重写最少。

Achilleas Mantzios

从Oracle到Postgres迁移工具ora2pg

我怀疑如果你可以访问Oracle数据库,你可能不会随便找教程,但如果你是。。如果您需要将数据迁移到Postgres。。ora2pg和本教程可以帮助您。

Yorvi Arias

使用LDAP验证pgpool II

Ahsan Hadi

为JSONB列编制索引的故事

当涉及到大规模使用JSONB时,故事和技巧的完美结合。

Vsevolod Solovyov

💡本周提示

对于公共表表达式(CTE),从遍历树到在排名中使用窗口函数,您可以做很多事情。CTE函数由“WITH”子句实现。一个基本用途是查询子集——类似于子查询。

让我们通过设置一些示例数据来演示这一点:

CREATE TABLE databases (
  name TEXT, model TEXT, type TEXT, pgcompat boolean, opensource boolean);
 
INSERT INTO databases VALUES
  ('YugabyteDB', 'rdbms' , 'distributed sql', TRUE, TRUE), 
  ('CockroachDB', 'rdbms', 'distributed sql', FALSE, FALSE),
  ('MongoDB', 'document', 'nosql', FALSE, FALSE), 
  ('Neo4j', 'graph', 'nosql', TRUE, FALSE),
  ('Cassandra', 'columnar', 'nosql', FALSE, TRUE);

如果要对已获得开源许可的数据库运行查询,请支持SQL并与PostgreSQL兼容:

WITH dbs AS (
    SELECT 
        name, 
        model,
        (CASE 
            WHEN type = 'distributed sql' then TRUE
            ELSE FALSE
        END) sql_support,
    pgcompat,
    opensource    
    FROM
        databases
)
SELECT
    name,
    model
FROM 
    dbs
WHERE
    opensource = TRUE,
    pgcompat = TRUE,
    sql_support = TRUE
ORDER BY 
    name;

我们将sql语句重新解释为一个布尔类型,并将其重新解释为“支持”。在主select语句中,我们针对这个CTE查询,在where子句中,我们只能指定布尔值。

结果是这样的:

name     | model
-------------------
YugabyteDB | rdbms
Written on July 1, 2020