CrateDB 是一个分布式的 SQL 数据库,使得实时存储和分析大量的机器数据变得简单。CrateDB 提供了通常与 NoSQL 数据库相关的可扩展性和灵活性,最小的 CrateDB 集群可以轻松地每秒摄取数万条记录。这些数据可以在整个集群中实时地、临时地、并行地进行查询。
CrateDB 5.6.0 现已正式发布,该版本更新内容如下:
Breaking Changes
- 在还原快照时,用于还原用户管理元数据的 USERS 和 PRIVILEGES 关键字已被 USERMANAGEMENT 所取代,后者要求还原数据库的所有用户和角色及其权限。不再可能单独恢复 USERS 或 PRIVILEGES。
弃用
USERS
和PRIVILEGES
关键字已被弃用,它们在还原快照时分别用于还原用户和权限元数据。目前已被USERMANAGEMENT
所替换,并且其行为也已修改,可参阅 Breaking Changes 以了解详细信息。
Changes
SQL Statements
-
添加了对
CREATE TABLE
语句中显式 NULL 列约束定义的支持。 -
添加了对命名 PRIMARY KEY 约束声明的支持。
-
扩展了 EXPLAIN 语句以支持
VERBOSE
选项。 -
添加了对 ALTER TABLE RENAME COLUMN 语句的支持 。
-
添加了对 CREATE ROLE 语句的支持。有关详细信息,参阅管理与操作。
-
添加了对 ALTER ROLE 语句的支持,该语句与 ALTER USER 语句相同。
-
添加了对 DROP ROLE 语句的支持,该语句与 DROP USER 语句相同。
SQL Standard 和 PostgreSQL Compatibility
-
通过 PostgreSQL wire protocol 和 pg_catalog.pg_type 表添加了用于序列化的未知类型。这将解决与 npgsql >= 8.0 的兼容性问题。
-
添加了一个空
pg_catalog.pg_depend
表。 -
将表更改
pg_catalog.pg_roles
为正确填充,因为以前它总是返回0
行。 -
为 LIKE 和 ILIKE 运算符添加了可选的
ESCAPE
参数。
Data Types
- 为 geo_shape 引入了基于 BKD 树的索引策略。
Scalar and Aggregation Functions
-
更新了
tdigest
库,导致percentile
聚合函数在某些情况下表现不同。例如,以下查询过去会返回4.5
,但现在将返回5.0
:SELECT percentile(x, 0.5) FROM generate_series(0, 9, 1) AS t (x) ;
Performance and Resilience Improvements
-
减少了
ANALYZE
操作所需的磁盘读取量。 -
当嵌套连接时,改进了左/右外连接的过滤器下推,例如:
SELECT * FROM (SELECT * FROM a LEFT JOIN b ON a.a = b.b LEFT JOIN c ON b.b = c.c) t WHERE b > 1;
现在,上面的查询将产生以下逻辑计划
NestedLoopJoin[LEFT | (b = c)] (rows=unknown) ├ HashJoin[(a = b)] (rows=unknown) │├ Collect[doc.a | [a] | true] (rows=unknown) │└ Collect[doc.b | [b] | (b > 1)] (rows=unknown) └ Collect[doc.c | [c] | true] (rows=unknown)
Administration and Operations
-
新增数据库角色,可用于权限分组,可授予用户或其他角色,从而实现权限继承。
-
允许未索引的列或没有文档值的列可查询。
-
向 RESTORE SNAPSHOT 添加了新选项
schema_rename_pattern
、schema_rename_replacement
、table_rename_pattern
和table_rename_replacement
以允许在还原期间重命名表。 -
添加了 sys.roles 表,其中包含集群中定义的所有数据库角色。
-
向sys.users表添加了
granted_roles
列,其中列出了授予用户的角色以及授予每个角色的用户。
用户界面
- 更新至 Admin UI 1.24.7,修复了西班牙语版本帮助页面上的一个小语法问题,并使用
oxipng
优化了图片。
详情可查看更新说明。