【笔记】大数据技术之云数据库存储(六)

云数据库

概述

  • 优势
    • 按需服务
    • 随时服务
    • 通用性
    • 高可靠性
    • 廉价
    • 超大规模
    • 动态可扩展
    • 安全
    • 易用
    • 高性能

系统架构

UMP系统概述

  1. 保持着单一的对外访问入口
  2. 清楚单点故障,保证服务的高可靠性
  3. 具有良好的可伸缩性,能够动态地增加/减少计算资源
  4. 实现资源之间的相互隔离
  • 问题:
  1. 单个用户消耗过多
  2. 导致对其它用户产生影响

组件

  • Mnesia

    1. 分布式数据库管理系统
    2. 支持事务,支持透明的数据分片,利用两阶锁实现分布式事务,可以线性扩展到至少五十个节点
    3. 数据库模式可以在运行时动态重配置
  • RabbitMQ

    • 消息队列产品:异步传输
  • Zookeeper

    1. 作为全局的配置服务器
    2. 提供分布式锁
    3. 监测所有MySql实例
  • LVS Linux Virtual Server

    1. UMP系统借助于LVS来实现集群内部的负载均衡
    2. LVS集群采用IP负载均衡技术和基于内容请求分发技术
    3. 调度器是LVS集群系统的唯一入口点
    4. 整个服务集群的结构对客户是透明的
  • Controller上运行Mnesia分布式数据库

  • 避免单点故障->设置多个Controller

  • web控制台

  • Proxy服务器-MySQL客户端/用户认证信息/资源配额限制/后台MySQL实例的地址

  • Agent服务器:管理MySQL实例

  • 日志分析服务:记录慢查询

  • 信息服务器:系统运营数据-用户连接数/每秒查询数/M有SQL实例的进程状态

  • 愚公系统

    • 数据迁移
    • 不停机的情况下进行数据的迁移扩展等
      【笔记】大数据技术之云数据库存储(六)_第1张图片

UMP系统功能

  • 容灾
  1. 基础功能
  2. 创建两个MySQL:实例->主->从
  3. 主库故障过程:Controller修改路由器->主库标记不可用-RabbitMQ->Proxy服务器
  4. 主库恢复
    【笔记】大数据技术之云数据库存储(六)_第2张图片
  • 读写分离
  1. 负载均衡
  2. SQL语句查询:
    • 写操作,直接发送到主库
    • 读操作,被均衡地发送到主库和从库上执行
  • 分库分表:支持对用户透明的分库分表

    • Proxy服务器解析用户SQL语句,提取出重写和分发SQL语句所需要的信息
    • 对SQL语句进行重写,得到多个针对相应M有SQL实例的子语句,分发到对应的MySQL实例上执行
    • 接受来自各个M有SQL实例的SQL语句执行结果合并得到最终结果
  • 资源管理:采用资源池机制

  • 资源调度:分用户等级分配MySQL实例

  • 资源隔离
    【笔记】大数据技术之云数据库存储(六)_第3张图片

  • 数据安全

    • SSL数据库连接
    • 提供连接白名单
    • 记录用户操作日志
    • SQL拦截:拦截例如SELECT * FROM TABLE

Amazon和云计算

  • AWS(Amazon Web Service)
  • 计算服务:EC2(云中虚拟机)/MapReduce
  • 存储服务
  • 工具和服务
  • 云数据库
    • SimpleDB
      • 第一个键值数据库
      • 记录由主键和多个属性组成
      • 进行多副本存储,支持高并发读取
      • 更新操作只能针对主副本进行,但可以快速传播到其他副本,提供最终一致性
      • 更适合存储小型/碎片化的零散数据
    • DynamoDB
      • 一致性读的功能
      • 根据主键去操作记录不允许进行批量更新
      • DynamoDB全部采取固态盘进行存储
    • RDS:
      • MySQL
      • Oracle
      • Aurora
      • SQL Server
      • PostgreSQL
      • MariaDB
        【笔记】大数据技术之云数据库存储(六)_第4张图片

微软SQL Azure

  • SQL Server实例
  • 全局分区管理器:分区信息
  • 协议网关:接受外部请求
  • 分布式基础部件

实践概念

  • RDS Relational Database Service

数据库学习

Redis

进入根目录(./64bit)

  1. 先运行一个服务端
redis-server redis.conf
  1. 在运行一个客户端
redis-cli --raw # 后面的参数是为了get数据中文不乱码
  1. 增删改查
# set table_name:_id:_label_name value
set Student:95001:Sname 小明
# del table_name:_id:_label_name
del Student:95001:Sname
# 覆盖语句
# get table_name:_id:_label_name
get Student:95001:Sname

实际操作

实验室传送门

你可能感兴趣的:(大数据技术学习笔记)