阿里云——云存储与数据库服务


云存储与数据库服务

数据是数字时代的新石油,而存储与数据库服务就是保存和提炼这些石油的"油库与炼油厂"。阿里云提供了从对象、块、文件存储到关系型、NoSQL、数据仓库的全方位数据服务。本章将帮你构建一套清晰的数据存储选型框架,并掌握核心服务的使用。

5.1 对象存储(OSS):海量非结构化数据的家

对象存储(OSS, Object Storage Service) 是一种海量、安全、高可靠、低成本的云存储服务,适合存放任意类型的非结构化数据,如图片、视频、文档、备份、日志文件等。

核心概念

  • 存储空间(Bucket):文件的命名空间,相当于顶层文件夹。名字全局唯一。
  • 对象(Object) :OSS存储的基本单元,即一个个文件。由Key (文件名)、Data (数据本身)和MetaData(元信息)组成。
  • 地域(Region):Bucket创建时需选择地域,数据默认存储在该地域。
  • 访问域名(Endpoint):访问Bucket的网络地址。

核心特性与适用场景

  • 无限容量与高持久性:设计耐久性高达99.9999999999%(12个9),无需担心数据丢失。适用于备份归档、静态资源存储。
  • 高并发与带宽:支持海量客户端同时读写,无需担心带宽瓶颈。适用于用户上传内容(UGC)、图片视频分享网站。
  • 低成本分级存储 :提供标准、低频访问(IA)、归档、冷归档四种存储类型,价格逐级递减,访问速度也逐级变慢。可根据数据访问频率选择,优化成本。
    • 标准:热数据,频繁访问。
    • 低频IA:数据较少访问,但需要实时读取。
    • 归档/冷归档:冷数据,基本不访问,读取需要先解冻(耗时几分钟到小时级),适合合规性存储、长期备份。

OSS的核心价值在于解耦。将应用中的静态资源(JS/CSS/图片)分离到OSS,并通过CDN加速,能极大减轻Web/App服务器的负载,提升全球访问速度,是现代化应用架构的标配。

5.2 块存储与文件存储:为ECS提供持久化存储

块存储和文件存储为计算服务提供块级文件级的持久化存储。

  • 块存储(Block Storage)

    • 是什么:一种裸磁盘空间,需要挂载到ECS实例后,由实例的操作系统进行分区、格式化(如ext4, NTFS)后才能使用。
    • 特点 :低延迟、高性能、可随机读写。一块云盘只能挂载到同一可用区的一台ECS实例上
    • 类型
      • ESSD:基于NVMe SSD,性能极强(最高100万IOPS),适用于核心业务、高性能数据库。
      • SSD云盘:高性能SSD盘,性价比高,适用于一般业务系统。
      • 高效云盘:基于SATA HDD,适合中小型数据库、开发测试环境。
    • 用途:为ECS实例提供系统盘和数据盘,存放需要直接读写磁盘块的应用,如数据库。
  • 文件存储(NAS, Network Attached Storage)

    • 是什么:一种可共享的、支持多种协议(NFS/SMB)的文件存储服务。像一个共享网络文件夹。
    • 特点多个ECS实例(甚至跨可用区)可以同时读写同一份文件。容量弹性伸缩,无需预置。
    • 用途内容管理、共享工作目录、日志共享等需要多实例共享访问同一文件集的场景。例如,Web集群共享用户上传目录,容器集群挂载共享配置文件。
特性 块存储 (云盘) 文件存储 (NAS)
访问协议 块设备 (SATA, SCSI, NVMe) 文件协议 (NFS, SMB)
连接性 单ECS实例(同可用区) 多ECS实例/容器(同VPC)
典型用例 数据库、操作系统 共享目录、CI/CD共享、企业文件共享
5.3 数据库选型指南:关系型 vs NoSQL vs 数据仓库

数据库是应用的核心,选型失误将带来巨大的后期改造成本。以下是三大类数据库的选型框架:

  1. 关系型数据库 (RDS)

    • 数据模型:基于表格,结构固定,遵循Schema。
    • 查询语言:SQL。
    • 优势事务ACID特性(原子性、一致性、隔离性、持久性)、强一致性、强大的联表查询。
    • 场景:需要强一致性事务的核心业务系统,如订单、交易、用户账户管理系统。
  2. NoSQL 数据库

    • 数据模型:非表格,结构灵活。
    • 查询语言:非SQL,各有自己的API。
    • 优势高性能、高扩展性、灵活的数据模型
    • 分类与场景
      • 键值存储 (Key-Value) :如 Redis。缓存、会话存储、排行榜。
      • 文档存储 (Document) :如 MongoDB。内容管理系统(CMS)、产品目录、用户配置文件。
      • 列式存储 (Wide-Column) :如 HBase。物联网(IoT)、时序数据。
      • 搜索存储 (Search) :如 Elasticsearch。日志分析、全文搜索。
  3. 数据仓库 (Data Warehouse)

    • 代表:MaxCompute, AnalyticDB (ADB)。
    • 特点专为复杂分析查询(OLAP)设计,海量数据(PB级)处理能力。
    • 场景:商业智能(BI)报表、数据分析和挖掘。

现代应用往往是多模数据库(Multi-Model) 架构。不要试图用一个数据库解决所有问题。例如,核心交易用RDS,缓存用Redis,全文检索用Elasticsearch,海量分析用MaxCompute。

5.4 云原生数据库:RDS (MySQL) 核心功能

阿里云关系型数据库服务(RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。它免去了数据库安装、硬件投入、故障恢复等复杂操作。

以最常用的RDS MySQL为例,其核心优势远超一台自建MySQLECS实例:

  • 高可用性 :默认提供主备架构(一主一备,跨可用区部署),自动故障切换,业务无感知。
  • 读写分离 :只需一键开启,即可自动创建一个或多个只读实例,通过一个独享的读写分离地址,自动将写请求发往主实例,读请求发往只读实例,轻松应对高并发读场景。
  • 自动备份 :支持数据备份和日志备份,可设置备份策略,并支持按时间点恢复(恢复到任意秒级)。
  • 性能优化:提供参数优化建议、SQL审计和优化、慢查询分析等功能。
  • 白屏化管理:监控告警、账号管理、数据库升降配、版本升级等操作均可在线完成,极大简化DBA工作。
5.5 NoSQL之王:Redis版与MongoDB版的应用场景

阿里云提供了完全兼容开源协议的托管式NoSQL服务,让你无需管理数据库服务器。

  • Tair/Redis版

    • 场景缓存 (降低数据库压力,提升响应速度)、会话存储 (分布式Session)、排行榜秒杀
    • 阿里云增强 :提供持久内存机型 (性价比极高)、集群版 (海量数据与高性能)、读写分离版(超高读性能)。
  • MongoDB版

    • 场景内容管理系统游戏用户档案物联网(存储设备状态信息)。
    • 阿里云增强:提供三节点副本集(默认高可用)和分片集群(水平扩展)架构。
实战演练:构建一个读写分离的Web应用(ECS + RDS + OSS)

让我们综合本章知识,构建一个比第一章更健壮、性能更高的Web应用。

目标

  1. Web服务器(ECS)无状态,便于水平扩展。
  2. 用户上传的图片、附件等静态资源存入OSS,减轻服务器负载。
  3. 数据库使用RDS,并配置读写分离,提升读性能。
  4. 通过SLB对外提供服务,实现高可用。

步骤一:创建RDS MySQL实例并初始化

  1. 在RDS控制台创建MySQL实例。
  2. 网络类型 :选择之前创建的prod-vpcdata-vswitch-zonec(数据层子网)。
  3. 系列 :选择高可用版(一主一备)。
  4. 设置数据库管理员账号和密码。
  5. 创建成功后,在"数据库连接"中申请内外网连接地址(内网地址用于ECS访问,外网地址用于本地临时管理)。
  6. 通过DMS或MySQL客户端登录,创建一个名为web_db的数据库。

步骤二:创建OSS Bucket

  1. 在OSS控制台创建一个Bucket,例如web-app-static-<你的账号ID>
  2. 地域:选择与ECS/RDS相同的地域。
  3. 存储类型:标准。
  4. 读写权限:私有(推荐,用户通过API签名或临时Token访问,更安全)。

步骤三:部署并配置Web应用

  1. 创建一台ECS实例,部署在web-vswitch-zonea中。
  2. 在Web应用(如WordPress)的配置文件中(如wp-config.php),修改数据库连接设置:
    • 数据库主机 :填写RDS实例的内网地址(至关重要!通过内网访问,延迟低且免费)。
    • 使用之前创建的数据库名、用户名和密码。
  3. 安装并配置OSS的WordPress插件,将媒体库的上传目标设置为你的OSS Bucket。并在插件中配置具有OSS访问权限的RAM角色的AccessKey(参考第2章实战)。

步骤四:配置RDS读写分离

  1. 在RDS控制台,目标实例的"数据库代理"中,开通数据库代理功能。
  2. 创建一个读写分离地址。该地址会自动实现读写分离。
  3. 在Web应用中,配置两个数据库连接
    • 写连接:指向RDS主实例的内网地址(用于写操作)。
    • 读连接 :指向RDS的读写分离地址(用于读操作)。
    • (许多现代框架,如Laravel,已支持在配置中直接定义读/写连接。)

步骤五:通过SLB访问

  1. 创建一个应用型负载均衡(ALB),监听80端口,并将上述ECS实例添加到后端服务器组。
  2. 将域名解析到ALB的公网IP上。
  3. 现在,用户访问网站时,图片等静态资源从OSS高速下载,数据库读请求被自动分发到只读实例,写请求发往主实例,整个系统的性能和可用性得到了极大提升。

通过本章,不仅了解了各种存储和数据库服务,更掌握了如何将它们有机地组合起来,构建一个专业、健壮的应用架构。

相关推荐
九皇叔叔6 分钟前
【7】SQL 语句基础应用
数据库·sql·mysql
麦聪聊数据2 小时前
能源行业数据库远程运维安全合规实践:Web化平台的落地经验
运维·数据库·sql·安全·数据服务
观测云3 小时前
阿里云 ECS 可观测性最佳实践
阿里云·云计算
NPE~3 小时前
[手写系列]Go手写db — — 第二版
开发语言·数据库·golang·教程·db·手写系列
开开心心就好5 小时前
PDF转长图工具,一键多页转图片
java·服务器·前端·数据库·人工智能·pdf·推荐算法
卡拉叽里呱啦6 小时前
深入理解事务一致性和隔离性
数据库
似水流年 光阴已逝7 小时前
腾讯云重保流程详解:从预案到复盘的全周期安全防护
安全·云计算·腾讯云
liweiweili1267 小时前
基于金庸武侠小说人物关系设计的完整 SQL 语句,包括数据库创建、表结构定义和示例数据插入
数据库·sql·oracle