当前位置: 首页 > news >正文

PikiwiDB新存储引擎 官文解读

原文连接https://github.com/OpenAtomFoundation/pikiwidb/discussions/20521.要点首先提出:上一方案每种数据类型对应一个RocksDB导致不同数据类型可以重名的问题同时业务集中使用一种数据类型造成负载不均衡和资源浪费。新的存储架构中Pika 实例存储引擎包括内存缓存和硬盘持久存储 RocksDB。每个 Pika 实例由一个内存缓存和多个 RocksDB 实例构成每个数据分片对应一个 RocksDB 实例。同一个Pika实例的多个 RocksDB 实例共享同一个 compaction 和 flush 线程池。2.Zset数据类型讨论Zset由两部分组成:元数据(meta_key, meta_value)和普通数据(data_key,data_value)元数据存储Zset集合member的数量以及当前Zset集合的版本号和过期时间普通数据存储: Zset集合的每个成员(membeer)及对应的分数(score)因为Zset需要按照member排序耶需要按照score排序所以有两种格式member to score和score to member3.kvrocks向量存储向量的存储格式分为 Metadata 和 Data 两部分1. Metadata元数据向量字段元数据[1 byte] flag (noindex:1 bit | type:4 bits | reserved:3 bits) [1 byte] vector_type (1 FLOAT64) [2 bytes] dim (向量维度) [1 byte] distance_metric (0L2, 1IP, 2COSINE) [4 bytes] initial_cap (初始容量) [2 bytes] m (每层最大邻居数) [4 bytes] ef_construction (构建时候选数) [4 bytes] ef_runtime (查询时候选数) [8 bytes] epsilon (范围查询因子) [2 bytes] num_levels (HNSW图层数)HNSW节点元数据[2 bytes] num_neighbours (邻居数量) [2 bytes] dim (向量维度) [dim * 8 bytes] vector (FLOAT64 向量数据)2. Data键格式HNSW节点键[1 byte] ns_size (命名空间长度) [ns_size bytes] ns (命名空间) [1 byte] type (3 SearchSubkeyType::FIELD) [4 bytes] index_size (索引名长度) [index_size bytes] index (索引名) [4 bytes] field_size (字段名长度) [field_size bytes] field (字段名) [2 bytes] level (HNSW层级) [1 byte] level_type (1 HnswLevelType::NODE) [4 bytes] key_size (数据键长度) [key_size bytes] key (数据键)HNSW边键[1 byte] ns_size [ns_size bytes] ns [1 byte] type (3 FIELD) [4 bytes] index_size [index_size bytes] index [4 bytes] field_size [field_size bytes] field [2 bytes] level [1 byte] level_type (2 EDGE) [4 bytes] key1_size [key1_size bytes] key1 [4 bytes] key2_size [key2_size bytes] key2值格式节点值[2 bytes] num_neighbours (邻居数量) [2 bytes] dim (向量维度) [dim * 8 bytes] vector (FLOAT64 向量数据)边值(空) - 边的值是一个空的 Slice所有信息都存储在键中4.redis 向量存储格式1.meta datatypedef struct hnswNode { uint32_t level; // 节点的最大层级 uint64_t id; // 唯一标识符 void *vector; // 向量数据指针 float quants_range; // 量化范围-quants_range 到 quants_range float l2; // 归一化前的 L2 范数 uint64_t visited_epoch[HNSW_MAX_THREADS]; // 访问时间戳每个线程一个 void *value; // 关联的用户值vsetNodeVal struct hnswNode *prev, *next; // 双向链表指针 hnswNodeLayer layers[]; // 各层的邻居链接柔性数组 } hnswNode;2.data
http://www.gsyq.cn/news/1389313.html

相关文章:

  • 三步实现智能转录:bili2text重新定义视频内容处理流程
  • 浙里科技双明珠:杭州有阿里,宁波有天理
  • 统信UOS也能本地跑AI语音合成!MOSS-TTS-Nano部署实测全流程
  • 告别网盘限速:LinkSwift直链下载助手的完整使用指南
  • 大语言模型(LLM)本地部署完全指南
  • 2026最新五家龙港市黄金回收白银回收铂金回收彩金回收店铺靠谱回收门店推荐TOP5排行榜及联系方式推荐 - 前途无量YY
  • 3分钟掌握DeTikZify:从草图到专业科学图表的AI魔法
  • Nintendo Switch文件管理的瑞士军刀:NSC_BUILDER如何让游戏文件处理变得简单高效
  • 【信息科学与工程学】【数据科学】数据科学领域-第三篇 数学基础01 概率论及统计学概率论与统计数学 02核心知识表格03
  • Armv8-A/v9-A架构中SCTLRMASK_EL2寄存器详解与应用
  • 从LSI到PMC:主流阵列卡管理工具实战指南与运维场景解析
  • RS485总线上的‘幽灵数据’从哪来?手把手教你配置上下拉电阻和终端电阻(附SP3485实测波形)
  • Claude Code与Cursor深度对比:AI编程助手如何重塑开发效率与工作流
  • 思必驰重启IPO:年营收6.9亿,拟募资15.6亿 估值64亿 阿里加持
  • AI驱动的前端开发新范式:让AI操作布局,后端专注数据服务
  • 2026英语学习机推荐怎么选?中小学大屏护眼款全面盘点 - 博客万
  • 在WinForm中集成SharpGL:实现工业级3D模型可视化与交互
  • 项目介绍 基于java+vue的多智能体强化学习的博弈对战平台设计与实现(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢
  • 深度解析:BarrageGrab如何用3大技术突破重新定义直播弹幕采集
  • 开源阅读鸿蒙版:为什么这是你需要的最后一款阅读应用?
  • CANN昇腾 MindSpore 适配深入解析:如何在 MindSpore 框架中充分发挥昇腾硬件性能的完整指南
  • BarrageGrab:15+平台直播弹幕零代码采集的终极指南
  • 工业机器人网络安全漏洞披露现状与应对策略
  • 标准IO介绍 文件IO介绍及缓冲区概念
  • 机器人网络安全漏洞披露政策的发展与实践
  • 网盘直链下载助手终极指南:如何3分钟轻松获取九大网盘高速下载链接
  • 从独立顾问到Claude官方伙伴:AI咨询公司的实战转型与生态共建
  • 别再只用轮廓系数了!用Python的sklearn实战MI、NMI、AMI三大聚类评估指标
  • 【MATLAB】基于灰狼优化算法和MATLAB的光伏最大功率点跟踪控制仿真研究
  • 低查重AI教材生成,利用AI工具开启高效教材编写新征程!