淘宝图片空间手机版入口 淘宝图片空间在哪里( 二 )

  • 其次 , 图片空间库存储了大量的图片元信息(例如user_id、图片地址URL等) , 这些信息有一个特点:相邻数据之间相似度非常高 , 例如同一个user_id往往对应多个图片地址 , 图片地址URL之间的前缀十分相似 。X-Engine的前缀压缩机制保证:相邻key的相同前缀 , 尽量只存储一次 。因此包含图片元信息的二级索引 , 经过前缀压缩 , 所占空间很少 。
  • 最后 , 主表的key虽然不能使用前缀压缩 , 但通用压缩算法 , 面对图片元信息记录中大量相似的文本字符(URL等) , 也能大显身手 , 取得理想的压缩比率 。InnoDB虽然也支持数据页压缩 , 且对静态数据有较好的压缩比率 , 但是随着数据写入 , B+-Tree持续分裂合并 , 空间很快就会膨胀起来 。X-Engine静态的数据页 , 不存在这个问题 。
  • 此外 , 由于图片空间是一个高频使用的应用 , 如果X-Engine的性能不满足要求 , 也无法落地 。得益于LSM轻量化写机制 , X-Engine写入操作本就是优势 , 何况还引入了group commit和事务处理流水线机制 , 大大增加了写入处理的并发度 。读请求本是LSM的弱项 , 分层的结构和追加写产生的多版本数据 , 会增加读请求查询路径的长度 , X-Engine为此做了大量的优化 , 诸如:多粒度Cache(memtable , Block Cache和Row Cache)、bloomfilter和range scan filter(Surf, SIGMOD\'18)有效减少点查询和范围扫描的次数、异步I/O预取等 , 尽力把它打造成读写性能均衡 , 成本优势突出的存储引擎 。关于X-Engine读写优化 , 可以参考这篇文章:X-Engine SIGMOD论文详解 。
    经过DBA和业务开发同学的验证 , X-Engine的读写性能及延时完全满足业务需求 。很快 , 淘宝图片空间库全部切换为X-Engine引擎 , 节省了大量的存储成本 。




    X-Engine分层存储的架构 , 特别适合具有如下业务负载特征的业务:
    • 库表数据量特别大 , 对成本敏感的业务 。传统InnoDB引擎迁移到X-Engine后 , 依据数据特征不同 , 存储空间可降低2倍~10倍 。迁移到X-Engine之后 , 很多业务可以免除分库分表的需求 , 使用单库即可承载近10TB的数据存储服务 。例如:X-Engine在钉钉的应用 。
    • 数据访问具有鲜明的时间特征 。例如大部分读取及修改操作集中在最近写入的数据上 , 而历史数据较少被访问(例如淘宝交易库) 。X-Engine新写入的数据通过高效的内存索引缓存 , 访问性能极高 , 而较少访问的历史数据保存在磁盘 , 提供稍逊的读写性能 。例如:X-Engine在淘宝交易库的应用 。


    淘宝图片空间手机版入口 淘宝图片空间在哪里

    文章插图
    【淘宝图片空间手机版入口 淘宝图片空间在哪里】


    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。