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


云存储与数据库服务

数据是数字时代的新石油,而存储与数据库服务就是保存和提炼这些石油的“油库与炼油厂”。阿里云提供了从对象、块、文件存储到关系型、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高速下载,数据库读请求被自动分发到只读实例,写请求发往主实例,整个系统的性能和可用性得到了极大提升。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97048.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器网页路径扫描器(脚本)

使用网页路径扫描器可以扫描网页的路径&#xff0c;一些工具如ffuf为在命令行上操作&#xff0c;比较不便&#xff0c;而其他资源不好找到 Website path scanner(Script-tampermonkey) 脚本发布在GitHub&#xff0c;本文章也关联文件资源 GitHub:Website path scanner(Script-…

实战原型模式案例

作者&#xff1a;小凯 分享、让自己和他人都能有所收获&#xff01;&#x1f604; 一、前言 老板你加钱我的代码能飞 程序员这份工作里有两种人&#xff1b;一类是热爱喜欢的、一类是仅当成工作的。而喜欢代码编程的这部分人会极其主动学习去丰富自己的羽翼&#xff0c;也非常喜…

微信小程序餐饮扫码点餐小程序堂食外卖桌台自助下单源码

功能说明&#xff1a;商家助手APP、接单更方便前端页面模版随意挑选&#xff0c;可diy精装设计线下买单餐桌点餐快速下单会员管理订单管理优惠券核销叫号取餐排队叫号商品管理桌位管理数据统计售后订单配送设置推广码硬件设备一、技术架构&#xff1a;PHPUniApp构建高性价比系统…

Linux应用软件编程---网络编程(TCP并发服务器构建:[ 多进程、多线程、select ])

TCP并发服务器构建一、服务器单循环服务器&#xff1a;服务端同一时刻只能处理一个客户端的任务&#xff08;TCP&#xff09;并发服务器&#xff1a;服务端同一时刻可以处理多个客户端的任务&#xff08;UDP&#xff09;二、TCP服务端并发模型1、多进程进程资源开销大&#xff…

重构审计体验!批量生成报表项目底稿的凭证检查表

在审计工作中&#xff0c;我们通过序时账或其他审计软件筛选导出的凭证列表&#xff0c;要如何快速分发给各个报表项目底稿的凭证检查表呢&#xff1f; “TB工具箱2025”正式上线“批量生成凭证表”的功能&#xff0c;通过一些巧妙的设计&#xff0c;使其具备高度的通用性&…

【c++进阶系列】:万字详解二叉搜索树(附源码实现)

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 你可以走得慢&#xff0c;但别回头 1.概念 二叉搜索树&#xff0c;从其名字我们就能知道该数据结构是一个特殊的二叉树&#xff0c;而二…

通过web服务做横向移动

环境配置边缘主机(win10)&#xff1a;192.168.237.140 10.10.90.128内网主机(win7)&#xff1a;10.10.90.129 web服务 -- upload-labs攻击机&#xff1a;vps&#xff08;120.26.114.196&#xff09;windows10windows7假设已经拿下边缘主机win10&#xff0c;vshell上线ipconfig查…

把CentOS 7默认yum源改成腾讯云镜像

步骤计划&#xff1a; 备份原有CentOS-Base.repo文件&#xff0c;防止配置出错可恢复 下载腾讯云提供的CentOS 7镜像源配置文件&#xff08;对应CentOS-Base.repo&#xff09; 清理并生成yum缓存&#xff0c;使新源生效 具体命令 # 备份原有源 sudo mv /etc/yum.repos.d/C…

欧盟《人工智能法案》生效一年主要实施进展概览(二)

文章目录前言三、《关于禁止的人工智能实践指南》1. 整体适用2. 禁止的人工智能系统具体介绍&#xff08;1&#xff09;有害操纵和欺骗类及对脆弱性的有害利用类&#xff08;2&#xff09;社会评分类&#xff08;3&#xff09;个人刑事犯罪风险评估和预测类&#xff08;4&#…

私域电商新范式:开源AI智能名片链动2+1模式S2B2C商城小程序赋能传统行业流量转化

摘要&#xff1a;本文聚焦私域电商领域&#xff0c;指出其并非仅局限于快消品等传统电商行业&#xff0c;多数传统行业同样面临私域流量利用难题。传统行业手握私域流量或优质流量入口&#xff0c;却不知如何有效转化&#xff0c;陷入流量焦虑。在此背景下&#xff0c;开源AI智…

Axios 整理常用形式及涉及的参数

一、axios get请求 //形如 axios.get(url[, config]).then(response > {// 处理响应}).catch(error > {// 处理错误}); //无 config 的情况下&#xff0c; axios.get(https://api.example.com/data).then(response > {// 处理响应}) .catch(error > {// 处理错误})…

深度学习---卷积神经网络CNN

卷积神经网络CNN&#xff08;Convolutional Neural Networks&#xff09;一、图像原理图像在计算机中是一堆按顺序排列的数字&#xff0c;数值为0到255。0表示最暗&#xff0c;255表示最亮。上图是只有黑白颜色的灰度图&#xff0c;而更普遍的图片表达方式是RGB颜色模型&#x…

日志输出触发的死锁问题排查记录

现象描述 错误日志&#xff1a; Found one Java-level deadlock:"http-nio-8083-exec-106":waiting for ownable synchronizer 0x00000005cbfa6b90, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),which is held by "http-nio-8083-exec-10" …

UNIX网络编程笔记:高级套接字编程20-25

广播通信&#xff1a;局域网内的高效信息传播 在局域网通信场景中&#xff0c;广播是一种高效的一对多信息传播方式 。它无需为每个接收者单独建立连接&#xff0c;能一次性将消息送达网段内所有目标&#xff0c;广泛应用于服务发现、网络通知等场景。以下从基础原理到实践应用…

React Native核心技术深度解析_Trip Footprints

React Native 框架详细技术解析 作为前端开发者&#xff0c;理解React Native需要从Web开发的角度出发&#xff0c;了解其独特之处和技术实现。 &#x1f3af; React Native 核心概念 什么是React Native&#xff1f; React Native是Facebook开发的跨平台移动应用开发框架&…

预算管理的“数字围栏“:如何用实时预警终结行政费用超支

作为公司行政主管&#xff0c;每年最让我忐忑的时刻不是年终总结&#xff0c;而是季度财务分析会。当CFO皱着眉头指出行政费用又超支时&#xff0c;那种如坐针毡的感觉至今难忘。行政预算就像一匹难以驯服的野马&#xff0c;明明已经严加管控&#xff0c;却总在年底给我们"…

NTLM哈希深度解析:从原理到安全实践

NTLM哈希深度解析&#xff1a;从原理到安全实践作为一名白帽子黑客&#xff0c;深入理解NTLM哈希机制对保障企业网络安全至关重要。1. NTLM哈希概述 NTLM&#xff08;New Technology LAN Manager&#xff09;是微软推出的一套身份验证协议套件&#xff0c;用于在Windows网络中验…

4-3.Python 数据容器 - 集合 set(集合 set 概述、集合的定义、集合的遍历、集合的常用方法)

集合 set 概述集合用于存储一系列元素集合存储的元素是无序的&#xff0c;不支持索引集合存储的元素是不可以重复的集合存储的元素可以是不同类型的&#xff0c;例如、数字、字符串、甚至是其他集合集合是可变的&#xff0c;在程序运行时可以添加、删除其中的元素一、集合的定义…

验证码请求与缓存问题解决方案

验证码请求与缓存问题解决方案 1.问题描述 请求验证码图片未变化&#xff0c;且未监听到新请求的问题。 2.问题分析 这个问题的根本原因通常是浏览器缓存机制导致的 - 浏览器会缓存相同URL的图片&#xff0c;导致第二次请求时直接从缓存读取而不发送新请求。 3.解决方案思路 在…

安卓接入通义千问AI的实现记录

官网&#xff1a;https://help.aliyun.com/zh/model-studio/use-qwen-by-calling-api#b1320a1664b9a 创建网络请求 创建一个BaseNetworkApi基类用于实现各种拦截器等。 abstract class BaseNetworkApi {fun <T> getApi(serviceClass: Class<T>, baseUrl: String…