我们在之前的笔记当中屡次提到了关系数据库(MySQL),那么,除了它以外,还有什么存储方式呢?这种存储方式又该怎样应用呢?
存储对象
我们应该知道,关系数据库是借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。 简单来说,关系数据库由是有表头的表来存储数据。
情景
现在要开发抖音项目,需要用到数据库来存储视频。那么如果使用关系数据库,我们需要在数据库当中存储视频所在位置的地址,每一次都是先获得地址然后再访问地址,传输数据。 但抖音背后的需求真的只有这么简单吗? 我们可以设计会员制,让用户享有不同的清晰度;也会因为用户的硬件原因,比如显示器大小与像素设置而导致清晰度不同,因此,用户在下载之前需要先进行不同的传码率服务。
存储
在存储时,我们需要考虑的面向用户的数量。首先,视频本身就很大,其次,用户数量也在增长,因此我们不能使用普通存储手段。 新的存储手段要满足三个要求:
- 易用
- 海量
- 便宜
为什么要存储对象
原因来自表格,表格来自课程:
每一个原因在于它满足了上述的三个特点。
易用性
- 接口简单: Bucket/Object语义: Bucket: 存储对象的桶,可类比一个云上的Map Object: 对象,包含如下三个部分
- Key: 对象的名字,可类比Map的Key
- Data: 对象的内容,例如视频/图片内容
- MetaData: 对象的一些元信息,如对象大小,对象Content-Type,也可以存储自定义元信息
- HTTP接口
- 任何时间、任何地点、任何互联网设备上传和下载数据
- 支持HTTP协议的各种客户端都可访问
- 接口速览
- GET:下载对象
- HEAD: 查看对象元信息
- PUT:上传对象
- DELETE: 删除对象
使用场景
根据表格可知其使用场景。