返回资讯中心
外部精选
软件工程
#开发者实时流

KX 新版本为符号列引入自适应编码

来源标题:Encoding in L

KX 数据库新版对符号列采用自适应编码,按数据分布自动选择紧凑表示。相邻编码的列每值仅占 2 比特,压缩到 25%;分散编码的列则原样保存,压缩率为 0%。每个符号列文件独立自包含,无需数据库根目录下的共享文件。

Hacker News 最新tosh2026/11/11 · 今天5 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

l>m:5000000 l>near:m?"abcd" / 四个相邻编码 l>spread:m?"zrac" / 四个编码,从 a 到 z 分散 l>sym_near:$'near / 与符号相同的值 l>sym_spread:$'spread l>int_spread:short$"zrac"?spread / 分散编码映射为 0 到 3 的小整数 l>.z.compnear / 1b 1250096 5000000 25%:每个值 2 比特 l>.z.compspread / 0b 5000000 5000000 100%:原样保留 l>.z.compsym_near / 1b 1250176 40000000 l>.z.compsym_spread / 1b 1250176 40000000 与 sym_near 大小相同 l>.z.compint_spread / 1b 1250096 10000000 与 near 字节数相同 磁盘上的符号 在 l 数据库中,每个符号列文件都是自包含的,因此数据库根目录下没有需要创建、备份、增长或与表保持同步的共享文件。这意味着写入符号时任何问题的影响范围都局限在各自列内。每个符号列文件都包含读取它所需的全部内容: 符号列加载为普通的符号向量(类型 11)。下面是一个用普通 set 写入符号列的表: l>:db/2026.04.01/t/ set ([] sym:AAPLMSFTAAPLGOOG; px:1 2 3 4.) l>key :db / 仅显示 2026.04.01 分区 l>key :db/2026.04.01/t / .dpxsym:符号列是一个自包含文件 l>\l db l>select from t where date=2026.04.01 / 符号以普通符号形式返回 l>type exec sym from t where date=2026.04.01 / 11h 符号的读取同样是惰性的:get 和 count 只做文件映射。读取值时会发生什么取决于列的存储方式。对于打包到 lane 中的列,首次读取任何值都会驻留该列所有不同的字符串;在一项针对包含 1,000,000 个不同符号的列的单独测试中,仅索引 3 行就驻留了全部 1,000,000 个。对于符号不超过 8 个字符且直接存储的列,只有你触及的值才会被驻留:索引 3 行驻留 3 个,= 扫描不驻留任何值,而 distinct 会将它们全部驻留。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →