CrateDB 是一个分布式的 SQL 数据库,使得实时存储和分析大量的机器数据变得简单。CrateDB 提供了通常与 NoSQL 数据库相关的可扩展性和灵活性,最小的 CrateDB 集群可以轻松地每秒摄取数万条记录。这些数据可以在整个集群中实时地、临时地、并行地进行查询。
CrateDB 5.6.0 现已正式发布,该版本更新内容如下:
Breaking Changes
- 在还原快照时,用于还原用户管理元数据的 USERS 和 PRIVILEGES 关键字已被 USERMANAGEMENT 所取代,后者要求还原数据库的所有用户和角色及其权限。不再可能单独恢复 USERS 或 PRIVILEGES。
弃用
USERS和PRIVILEGES关键字已被弃用,它们在还原快照时分别用于还原用户和权限元数据。目前已被USERMANAGEMENT所替换,并且其行为也已修改,可参阅 Breaking Changes 以了解详细信息。
Changes
SQL Statements
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
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优化了图片。
详情可查看更新说明。