青训营笔记 - 面向对象的非关系型数据库

91 阅读2分钟

相比于关系型数据库,对象存储于近十年来兴起并快速得到广泛应用。

为什么对象存储

时代需求和优点

首先,在海量数据的今天,需要分布式数据库,并且需要满足海量、易用、便宜的特点。

而之前的单机存储或者单机数据库,显然不适用于海量数据;分布式数据库中针对大量结构化数据,不够自由;分布式存储适合大量大数据计算中间结果/视频/图片等的存储,适用于今天的情况。

并且,对象存储文件数量不受Name Node限制;是云原生服务,按需申请使用,便于维护;具备冷热数据分级存储的能力,成本更低。因此快速成为人们的选择。

适用场景

  • 视频
  • 图片
  • 文本
  • 安装包
  • 备份
  • 前端js文件

静态的,Immutable的文件

不适用场景

  • 关系型数据:商品订单……
  • KV:缓存记录
  • 随机读写:在线编辑文件
  • 更新频繁:钱包余额等

结构化、Mutable的信息

对象存储的使用

申请Bucket时,接口一般都是Restful风格,即类HTTP格式进行增删查改(PUT,GET,HEAD,DELETE)。

在上传大视频时,可以使用MultiUpload接口,分块上传,通过uploadID进行分块拼接。

ListPrefix接口,进行分页列举。

开发一个对象存储

接入层:接入解析并处理接口信息 元信息层:存储对象元信息 存储引擎层:存储对象内容

面临问题,海量数据,成本&稳定性,可扩展性

解决方法:

  • 可扩展性:Partition。分而治之,不同数据映射至不同Partition分区。

    • 存储均匀分布
    • 计算均匀分布
    • 压力均匀分布
  • 持久度:Replication。多个副本,多机架、多机房、多Region,因此可以带来高持久度和强吞吐能力。

    面临很多问题,不可靠的一切都可能导致数据丢失。

    • 不可靠的硬件/软件
    • 自然灾害,电磁干扰
    • ……
  • 成本问题:EC(Erasure Coding),通过荣誉编码达到和多副本一样的持久度。

    • 低冗余度:成本相较于单纯的多副本较低
    • 额外计算:增加了额外编码计算步骤
  • 成本问题:温冷转换。比如常用数据SSD,次者HDD,再次光盘来存储。

其他

综上,对象存相比于之前的结构化存储等关系型数据库,更加灵活,对类型要求没那么严格,内存使用更加灵活。对海量流量、数据,高并发访问immutable内容的今天,十分适用。但并没有取代也不会取代关系型数据库的地位,大量数据的增删查改包括账户等交易信息,这些mutable的数据还得是关系型数据库。