《后端存储实战课》课程学习笔记(一)

从今天起,换种方式学存储

  • 凡是那些特别难解决的、让你付出巨⼤代价的,或者是损失惨重的技术问题,几乎都可以归为存储系统的问题。
  • 存储是系统中最核心、最重要、最关键的组成部分,没有之一。

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

  • 无论是什么样的存储,比如 MySQL、Redis、ElasticSearch 等等,它们都有几个共同的特点。
    • 第一个特点是难用。
      • 对于应用程序来说,存储无非就是帮我们安全可靠地保存数据,在我需要的时候能快速读出来也就可以了。
      • 很遗憾,几乎没有存储系统能满足这么简单的要求。
    • 第二个特点是慢。
      • 一个经过良好优化过的业务系统,它的性能瓶颈一定是存储。
      • 从性能角度上来说,存储系统就是整个系统中最短的那块儿板子,存储系统有多慢,你的整个系统就多慢。
    • 第三个特点是杂。
      • MySQL、Redis、ElasticSearch、HBase、Hive、MongoDB、RocksDB、CockroachDB 等等,这些存储还真就是谁都替代不了谁,每一种都有它擅长的地方,有它适用的场景,当然也有很突出的短板。

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

  • 存储涉及到很多理论知识和概念,比如各种数据结构、哈希、树以及它们的时间复杂度等等,这些内容往往都是偏数学范畴的一些知识,学起来不容易理解和记忆。
  • 并且,理论和实践之间往往存在着非常大的鸿沟,往往是“懂了⼀堆道理,却还是写不好代码”。
  • 创业团队需要快速低成本把系统完整地实现出来,好快速验证它的商业模式。
    • 在创业篇,我们重点解决从 0 到 1 的问题;
    • 比如:如何低成本高质量地快速构建一个小规模的订单存储系统。
  • 处于高速增长期的团队,它面临的问题是业务高速增长和不断变化,相应的,也要对系统不停地进行升级改造来适应变化,并且要在变化的过程中确保稳定;
    • 在高速增长篇,我们关注在高速变化的过程中,你的系统一定会遇到的一些共通问题,以及该如何应对这些问题。
    • 比如说,如何从单机的存储系统逐步演进为分布式存储系统;
    • 如何在线平滑的扩容我们的存储系统。
  • 业务规模足够大的一些大厂,它需要解决的是如何应对高并发、海量数据这些问题。
    • 在海量数据篇,我们重点解决高并发、海量数据情况下的存储系统该如何设计的问题。
    • 比如,海量的埋点数据该怎么存储;
    • 如何在各种数据库之间实时迁移和同步海量数据,等等。
  • 所以说,不同规模的系统,在技术上没有高低贵贱之分,它们的建设目标不一样,面临的挑战不一样,需要解决的问题也不一样,对于存储系统的选择、架构设计也是不一样的。

你可能感兴趣的:(数据库,学习,笔记,java)