存储学习笔记 | 青训营

91 阅读2分钟

存储与数据库学习

1. 经典案例:数据的产生

比如某新用户第一次注册,那么数据就产生了,从用户传到后端服务器,存入数据库中(持久化),在数据库之后可能还有别的存储系统。我们关注以下这些潜在的问题:数据库怎么保证数据不丢失?如何处理多人同时修改的问题?除了数据库还有别的存储系统吗?数据库只能处理结构化的数据吗?操作数据库的方式、编程语言有什么?

2. 存储系统:数据怎么从应用到存储介质

对于存储系统来说,缓存很重要,拷贝很昂贵。硬件设备五花八门,需要抽象统一的接入层。
RAID技术:高性能、高性价比、高可靠性。

  • RAID 0:多块磁盘简单组合、数据条带化存储提高了带宽、没有额外容错设计。
  • RAID 1: 一块磁盘对应一块额外镜像,真实空间利用率仅一半,容错能力强。
  • 实际上会结合起来用。

3. 数据库

首先要思考一下,数据库和存储系统有什么区别?
数据库分为关系型和非关系型的。

  • 关系型数据库是存储系统,但除此之外又具备一些特点:对结构化数据友好,支持事务(ACID),支持复杂查询语言。
  • 非关系型数据库也是存储系统,但一般不要求严格的结构化。
    举例来说,存储一条用户信息,关系型数据库可以直接以表形式管理,但非关系型数据库要自行定义管理结构。
    事务的优越性:
  • Atomicity:事务内操作要么全做,要么不做
  • Consistency:事务执行前后数据状态一致
  • Isolation:可以隔离多个并发事务避免影响
  • Durability:事务一旦提交成功,就保证数据持久性

4. 对象存储TOS

比如短视频APP,需要一个合适的存储来存储视频图片等数据,要求一种合适的存储,满足易用、海量、便宜。前面介绍的属于数据库,而对象存储是一种分布式存储(还有一种HDFS分布式文件存储系统),其特点是适合大数据计算中间结果、视频、图片等。

  • 接口:
    • Bucket:存储对象的桶
    • Object:对象,包括:
      • Key:对象名字
      • Data:对象内容,视频图片等
      • MetaData:对象的元信息,如大小,Content-Type
    • GET:下载对象
    • HEAD:查看对象元信息
    • PUT:上传对象
    • DELETE:删除对象

总结来说,TOS使用存储视频、图片、文本、安装包、备份等静态、immutable内容。