开发者社区> 问答> 正文

多结构数据存储


OSS 是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。RDS 可以和 OSS 搭配使用,组成多类型数据存储解决方案。
例如,当业务应用为论坛时,RDS 搭配 OSS 使用,注册用户的图像、帖子内容的图像等资源可以存储在 OSS 中,以减少 RDS 的存储压力。

代码示例


OSS 与 RDS 搭配使用示例。


  1. 初始化 OssApi。[backcolor=transparent] [backcolor=transparent]from[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]oss_api [backcolor=transparent]import[backcolor=transparent] [backcolor=transparent]*
  2. [backcolor=transparent] endpoint[backcolor=transparent]=”[backcolor=transparent]oss[backcolor=transparent]-[backcolor=transparent]cn[backcolor=transparent]-[backcolor=transparent]hangzhou[backcolor=transparent].[backcolor=transparent]aliyuncs[backcolor=transparent].[backcolor=transparent]com[backcolor=transparent][backcolor=transparent]  
  3. [backcolor=transparent] accessKeyId[backcolor=transparent],[backcolor=transparent] accessKeySecret[backcolor=transparent]=”[backcolor=transparent]your id[backcolor=transparent]”,”[backcolor=transparent]your secret[backcolor=transparent]
  4. [backcolor=transparent] oss [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]OssAPI[backcolor=transparent]([backcolor=transparent]endpoint[backcolor=transparent],[backcolor=transparent] accessKeyId[backcolor=transparent],[backcolor=transparent] accessKeySecret[backcolor=transparent])

新建 Bucket。
  1. [backcolor=transparent] [backcolor=transparent]#设置bucket权限为私有
  2. [backcolor=transparent] res [backcolor=transparent]=[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]create_bucket[backcolor=transparent]([backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent]"private"[backcolor=transparent])
  3. [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"%s\n%s"[backcolor=transparent] [backcolor=transparent]%[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]status[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]read[backcolor=transparent]())

上传 Object。
  1. [backcolor=transparent] res [backcolor=transparent]=[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]put_object_from_file[backcolor=transparent]([backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]object[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"test.txt"[backcolor=transparent])
  2. [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"%s\n%s"[backcolor=transparent] [backcolor=transparent]%[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]status[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]getheaders[backcolor=transparent]())

获取对应 Object。
  1. [backcolor=transparent] res [backcolor=transparent]=[backcolor=transparent] oss[backcolor=transparent].[backcolor=transparent]get_object_to_file[backcolor=transparent]([backcolor=transparent]bucket[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]object[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"/filepath/test.txt"[backcolor=transparent])
  2. [backcolor=transparent] [backcolor=transparent]print[backcolor=transparent] [backcolor=transparent]"%s\n%s"[backcolor=transparent] [backcolor=transparent]%[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]status[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]getheaders[backcolor=transparent]())

ECS 应用代码中,RDS 中存储了每个用户的 id,而用户对应的头像资源存储于 OSS 中,以简单的 python 代码为例:
  1. [backcolor=transparent]```
  2. [backcolor=transparent]#!/usr/bin/env python
  3. [backcolor=transparent]from oss.oss_api import *
  4. [backcolor=transparent]endpoint=”oss-cn-hangzhou.aliyuncs.com”  
  5. [backcolor=transparent]accessKeyId, accessKeySecret=”your id”,”your secret”
  6. [backcolor=transparent]oss = OssAPI(endpoint, accessKeyId, accessKeySecret)
  7. [backcolor=transparent]user_id = mysql_client.fetch_one(sql)#从RDS中查找用户的user_id
  8. [backcolor=transparent]#获取用户头像并下载到对应路径
  9. [backcolor=transparent]oss.get_object_to_file(bucket, object, your_path/user_id+’.png’)
  10. [backcolor=transparent]#处理用户上传头像
  11. [backcolor=transparent]oss.put_object_from_file(bucket, object, your_path/user_id+’.png’)
  12. [backcolor=transparent]```

展开
收起
云栖大讲堂 2017-10-18 14:08:19 1539 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
存储分层企业数据存储类型选择与优化 立即下载
为流处理世界重新设计的存储 立即下载
HBase2.0重新定义小对象实时存取 立即下载