# 后端存储实战

存储是系统中最核心、最重要、最关键的组成部分,没有之一

# 你要关注存储的哪些特点?

  1. 难用:

    存储数据,如 mysql 需要把内存中的一个对象,拆分成列存储,读取的时候,再查询出来组装成一个对象

  2. 近几年,分布式存储非常繁荣,各种数据库层出不穷,与 mysql 比较性能测试,吊打 mysql 之类的。

    一个人炫耀什么,说明内心缺少什么,这个道理放到技术圈同样适用,不断有新的存储刷新性能记录,恰恰说明了存储系统性能不能让人满意。

  3. MySQL、Redis、ElasticSearch、HBase、Hive、MongoDB、RocksDB、CockroachDB 等等,这些存储还真就是谁都替代不了谁,每一种都有它擅长的地方,有它适用的场景,当然也有很突出的短板。如何根据业务系统的特点,选择合适的存储来构建我们的系统,这也是需要学习和掌握的。

# 学习存储的最佳姿势是什么样的?

存储涉及到很多理论知识和概念,比如各种数据结构、哈希、树以及它们的时间复杂度等等,这些内容往往都是偏数学范畴的一些知识,学起来不容易理解和记忆。并且,理论和实践之间往往存在着非常大的鸿沟,往往是 「懂了一堆道理,却还是写不好代码」。

所以,本课程的专栏存储,我们只讲实践中大家都会遇到的问题,讲这些问题的解决方法,同时在这里面贯穿一些知识和原理 。通过这样的学习方式,既可以快速地帮你解决实际问题,同时还能提升你的技术能力。

在接下来的课程中,我会带你一起,从 0 到 1,从小到大,以电商作为场景,讲解不同规模的存储系统应该如何构建

  • 首先:电商系统覆盖面足够广泛

    特别是是在互联网行业,你会发现几乎所有的互联网公司都在做两个事情:电商和社交。

  • 其次:用电商系统作为案例,直接就能学以致用

    即使你面对的业务和电商关系不大,因为电商的系统足够复杂,你在其他业务中可能遇到的技术问题,大多数在电商系统中基本都会遇到,一样有借鉴的意义。另外,电商这个业务领域对所有人来说都很熟悉,拿它作为案例基本上不需要再讲解业务知识,我们可以快速地专注于技术问题本身。

一个系统不是一开始就是一个巨无霸,所以,我们的课程设计就是 按照系统的发展过程,分成了创业篇、高速增长篇和海量数据篇这三个部分。

  • 在创业篇

    我们重点解决从 0 到 1 的问题;比如:如何低成本高质量地快速构建一个小规模的订单存储系统。

  • 在高速增长篇

    我们关注在高速变化的过程中,你的系统一定会遇到的一些共通问题,以及该如何应对这些问题。比如说,如何从单机的存储系统逐步演进为分布式存储系统;如何在线平滑的扩容我们的存储系统。

  • 在海量数据篇

    我们重点解决高并发、海量数据情况下的存储系统该如何设计的问题。比如,海量的埋点数据该怎么存储;如何在各种数据库之前实时迁移和同步海量数据,等等。

# 声明/说明

本笔记百分之 80% 以上都可能会直接是原文的复制,只是进行了一些重点标注、排版优化和一些阅读总结

# 目录导航