序列化专栏规划

背景

在后端系统中,业务功能开发的核心价值在于 数据交互逻辑数据存储,因此,对存储系统的理解深度可以说是后端开发者的基本功或者核心竞争力。

对于存储系统而言,序列化是一个很核心的模块,以序列化为入口,就能很好地理解 存储机制 和 查询机制,也就对存储系统手到擒来。

专栏规划

序列化方法是一个比较成熟的领域,现有的方案可以分为 文本序列化、二进制序列化 两种类型,常用的方案例如: 语言专有序列化、JSON、XML、protobuf、thrift、flatterbuffer 等。

除了要研究序列化的方案有哪些,我们还要理解一些常见的存储系统是怎么用不同的序列化方案实现的,这样才能结合实际场景理解不同序列化方案的特点。因此,我们也希望分析一下几个常见的存储系统是怎么做的,例如: redis、kafka、boltDB、prometheus、go-levelDB、roseDB。

任何一项技术的学习,如果只是理论上乐呵乐呵,就像是看着视频学游泳,下水扑腾两下就等下一轮回了,只是眼睛会了手却没有。所以,我们还是得回到实践中来,用一个真实的场景作为案例,切实分析清楚该怎么处理。

专栏内容规划(暂定)

序列化的系统很庞大,哥们儿也只是了解些皮毛,目前也无法系统性地确定这个专栏可以分成哪些章节,因此暂定一个基本的结构,在实际操作过程中,可能(自信点,去掉可能)会根据需要增删一些章节,甚至可能重构内容组织结构。不管怎么说,依然还是需要下面的内容规划作为开始。

第一部分: 几种常见的序列化方法比较

第二部分: 几种常见数据库的数据存储机制的分析

  • 数据库序列化综述
  • redis 持久化序列化方法 (AOF 和 RDB)
  • kafka 的数据序列化及存储模式
  • boltDB 的数据序列化及存储模式
  • prometheus 的数据序列化及存储模式
  • go-levelDB 的数据序列化及存储模式
  • roseDB 的数据序列化及存储模式
  • 序列化和存储模式的对比抽象分析
    • 数据存储模式
    • 索引存储模式
    • wal 存储模式
  • 小案例: 实现一个简单的 kv 存储库

第三部分: 实践-设计序列化方案实现Excalidraw后端存储

  • Excalidraw 模式及数据结构分析
  • 序列化方案选型
  • 方案实现

写专栏的要求

想当年,刚进入编程世界,就对那些有自己博客站的人非常崇拜,尤其是一些领航者例如 阮一峰、左耳朵耗子 等等,那时候什么都不大懂,却一心想拥有一个自己的博客站,于是跌跌撞撞使用 hexo 搭建起了自己的网站: 龙堡 ,这两年也零零散散写了一些小文章。

前段时间在家休息了一阵,便得闲回顾了一番,当时就懵了,这写的都是啥啊,大多文章都是有头无尾、组织散乱的,我自己看可能还能 GET 到当时想表达的含义,但凡是换一个读者看,都停不了3秒就得出门左转了。

我意识到,一篇真正能带给别人启发的文章,一定是需要面向读者写的,从内容结构、用词用语、图文结合 等多方面都要有所注重。

因此,我想到了另一种内容形态 – 专栏。

能称为 “专栏”,其内容一定是经过提前规划,前后逻辑连贯、由浅入深地去解释清楚一个问题,是为了真正探讨清楚一个主题而写的。少了博客的随性,却多了内容的信息密度 以及 阅读友好。

该序列化专栏会是我的第一个专栏尝试,按照规划,之后也会对自己感兴趣的 调度系统、响应式系统、消息系统 等主题进行拆解。

专栏的另一个目标,是让读者能更体系性地理解一个主题,而我初次以专栏的形式创作此栏目,必定有很多思考不周的地方,若你在阅读此专栏时有任何的想法和建议,还请不吝提出,深谢。


It is in your moments of decision that your destiny is shaped.
Tony Robbins