以下是DeepSeek对vortex格式文件的介绍,基本上来自参考文献1,它也是翻译的vortex存储库介绍。
Vortex是一种新兴的列式存储格式,它专为处理大规模数据而设计,旨在成为Apache Parquet等传统列式格式的高性能替代方案。
下面这个表格整理了Vortex的核心用途与特点,方便你快速了解:
| 主要用途方向 | 实现方式与特点 |
|---|---|
| 高性能数据读取 | 通过优化的列式存储和先进编码,实现极速数据扫描(比Parquet快2-10倍)和随机访问(比Parquet快100-200倍)。 |
| 高效数据存储与管理 | 采用可扩展编码(如FastLanes、ALP、FSST)和级联压缩技术,在保持高压缩比的同时,减少存储空间占用。 |
| 无缝融入现有数据生态 | 设计上与Apache Arrow兼容,支持零拷贝数据转换,并提供了适用于进程间通信和文件存储的零拷贝序列化功能。 |
| 支持高级数据操作 | 内置基本计算核心,支持在编码数据上直接进行操作(如过滤下推),并携带延迟计算的统计信息,以优化查询性能。 |
🔮 应用场景与技术展望
基于其设计目标,Vortex非常适用于对性能有高要求的数据处理场景:
- 大数据分析与处理:其高效的扫描和随机访问能力,非常适合处理需要频繁访问和分析大规模数据集的场景。
- 列式数据存储与检索:对于需要高效存储和按列检索数据的应用,Vortex提供了优异的性能。
- 分布式计算与数据传输:其零拷贝序列化特性使网络传输更为高效,适用于分布式计算环境。
- 未来技术演进:Vortex的未来版本计划支持GPU上的在设备解压缩,这将为机器学习、科学计算等需要高计算性能的场景提供显著的加速潜力。
💎 总结
总而言之,Vortex的用途可以概括为:致力于解决传统列式存储格式在大数据量下,尤其是需要频繁进行随机访问和复杂扫描查询时遇到的性能瓶颈。它通过一系列前沿的技术创新,在保持高压缩率的同时,极大地提升了数据处理的效率,是数据处理领域一个值得关注的新兴项目。
无意在DuckDB社区版插件列表中看到vortex 插件,试用一下:
在windows_amd64环境安装失败,它没有相应的版本。
install vortex FROM community;
HTTP Error:
Failed to download extension "vortex" at URL "http://community-extensions.duckdb.org/v1.4.1/windows_amd64/vortex.duckdb_extension.gz" (HTTP 404)
切换到Linux,可以安装了,将parquet文件转换成vortex,可以看到两者大小基本一致。两者支持的数据类型也一致。
root@6ae32a5ffcde:/par# ./duckdb141
DuckDB v1.4.1 (Andium) b390a7c376
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D install vortex FROM community;
100% ▕██████████████████████████████████████▏ (00:00:12.11 elapsed)
D load vortex;
D copy (from 'lineitem_sf01.parquet') to 'lineitem_sf01.vortex' (FORMAT vortex);
D .system ls -l lineitem_sf01.parquet lineitem_sf01.vortex
-rwxrwxrwx 1 root root 19685665 Oct 20 12:43 lineitem_sf01.parquet
-rwxrwxrwx 1 root root 18078492 Nov 8 11:48 lineitem_sf01.vortex
D describe FROM read_vortex('lineitem_sf01.vortex');
┌─────────────────┬───────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │ null │ key │ default │ extra │
│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────────────┼───────────────┼─────────┼─────────┼─────────┼─────────┤
│ l_orderkey │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_partkey │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_suppkey │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_linenumber │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_quantity │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_extendedprice │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_discount │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_tax │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_returnflag │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_linestatus │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_shipdate │ DATE │ YES │ NULL │ NULL │ NULL │
│ l_commitdate │ DATE │ YES │ NULL │ NULL │ NULL │
│ l_receiptdate │ DATE │ YES │ NULL │ NULL │ NULL │
│ l_shipinstruct │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_shipmode │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_comment │ VARCHAR │ YES │ NULL │ NULL │ NULL │
├─────────────────┴───────────────┴─────────┴─────────┴─────────┴─────────┤
│ 16 rows 6 columns │
└─────────────────────────────────────────────────────────────────────────┘
D describe FROM 'lineitem_sf01.parquet';
┌─────────────────┬───────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │ null │ key │ default │ extra │
│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────────────┼───────────────┼─────────┼─────────┼─────────┼─────────┤
│ l_orderkey │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_partkey │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_suppkey │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_linenumber │ BIGINT │ YES │ NULL │ NULL │ NULL │
│ l_quantity │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_extendedprice │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_discount │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_tax │ DECIMAL(15,2) │ YES │ NULL │ NULL │ NULL │
│ l_returnflag │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_linestatus │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_shipdate │ DATE │ YES │ NULL │ NULL │ NULL │
│ l_commitdate │ DATE │ YES │ NULL │ NULL │ NULL │
│ l_receiptdate │ DATE │ YES │ NULL │ NULL │ NULL │
│ l_shipinstruct │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_shipmode │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ l_comment │ VARCHAR │ YES │ NULL │ NULL │ NULL │
├─────────────────┴───────────────┴─────────┴─────────┴─────────┴─────────┤
│ 16 rows 6 columns │
└─────────────────────────────────────────────────────────────────────────┘
再比较读取性能。vortex没有实现从文件名后缀直接调用插件,必须明确写read_vortex函数,与parquet的读取速度基本一致,比DuckDB内存表略慢。并没有介绍说的那么厉害,也可能是插件优化不够,没能充分利用它的优势。
D create table lineitem as from 'lineitem_sf01.vortex';
Binder Error:
No extension found that is capable of reading the file "lineitem_sf01.vortex"
* If this file is a supported file format you can explicitly use the reader functions, such as read_csv, read_json or read_parquet
D create table lineitem as from read_vortex('lineitem_sf01.vortex');
D .timer on
D select l_shipmode,sum(l_quantity*l_extendedprice+l_tax)s from lineitem group by l_shipmode;
┌────────────┬───────────────────┐
│ l_shipmode │ s │
│ varchar │ decimal(38,4) │
├────────────┼───────────────────┤
│ RAIL │ 103710959195.4800 │
│ MAIL │ 103950423602.2100 │
│ FOB │ 103621363767.6000 │
│ SHIP │ 104643625434.0700 │
│ AIR │ 103914391169.9400 │
│ TRUCK │ 104286118296.7900 │
│ REG AIR │ 103750269155.0900 │
└────────────┴───────────────────┘
Run Time (s): real 0.004 user 0.018732 sys 0.001306
D select l_shipmode,sum(l_quantity*l_extendedprice+l_tax)s from read_vortex('lineitem_sf01.vortex') group by l_shipmode;
┌────────────┬───────────────────┐
│ l_shipmode │ s │
│ varchar │ decimal(38,4) │
├────────────┼───────────────────┤
│ TRUCK │ 104286118296.7900 │
│ REG AIR │ 103750269155.0900 │
│ RAIL │ 103710959195.4800 │
│ AIR │ 103914391169.9400 │
│ MAIL │ 103950423602.2100 │
│ SHIP │ 104643625434.0700 │
│ FOB │ 103621363767.6000 │
└────────────┴───────────────────┘
Run Time (s): real 0.042 user 0.036296 sys 0.019497
D select l_shipmode,sum(l_quantity*l_extendedprice+l_tax)s from 'lineitem_sf01.parquet' group by l_shipmode;
┌────────────┬───────────────────┐
│ l_shipmode │ s │
│ varchar │ decimal(38,4) │
├────────────┼───────────────────┤
│ REG AIR │ 103750269155.0900 │
│ FOB │ 103621363767.6000 │
│ AIR │ 103914391169.9400 │
│ RAIL │ 103710959195.4800 │
│ MAIL │ 103950423602.2100 │
│ TRUCK │ 104286118296.7900 │
│ SHIP │ 104643625434.0700 │
└────────────┴───────────────────┘
Run Time (s): real 0.024 user 0.038907 sys 0.000000

810

被折叠的 条评论
为什么被折叠?



