第一篇:开篇介绍篇

Posted flying_1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一篇:开篇介绍篇相关的知识,希望对你有一定的参考价值。

目录

 

数据库系统的作用

数据库系统的性能/表现

硬件

软件

数据库调优、崩溃恢复

硬件

基本硬件

磁盘访问

SSD(固态驱动器/固态磁盘)

存储架构

基本架构

多核架构

数据库系统类型

简单文件

关系型数据库

面向对象数据库

No-SQL

No-SQL数据库类型

键值对数据库系统

数据库架构

中心化

分布式

WWW万维网

网格

P2P

Cloud computing


数据库系统的作用

  • 安全可靠的数据存储
  • 能够非常有效地检索和处理数据。

数据库系统的性能/表现

硬件


– 处理器的速度
– 处理器数量
– 磁盘驱动器数量和 I/O 带宽
– 主存储器(内存)的大小
– 通讯网络
– 架构类型

软件


– 用于给定应用程序的数据库技术类型。

数据库调优、崩溃恢复


– 索引
– 数据重复
– 共享数据等

硬件

基本硬件

Tracks: 磁道; Actuator Arm:执行臂; platter:盘片; sector:扇区

磁盘访问

磁盘访问时间 = 寻址时间 + 旋转时间 + 传输长度/带宽

SSD(固态驱动器/固态磁盘)

• 没有移动部件,如硬盘驱动器 (HDD:也就是大家所说的机械硬盘)
• 硅而非磁性材料
• 无寻道/旋转延迟
• 没有像 HDD 那样的启动时间
• 静默运行
• 随机访问通常低于 100 微秒,而 HDD 为 2000 - 3000 微秒
• 相对非常昂贵。

磁盘访问时间 = 传输长度/带宽

存储架构

基本架构

芯片上有处理器,寄存器和L1缓存, 芯片外有L2缓存和主存

多核架构

 

如上图,L1,2,3都在芯片上

缓存命中率= 查询在缓存中的次数/查询总次数

(内存)存储访问时间= H*C + (1-H)*M

H:缓存命中率

C:缓存访问时间

M:主存访问时间

同理,磁盘缓冲访问时间 = HB*BC+(1-HB)*D

HB:磁盘缓冲命中率

BC:磁盘缓冲访问时间

D:磁盘访问时间

数据库系统类型

简单文件作为纯文本文件。 每行包含一条记录,字段由分隔符(例如,逗号或制表符)分隔
关系型数据库作为由行和列组成的表(关系)的集合。 主键用于唯一标识每一行。
面向对象直接以“对象”形式存储的数据(如 OOP)
No-SQL非关系 - 数据库建模而不是表格关系。 涵盖广泛的数据库类型。

接下来会挨个讨论:

简单文件

• 通常对于简单的应用程序非常快,但对于复杂的应用程序可能会很慢
• 可能不太可靠
• 应用依赖优化
• 很难维护(并发问题)
• 许多必需的特性(存在于关系数据库中)需要合并——不必要的代码开发和不可靠性的潜在增加

关系型数据库

• 非常可靠
• 独立于应用程序的优化
• 非常适合许多应用程序,由于大型主内存机器和 SSD,速度非常快。
• 一些 RDB 还支持面向对象模型,例如 Oracle、DB2 和 XML 数据+查询
• 对于一些简单的应用程序可能会很慢

面向对象数据库

• 直接存储为对象,而不是表
• 可能同时包含数据(属性)和方法——比如 OOP
• 在某些应用程序上可能会很慢
• 可靠的
• 有限的应用程序独立优化
• 非常适合需要复杂数据的应用
• 不幸的是,许多商业系统的起步并没有在RDB 技术的力量下存活下来,基本上从市场上消失了。

No-SQL

• 灵活/无固定模式(与 RDB 不同)
• 提供一种机制,用于存储和检索以表格关系以外的方式建模的数据
• 设计简单,应线性缩放
• NoSQL 有妥协的一致性并允许复制。
• 大多数 NoSQL 数据库提供“最终一致性”,这可能会导致从旧版本读取数据,这种问题称为过时读取

No-SQL数据库类型

key valueRedis Server
Document-basedMongoDB,CouchDB
Column-basedHBase
Graph-basedNeo4j

键值对数据库系统

将数据存储为键值对的集合,其中每个键都是唯一的.

为什么有用 - 许多应用程序不需要事务处理的表达功能——例如 Web 搜索、大数据分析可以使用 MapReduce 技术。

• 可以看作是一种 NoSQL 数据库
• 用于构建非常快速、高度并行的大数据处理 - MapReduce 和 Hadoop 就是示例
• 仅在键值对级别(行更新)进行原子更新。

数据库架构

中心化数据存储在一个地点
分布式数据存储在不同地点的服务器
WWW存储在世界各地
网格类似分布式,但每个节点管理自己的资源; 系统不作为一个整体。
P2P像grid,但是节点可以随意加入和离开网络
Cloud网格的泛化,但是资源是按需访问

中心化

• 数据集中在一处
• 系统管理简单
• 优化过程通常非常有效
• PC/集群计算/数据中心就是这方面的例子

分布式

• 数据分布在不同位置的多个节点上
• 节点通过网络连接
• 系统提供并发、恢复和事务处理
• 系统管理非常困难——通常只有一个资源管理器
• 崩溃恢复很复杂
• 通常存在数据复制——潜在的不一致

WWW万维网

• 数据存储在多个位置
• 多个数据所有者 - 不确定数据可用性或一致性
• 优化过程通常非常无效
• 不断发展的数据库技术——除了 XML/http 和一些访问数据的协议之外,没有制定任何标准
• 安全性可能是一个潜在问题
• 交易的概念更难执行

网格

• 非常类似于分布式数据库系统
• 数据和处理在可能在地理上分开的一组计算机系统之间共享。
• 通常为特定目的而设计——例如,科学应用
• 此类系统的管理由系统的每个所有者在本地完成
• 此类系统的可靠性和安全性没有得到很好的开发或研究。
• 网格系统模型与云计算模型相比或多或少已经过时

P2P

• 数据和处理在一组计算机系统之间共享,这些计算机系统可能像网格数据库系统一样在地理上分开
• 与网格数据库不同,计算机节点可以随意加入和离开网络 => 设计事务模型要困难得多
• 通常设计用于特定用途——例如 科学应用
• 此类系统的管理由数据所有者完成

Cloud computing

• 云计算为可通过 Internet 访问的数据和设备提供在线计算、存储和一系列新服务。
• 用户为服务付费,就像电话服务、电费等。
• 以最低的基础设施成本开发应用程序

以多种形式提供的云服务:
• Iaas – 基础设施即服务(提供虚拟机)
• Paas – 平台即服务(提供 Linux、Windows 等环境)
• Saas – 软件即服务(特定应用程序,如 RDB、邮件等)

关于数据库硬件部分的介绍就到这里了,辛苦大家观看,有问题欢迎随时评论交流。

 

 

 

以上是关于第一篇:开篇介绍篇的主要内容,如果未能解决你的问题,请参考以下文章

第一篇:开篇介绍篇

Python学习基础篇第一篇——快速入门(适合初学者)

读书笔记:《如何阅读一本书》(暂定第一篇第二篇)

开篇第一篇

Lua从青铜到王者基础篇第一篇:Lua初始教程和环境安装

kinect2.0 基础篇第一篇 用C#在Visual Studio上编写关闭彩色图像的三色通道的某个通道