zoukankan      html  css  js  c++  java
  • [每天五分钟,备战架构师-10]数据库系统

    事务管理

    事务是数据库系统运行的基本工作单位,相当于操作系统中的进程,事务具有ACID特性。从用户的角度来看,事务中的操作要么都做,要么都不做。

    • 原子性 Atomicity
    • 一致性 Consistency
    • 隔离性 Isolation,表示不能被其他事务干扰
    • 持久性 Durability,一旦提交改变就是永久性的

    处理并发控制 Concurrency

    多个用户对同一数据进行并发操作时,如果没有控制,可能会产生丢失更新、读到过时的数据(不一致分析问题)、读到脏数据(依赖于未提交更新的问题)的情况。并发控制的主要方法是采用封锁技术,有两种类型:排他型封锁、共享型封锁。

    • 排他型封锁(简称X封锁)。如果事务T对数据A实现了X封锁,那么只允许T读取修改数据A,其他事务需等T解除X封锁后,才能进行后续动作。
    • 共享型封锁(简称S封锁)。X封锁要求太严,于是产生S封锁。如果事务T对数据A实现了S封锁,那么允许事务T读取数据A,但不能修改数据A,在所有S封锁解前不允许任何事务

    处理并行控制 Parallelism

    并行控制主要通过封锁协议来进行处理。

    • 一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
    • 二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。
    • 三级封锁协议。一级封锁协议加上事务T在读取R之前先对其加S锁,直到事务结束才释放。
    • 两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。

    死锁问题

    采用封锁方法可以防止数据不一致,但是会带来死锁问题。死锁的避免一般有预防法和解除法。

    故障与恢复

    数据库的故障主要分为4类:

    • 事务故障。事务未能正常终止被撤销的情况。
    • 系统故障。事务以非正常方式终止的情况,此时内存信息丢失。
    • 介质故障。物理存储介质的故障,可能性虽低,但破坏性大。
    • 计算机病毒。

    针对不同的故障,可以采用不同的恢复策略:

    • 事务故障恢复。应对未完成事务进行撤销,系统自动完成恢复。
    • 系统故障恢复。数据库根据日志,在重新启动时对事务进行撤销,对重做队列事务进行重做。
    • 介质故障恢复需要依赖备份的副本,将数据库恢复到最近一次备份时的状态,会丢失数据。
    • 具有检查点的恢复技术。
      大型数据库系统,例如Oracle提供了安全机制保证,但是小型的数据库并非都有相应的功能,有时需要人工辅助,保证数据库的安全和恢复。

    备份与恢复

    为应对数据库损坏的可能性,需要指定合适的备份和恢复计划。备份计划制定的原则包括:

    • 保证数据丢失得尽量少或完全不丢失
    • 备份和恢复时间尽量短,保证系统最大得可用性

    根据备份内容,分为物理备份和逻辑备份。根据效率,分为完全、增量、累积三种备份方式。

    分布式数据库

    概念

    分布式数据库系统是相对于集中系统而言的,确切的含义是通过数据库技术与网络技术相结合,由一组数据组成,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力,成为场地自治,它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。

    负责分布式数据库的建立、查询、更新、复制、管理和维护的软件,称为分布式数据库管理系统(Distributed Database Management System,DDBMS)。

    分布式数据库系统具有以下几个特点:

    1. 数据的分布性
    2. 统一性。表现在数据逻辑上的统一性和数据管理上的统一性。
    3. 透明性,用户无须关心数据存放的位置。

    体系机构

    分布式数据库系统的模式有6个层次:

    1. 全局外模式,是全局应用的用户视图
    2. 全局概念模式,定义分布式数据库中数据的整体逻辑结构
    3. 分片模式
    4. 分布模式
    5. 局部概念模式
    6. 局部内模式,类似于集中式数据库系统中的内模式

    并行数据库系统

    对比互联网领域的技术发展路径来看,目前基本上看不到并行数据库系统使用的场景。教材中提到的Sequent系统在网上也是资料寥寥,建议可以直接略过这一节了。但是后面提到的并行处理技术,可能和目前的大数据处理、人工智能平台有结合点,感兴趣的可以自己研究下。

    数据仓库

    数据仓库的概念:Data Warehouse 是一个面向主题的、集成的、相对稳定的、且随时间变化的数据集合,用于支持管理决策。

    数据仓库的结构包括:

    • 数据源
    • 数据的存储与管理
    • OLAP服务器
    • 前端工具,主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具等

    参考资料

    1. 并发与并行的区别
    2. Sequence database
    3. Sequent Computer Systems
  • 相关阅读:
    vim字符串替换命令
    Android中View的事件分发机制——Android开发艺术探索笔记
    jQuery源代码框架思路
    C指针——C语言手记
    Python基础二--基本控制语句
    C++中的链式操作
    求一个字串中最长的连续字符串
    C# -- 推断字符能否转化为整形
    Loadrunner检查点使用总结
    LoadRunner设置检查点的几种方法介绍
  • 原文地址:https://www.cnblogs.com/cocowool/p/ruankao_database.html
Copyright © 2011-2022 走看看