DuckDB 0.10.0 DBMS 的发布,结合了 SQLite 的紧凑性、以嵌入式库的形式连接的能力、将数据库存储在一个文件中以及方便的 CLI 界面等属性,以及用于执行的工具和优化分析查询涵盖了存储数据的重要部分,例如聚合表的全部内容或合并多个大表。该项目代码是根据 MIT 许可证分发的。由于存储格式尚未稳定并且版本之间存在变化,开发仍处于形成实验版本的阶段。
DuckDB 提供了一种高级 SQL 方言,其中包括处理非常复杂且耗时的查询的附加功能。 支持使用复杂类型(数组、结构、联合)以及执行任意和嵌套关联子查询的能力。 它支持同时运行多个查询,直接从 CSV 和 Parquet 文件运行查询。 可以从 PostgreSQL DBMS 导入。
除了 SQLite 的 shell 代码之外,该项目还使用单独库中的 PostgreSQL 解析器、MonetDB 的 Date Math 组件、它自己的窗口函数实现(基于线段树聚合算法)、基于RE2库,它自己的查询优化器,以及任务同时执行的MVCC控制机制(多版本并发控制),以及基于超管道查询执行算法的矢量化查询执行引擎,允许大量值在一次操作中一次处理。
新版本的变化包括:
- 解析 CSV 格式数据的性能得到显着提升。例如,新版本中读取 11 万行的 CSV 文件的时间从 2.6 秒缩短。最多 1.15 秒,对 CSV 文件执行“SELECT COUNT(*)”操作最多 1.8 秒。长达 0.3 秒。
- 添加了对固定大小数组的支持,该数组类似于包含固定数量元素的列表(“CREATE TABLE 矢量(v DOUBLE [3]);”)。
- 添加了对连接 MySQL、PostgreSQL 和 SQLite DBMS 的支持,允许您将数据从外部 DBMS 加载到 DuckDB 中并在不同系统之间移动。使用标准表访问外部数据库。附加 'postgres:dbname=postgresscanner' AS postgres;从 postgres.film LIMIT 5 中选择标题、发行年份、长度;
- 添加了对“COMMENT ON”表达式的支持,用于保存有关数据库中对象的注释。
- 添加了对“COPY FROM DATABASE”表达式的支持,用于将所有内容从一个数据库复制到另一个数据库。
- 添加了对 EXCEPT 和 INTERSECT 表达式中的“ALL”修饰符的支持。
- 实施类型 »
来源: opennet.ru
