存储系统、数据库和对象存储 | 青训营

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 存储系统、数据库和对象存储 | 青训营

存储系统

一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统

特点有

  • 作为后端软件的底座.性能敏感
  • 存储系统软件架构,容易受硬件影响
  • 存储系统代码,既“简单"又“复杂”

数据库

关系型数据库和非关系型数据库

关系=集合=任意元素组成的若干有序偶对反应了事物间的关系

相关文章

关系代数=对关系作运算的抽象查询语言

  • 交、并、笛卡尔积…… SQL=一种DSL=方便人类阅读的关系代数表达形式

关系型

关系型数据库是存储系统,但是在存储之外,又发展出其他能力

  • 结构化数据友好struct
  • 支持事务acid
  • 支持复杂语言SQL关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。

非关系型

NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统。

NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。

主流存储分类

单机存储 单机数据库 分布式数据库 分布式存储
文件系统 关系型数据 关系型数据 分布式文件系
Key-Value存 非关系型数据 非关系型数据库 对象存储

1.单机存储

单个计算机节点上的存储软件系统,一般不涉及网络交互

特点

  • 本地文件系统
  • key-value存储

2.分布式存储—概览

在单机存储基础上实现了分布式协议,涉及大量网络交互

HDFS、Ceph

特点

  • 分布式文件系统
  • 分布式对象存储

3.单机数据库

单个计算机节点上的数据库系统

事务在单机内执行,也可能通过网络交互实现分布式事务

关系型数据库

商业产品Oracle,开源产品MySQL & PostgreSQL

非关系型数据库

MongoDB、Redis、Elasticsearch

关系型数据库一般直接使用SQL交互,而非关系型数据库交互方式各不相同

非关系型数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活

不管是否关系型数据库,大家都在尝试支持SQL(子集)和“事务”

4.分布式数据库

  • 容量:单点容量有限,受硬件限制
  • 弹性:扩容等问题
  • 性能
  • 性价比

在存储和数据库领域,硬件反推软件的变革十分常见

对象存储OSS(Object Storage Service)

特点

  • 容量无限大:可以到 EB 级,多少数据都能存的下
  • 持久可靠:11个 9 甚至以上的可靠性,数据丢失的概率比中五百万的概率还要低 2-3 个量级
  • 低成本:1 部高清电影存 1 年,差不多也就几块钱人民币
  • 使用方便:支持 REST 接口,主要操作为 PUT/GET/DELETE等,使用非常简单。

应用场景:日志、文本、音频、视频、图片、安装包、备份、前端js文件等

对象存储使用

对象(Object)是OSS存储数据的基本单元,也被称为OSS的文件。

和传统的文件系统不同,Object没有文件目录层级结构的关系。

  1. 创建Bucket
  2. 开发业务逻辑
  3. 测试

restful接口

对象存储对外提供的一般都是Restful风格的接口。

和gin类似

MultiUpload接口

解决大文件的问题

Listprefix接口

查看bucket里面的对象

关于运行代码

刚再阿里云上申请完,但是控制台里显示"数据还在准备中"

官网里面的文档非常详细了,不需要做任何补充

bucket创建就可以使用

OSS管理控制台 (aliyun.com)在这里可以看到endpoint当然是选择外网访问的第一个啦

在头像触摸可以出来accessKey管理,新建一个就可以使用。

分别是acessKey和acessSecretKey,在之后登录会用到

还有STS访客临时登录等等,文档里面很详细


在goland里面用

发现完全没必要自己写了啊,找到了阿里云的 OSS SDK for Go

  • 执行命令go get github.com/aliyun/aliyun-oss-go-sdk/oss获取远程代码包。
  • 在您的代码中使用import "github.com/aliyun/aliyun-oss-go-sdk/oss"引入OSS Go SDK的包。

这样就应该可以在大项目里面用了

go

复制代码

package main
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
  client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  if err != nil {
    // HandleError(err)  
  }
  lsRes, err := client.ListBuckets()
  if err != nil {
    // HandleError(err)  
  }
  for _, bucket := range lsRes.Buckets {
    fmt.Println("Buckets:", bucket.Name)
  }
  bucket, err := client.Bucket("my-bucket")
  if err != nil {
    // HandleError(err)  
  }
  lsRest, err := bucket.ListObjects()
  if err != nil {
    // HandleError(err)  
  }
  for _, object := range lsRest.Objects {
    fmt.Println("Objects:", object.Key)
  }
}


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
3天前
|
存储 SQL 关系型数据库
关系型数据库结构化数据存储
【5月更文挑战第9天】关系型数据库结构化数据存储
10 1
|
3天前
|
存储 SQL 关系型数据库
关系型数据库数据结构化存储
【5月更文挑战第8天】关系型数据库数据结构化存储
26 6
|
3天前
|
项目管理 数据库
基于jeecg-boot的项目管理系统(一、部分数据库)
基于jeecg-boot的项目管理系统(一、部分数据库)
18 0
|
3天前
|
SQL 关系型数据库 数据库
关系型数据库选择合适的数据库管理系统
【5月更文挑战第5天】关系型数据库选择合适的数据库管理系统
240 2
关系型数据库选择合适的数据库管理系统
|
3天前
|
关系型数据库 MySQL BI
关系型数据库选择合适的数据库管理系统
【5月更文挑战第4天】关系型数据库选择合适的数据库管理系统
180 4
关系型数据库选择合适的数据库管理系统
|
1天前
|
存储 Oracle 关系型数据库
关系型数据库文件方式存储CONTROL FILE(控制文件)
【5月更文挑战第11天】关系型数据库文件方式存储CONTROL FILE(控制文件)
9 1
|
1天前
|
存储 关系型数据库 数据库
关系型数据库文件方式存储LOG FILE(日志文件)
【5月更文挑战第11天】关系型数据库文件方式存储LOG FILE(日志文件)
6 1
|
1天前
|
存储 SQL Oracle
关系型数据库文件方式存储DATA FILE(数据文件)
【5月更文挑战第11天】关系型数据库文件方式存储DATA FILE(数据文件)
12 3
|
2天前
|
存储 SQL 关系型数据库
关系型数据库结构化数据存储查询方式
【5月更文挑战第10天】关系型数据库结构化数据存储查询方式
16 2
|
2天前
|
存储 关系型数据库 数据库
关系型数据库结构化数据存储
【5月更文挑战第10天】
18 7
http://www.vxiaotou.com