在现代数据库系统中,字符串数据占据了约百分之五十的数据存储空间,这使得字符串的压缩技术成为提升系统性能的关键所在。技术分析表明,由于字符串的普遍性及其在查询过滤中的高频使用,数据库厂商必须致力于实现高效的存储和快速的查询响应。
Snowflake 近期对分析工作负载的洞察报告揭示,字符串不仅是最常见的数据类型,也是过滤操作中最常被引用的列类型。这意味着数据存储必须在资源消耗最小化和查询效率最大化之间取得平衡,直接关系到运营成本和用户体验。
CedarDB 在其最新的压缩方案探讨中,回顾了其对文本列支持的压缩机制,包括未压缩、单值和字典压缩。其中,字典压缩通过将重复的字符串映射为固定大小的整数键(Key)来实现压缩,这种方法依赖于一个按需构建的字典结构。
CedarDB 的字典实现中存储了指向字符串的偏移量(Offset),以确保对字典内容的快速随机访问,这对于处理可变长度的字符串至关重要。此外,该字典是按字典序(lexicographically ordered)排序的,虽然这使得插入和删除操作成本较高,但 CedarDB 通过将压缩数据视为不可变(immutable)来规避了这一成本。
这种有序性在查询评估时提供了显著优势,允许数据库直接在压缩表示上执行二分查找(binary search)来定位搜索字符串对应的字典键。一旦找到键,后续的比较操作转变为对固定大小整数键的比较,这能有效利用现代处理器的 SIMD(单指令多数据)向量化指令集,显著加速过滤过程。
文章强调,在数据库系统中,压缩的主要价值在于提升查询性能,而非单纯的存储削减。通过减小数据在内存中的占用,压缩后的数据更有可能驻留在更快的 CPU 缓存中,从而将数据访问时间缩短十倍以上,同时提高了有限带宽的利用率。
然而,字典压缩的局限性在于它仅在区分值数量较少时表现出色,因为字典需要存储所有唯一字符串的完整副本。当字符串集合的基数(cardinality)非常高,或字符串共享更多底层可预测模式时,需要采用能更好地捕获低熵(low entropy)模式的替代压缩方案。