Advertisement

数据库基本概念

阅读量:

一. 什么是数据库?

含义: Database遵循着数据结构来进行存储与管理功能的实现体系,在现代信息技术发展中具有重要地位。其起源可追溯至六十年前,在此期间逐步发展完善成为如今广泛应用于各个领域的核心技术基础。从功能层面来看,在实际应用中支持包括插入记录、检索特定信息以及修改现有数据等基本操作;同时也可以被理解为一种系统性地存在于计算机内存中并具备组织化特征的数据集合体。

基本结构:包含三个层级内部模式为基础构成的数据库被称为物理数据库;基于概念模式构成的数据则被定义为概念数据库;外模式构成的数据库则被称为用户数据存储空间。

⑴ 物理 数据层:数据库体系结构中最为基础的部分,在物理存贮设备上实际存储的内容集合即为该层的数据系统;它是未经加工的基本事实信息;这些原始数据需按照预设模式所规定的指令操作进行处理运算,并包含位串、字符以及字等基本元素构成

⑵ 概念 数据层:属于数据库体系结构中的中间层次,在整体逻辑结构中明确各数据项之间的关系及其属性定义,并将这些关系组织成存储对象集合的形式。这种层次涉及的是数据间的全局关联性问题,并不考虑存储介质的具体情况,在数据库管理员视角下构成了整个数据库体系的基础架构框架。

⑶ 用户 数据层:该数据库是个人用户群体实际使用的基础信息资源集合体。它不仅涵盖了单一领域数据内容的存储与管理,还能够整合多个业务模块的相关信息形成统一的数据模型。该数据库体系中各层次间的信息联系主要通过预先定义的数据映射关系实现了不同层次间的数据转换与共享机制。

3. 主要特点:

⑴ 实现数据共享: 该机制允许所有用户均可同时访问数据库中的数据,并通过接口访问数据库以获取所需信息,并支持数据互汇机制。

通过数据库实现数据共享以减少冗余度

⑶ 数据的独立性: 数据的独立性涉及两个方面:一是数据库体系中的数据库与其所使用的应用程序之间实现了分离开;二是无论数据物理结构如何变化都不影响其逻辑结构。

⑷ 数据实现集中控制: 数据库具备对数据实施集中管控及组织的能力,并运用数据模型来描绘各类数据的组织架构以及它们之间的关联性。

⑸数据一致性和可维护性,以确保数据的安全性和可靠性:

**** ①安全性控制:以防止数据丢失、错误更新和越权使用;

②完整性控制:保证数据的正确性、有效性和相容性;

并发控制:该技术旨在同一时间段内使数据实现多路存取,并避免用户间的不正常交互。

⑹ 故障恢复:

二. 数据库的作用意义。

1. 查询迅速、准确,且有多种表达与传输方式。

将数据进行结构化组织并实现统一管理。考虑到数据自身的属性以及不同数据及其文件之间的关联性后发现该方法具有良好的适用性支持便捷的数据查询、检索及处理流程

3. 数据冗余程度较低。数据库系统不仅允许数据面向单个局部应用也能扩展至整体应用体系,在这一过程中大为减少了数据冗余现象的发生频率与规模,并有效地节省了存储空间同时确保了各处的数据高度一致性

4. 具有较强的独立性。数据独立性体现为用户应用程序与存在于数据库中的数据之间相互分离的状态。数据独立性的核心特点及其优势在于无论是在物理层面还是逻辑层面进行结构修改都不会影响到应用程序本身的功能稳定性和运行效率, 这一特点使得应用开发者的软件开发工作量得以大幅降低

数据具有良好的可共享性。存储在数据库中的数据具有良好的可共享性的主要包括系统内部和外部两种类型,并且主要体现在其作为数据库管理区别于手工管理和文件管理方式的核心优势与显著特点上。

三. 数据库的分类

1. 层次式数据库 -- 层次模型

(1). 层次模型的逻辑结构 -- 树形结构

a. 特性:只有一个根节点;其余所有节点都只有一个父节点

b. 表示: 层次模型只能表示“1一M”关系,而不能直接表示“M—M”关系。

在层次模型中存在一种称为'记录型'的节点用于描述实体集合。每个这样的节点既可以拥有单一又可拥有多个的'record 值'。上层的一个'record 值'可能对应下层的一个或多个'record 值'而下层每一个'record 值'只能对应上一层的一个'record 值'。处理层次模型中实体集合之间的多对多联系的方法是通过引入冗余节点来实现

(2). 层次模型的物理结构

a. 顺序法:依照等级将所有的记录排列存储,具体而言是通过物理空间的位置相邻来实现层次顺序。

b. 指针法:各个记录存放时不是按照层次顺序而是采用层次顺序以外的方式连接起来

(3). 层次模型的利弊

该层次模型中的树结构具有明确的层次顺序。为每个节点及其所有子树建立了明确的时间序列关系,并实质上决定了数据访问路径的访问策略

b. 树中父子结点之间仅存在一条直接连接的关系;由此可知,在树结构中任意一个节点都可通过唯一的一条路径从根节点到达。

c. 不能直接表示多对多的联系。

d. 树结点中任何记录的属性只能是不可再分的简单数据类型。

网络式数据库:通过互联网技术实现局域数据库间的互连互通

(1). 数据库的逻辑结构 -- 网状结构

基于网络架构的数据库模型被构建在两个基础'集合结构'(Set Structures)之上。这些结构包括一种类型下的数据集合(A Set of Records)和另一种类型下的关联集合(A Set of Links)。

(2). 数据库原理 --- 一个典型的数据库查询过程包括以下步骤。

a. 用户通过浏览器向网络服务器发送一个查询请求;

b. 服务器基于参数执行相应的CGI(通用网关接口)或API(应用程序接口)程序(即是说网关);

c. CGI或API程序登录到数据库中,按条件进行查询;

e. 数据库返回查询结果;

f. CGI/API程序将查询结果转换为标准的HTML格式,并传递至网络服务器;

g. 网络服务器把包含结果的HTML网页传给浏览器。

(3). 数据库的利弊

a. 扩大了数据资源共享范围。范围可以从局部到全球。

b. 容易实现分布式计算。在网络环境中,各个用户可以根据具体情况合理选择网内的资源,以便快速有效地进行处理。对于大型作业以及大量数据的处理任务,可以通过将任务分解分配到不同的计算机来完成,从而实现对网络资源的均衡利用,显著提升了数据资源的处理效率

c. 数据资源的应用形式具有高度的灵活性。基于网络平台开发的数据库应用系统,在实现功能时可选择不同的技术架构方案。一方面支持以C/S架构为基础的设计模式;另一方面则可基于B/S架构(即浏览器/服务器)进行系统设计与实现;此外该系统还支持多种发布模式以满足不同场景的需求;整个系统的数据应用具有高度可变性

d. 促进跨平台的数据传输与交流。通过构建完善的计算机网络架构,在覆盖范围内的任何地区均可实现对数据库中数据的高效传送。

e. 减少了系统的使用费用并增强了计算机可用性。供所有网络用户共享的是一个网络数据库系统;并非所有使用数据资源的人都拥有数据库系统,并显著降低了对计算机系统的依赖需求;使每台计算机的可用性得到显著提升。

f. 数据库机密性的保护措施未能有效实施。随着数据共享范围的扩大,在线系统对用户权限的管理变得更加复杂,并且网络环境中的数据安全风险显著上升。

3. 关系型数据库

基于关系型数据库模型构建起来的数据库系统,在其运行过程中会运用集合代数等数学概念和技术来操作和管理 database information. 同时它也表现为一种经过系统化管理并具有 formal 定义的一组表. 这种表型结构的本质在于它是承载大量具体 data items 的一种特殊的集合体. 通过多种途径访问或重组这些 data 时,并不需要对原有的 table 结构进行修改或重建.

(1). 逻辑结构与物理结构 -- 二元关系 ,表格,二维数组

对数据的处理几乎全部基于一个或多个关系表格;通过将这些关联的表格进行分类处理并完成相应的合并、连接或选取运算来实现数据库管理。

(2). 分类: 根据类型进行划分: 一类是典型的桌面数据库, 包括以下几种软件工具: Microsoft Access、FoxPro 和 dBase 等; 另一类是基于客户机-服务器架构的数据库系统, 具体包括 SQL Server、Oracle 和 Sybase 等

(3). 常用概念:

关系:也可以视为一张二维表格,在每个关系中都具有一个名称称为表名

元组:可以理解为二维表中的一行,在数据库中经常被称为记录

属性:可以理解为二维表中的一列,在数据库中经常被称为字段

域:属性的取值范围,也就是数据库中某一列的取值限制

一组特定的字段能够唯一标识一个元组。数据库中通常将这样的字段组称为主键。这些字段通常由一个或多个列组成。

关系模式代表对关系的说明。具体来说,其格式为:关系名(属性1、属性2、……、属性N),在数据库中被定义为表结构。

(4). 利弊

a. 容易理解:二维表结构是一个非常接近逻辑世界的概念,在相对于网状或层次结构等其他模型时更容易被理解。

b. 使用方便:通用的SQL语言使得操作关系型数据库非常方便

c. 容易维护:丰富的完整性(包括实体完整性、参照完整性和用户定义的完整性)显著降低了数据冗余程度和数据不一致的风险

e. 高强度读写需求:网站用户的并发性非常高,在传统的关系型数据库中,在这种情况下, 磁盘输入输出操作成为一个主要障碍

f. 大量数据以高效的模式进行读取与写入:网站每日产生的数据数量极为庞大;对于关系型数据库而言,在处理一张包含海量数据的数据表时进行查询操作其效率将显著降低

随着Web server和application server的用户基数及并发访问量持续攀升,在面对同样规模的增长需求时,数据库系统由于其依赖现有硬件配置的特点,在性能提升方面往往无法与Web server和application server相媲美

h. 事务一致性:维护事务一致性会带来较高的资源消耗,在当前的应用开发中发现许多基于Web2.0架构的应用对于事务的一致性要求相对较低

i. 读写实时性:对关系数据库而言,在插入一条记录后立即执行查询操作,则必然能够获取该条记录的信息。这种特性使得读写实时性具有较高的要求。

j. 复杂的SQL指令及其联结方式:对于任何一个处理大量数据的数据网系统而言,在设计数据库时必须避免采用复杂的多表联结查询方案以及涉及复杂数据分析场景下的复杂SQL报表生成操作。

非关系型数据库:非关系型数据库本质上不属于一种数据库类型,而是由多种数据结构化存储方法组成的集合体。

(1). 分类

键-值存储(key-value):键-值数据库类似于传统语言中使用的散列表。被用来通过特定的key来进行插入、检索或删除操作。展现出卓越的性能,并且具备良好的扩展能力。

键值型数据库通常采用哈希表作为核心数据结构。每个哈希表都包含一个唯一的键字段及其对应的数据指针。基于Key/Value模型的设计在IT系统中具有显著优势:操作简便、部署快速且能够处理大量并发请求。

典型产品:Memcached、Redis、MemcacheDB

b. 列存储(Column-oriented)数据库:通过将数据组织成列族的形式进行存储,在一个列族中集中存放那些经常被相关联地进行频繁访问的数据项。这种设计模式通常用于高效处理分布式系统中海量数据的存取需求。

典型产品:Cassandra、HBase

c. 面向文档(Document-Oriented)数据库类似于键值数据库。这类数据模型采用基于版本的文档结构存储信息,并按特定格式组织存储半结构化的文档。

文档数据库将数据以文档形式存储。每个文档都是一个独立的数据单元,在一个表中可以存在多个不同的属性。每个字段都有一个名称及其对应的值,这些值可以是基本的数据类型(如字符串、数字、日期等)或复杂的对象结构(如有序列表和关联对象)。在同一个表中存储的多个字段被视为不同的属性,在实际应用中可以选择使用XML格式或者JSON格式(包括JSON-B扩展),以便高效地组织和管理大量信息。

典型产品:MongoDB、CouchDB

d. 图形数据库:通过图形数据库系统,我们可以将数据以图形形式进行存储。其中每个实体对应一个顶点节点;不同实体之间的关联则通过边的形式连接。

典型产品:Neo4J、InforGrid

四. 目前常用的数据库有哪些,各自利弊。

1. 常见关系型数据库

a. Oracle数据库

ORACLE数据库系统是由美国甲骨文公司提供的以分布式数据库为核心的软件产品组之一,在客户/服务器架构中处于主流地位,并被广泛应用于各个领域。作为通用型的数据库系统,在数据管理方面具有全面的能力;基于完整的关系型架构设计,并且能够实现分布式处理能力。无论从技术类型还是功能特点来看,其设计都非常完善且具有前瞻性。然而,在学习ORACLE知识时需要注意的是:即使只学习了ORACLE知识在一个机型上,在其他各种类型的机器上也能轻松应用

Oracle 12_c 版本引入了全新的多承租方架构,在云端部署和管理中展现出显著优势。这一架构不仅支持便捷的部署操作,并且能够有效地管理和优化云端数据库资源的使用效率。新增一系列创新特性进一步提升了系统的性能与灵活性:例如 Oracle Multitenant 可以迅速整合多个数据库系统,并提供更高的数据压缩效率;结合 Automatic Data Optimization 和 Heat Map 功能,在数据存储与分类方面实现了更高的密度压缩能力。这些技术优势与系统在可用性、安全性和大数据处理方面的显著提升共同作用下,在私有云与公有云环境中形成了一个理想的应用平台

b. MySQL数据库

MySQL(发音为'my ess cue el' ,并非'my sequel') 是一种基于结构化查询语言(SQL)的关系型数据库管理系统(RDBMS)。它是最常用的数据库管理工具之一 。 MySQL 作为一个开放源代码项目的核心组件之一 ,允许任何符合条件的个人或组织在 General Public License 授权下获取并按自身需求对其进行定制 。 由于其高效性与可靠性 MySQL 在无需事务处理的情况下 被 大部分用户普遍认为 是最优的数据存储解决方案 。

c. MariaDB数据库

MySQL开源社区推出的 MariaDB 数据库管理系统是 MySQL 的一个分支项目,在其发布初期即吸引了大量关注与支持。该系统的主要开发团队基于对 MySQL 权限模型的理解与考量,在项目初期就已明确了技术路线:通过采用 GPL 授权模式运营项目代码库以确保长期稳定维护基础。这一决策不仅避免了甲骨文公司潜在收购 MySQL 后带来的闭源化风险影响,也为项目的长远发展奠定了良好基础。该数据库管理系统的发布标志着一个重要的里程碑:其目标是实现完全与 MySQL 平台兼容,在 API 交互界面及命令行操作方式等方面均保持一致特性的同时实现替代品定位。在存储引擎选择上则采用了 XtraDB 替代 MySQL 的 InnoDB 引擎方案以确保更好的性能表现与稳定性提升。整个项目由 MySQL 创始人 Michael Widenius 单独负责技术方案设计并主导实施工作过程;他早前曾以 10 亿美元的价格将自己创立的 MySQL AB 公司出售给 SUSE 公司,在 SUSE 被甲骨文收购后不久 MySQL 的所有者也随之落入 Oracle 集团手中;而这一系列交易背后的关键人物便是 Michael Widenius的女儿 Maria ,她的名字正是 MariaDB 数据库管理系统的命名由来

d. SqlServer数据库

微软开发并推广了基于关系型模型的数据库管理系统(简称DBMS)。最初由三家公司协作开发,在1988年推出了第一个OS/2版本。微软 SQLServer自推出以来持续推出新版本,在1996 year 推出了第六版(SQLServer 6.5),随后在 year 1998 推出了第七版;而微软于 year 2,ooo 发布 SQLServer version number, 在 month March 发布新的 version number, 即 new version number, version name (简称version number)。

e. Access数据库

作为微软将图形用户界面与数据库引擎及软件开发工具整合在一起的产品, Microsoft Office Access充当了一个功能强大的数据库管理系统. 作为OFFICE系列的一部分, Microsoft Access在专业版及其以上版本中独立发行. MS ACCESS通过独特的存储格式将数据存储于专属的数据库引擎Access Jet中. 此外, 该系统还支持直接导入或链接外部数据源(这些数据可能存放在其他应用程序或数据库系统中).

f. 其他不常用数据库

DB2,PostgreSQL,Informix,Syase等。

2. 常见非关系型数据库

a. Memcached(key-value)

这是一个基于分布式架构的快取系统最初由Danga Interactive开发以支持 LiveJournal 网站,并广泛应用于如MediaWiki等软件。它是一个开放源代码的应用程序,并采用 BSD 许可证授权发布。由于 memcached 未配备认证机制和安全控制功能,建议将 memcached 服务器部署在防火墙之后。其 API 采用 32 位循环冗余校验(CRC-32)算法来计算键值并将其分散存储于不同的机器上。当缓存表达到容量上限时,默认情况下新增的数据将按照 LRU(最近最少使用)机制取代已存在的数据条目。尽管 memcached 主要被用作快速存取系统的工具层组件但它无法直接与较慢响应时间的后端数据库集成因此在实际应用中开发者往往需要编写额外的代码来更新 memcached 中的数据。

memcached是由Danga Interactive公司的Brad Fitzpatrick等人发起开发的一项软件,在包括mixi、hatena、Facebook等众多网络服务中发挥着提升Web应用扩展性的关键作用。多数Web应用程序通常将数据存储于关系型数据库(RDBMS)中,并通过服务器从中检索数据以在网页上展示。伴随数据量的增长以及访问流量的集中化,传统的关系型数据库可能会导致性能瓶颈问题:查询延迟增加、响应时间变长以及系统负载过重等负面效果变得显著。为此 memcached 作为一种高性能分布式内存缓存服务器被广泛采用。其核心功能在于缓存数据库查询结果从而减少对数据库的操作次数进而提高动态Web应用程序的速度与可扩展性;由于缓存内容位于内存而非磁盘存储因此必须定期备份以防万一以免造成数据丢失的问题

b. Redis(key-value)

Redis是一种基于键值对的数据存储系统。类似于Memcached这样的缓存技术,Redis也支持多种数据类型包括字符串、链表、集合、有序集合以及哈希类型。这些数据类型的增删操作(push/pop)以及集合运算(交集、并集及差集)等丰富功能都是原子性的。在此基础上Redis还提供了排序功能以满足不同需求。与Memcached类似Redis通过将数据缓存在内存中来提高运行效率但会定期将更新后的数据同步到磁盘或者追加记录文件以保证一致性Master-Secondary同步机制使其具备高性能特点Redis的出现在一定程度上弥补了Memcached这类键值型缓存工具的不足并且可以在一定程度上替代关系型数据库它提供了Java C/C++ C# PHP JavaScript Perl Objective-C以及Python等多种客户端编程语言使用非常便捷

Redis采用主副节点同步机制。存储设备的数据可通过多台副节点实现同步连接,并这些副节点可能与多个其他副节点相连,并可作为主节点参与复制过程。从而实现了单层树复制结构。有意识或无意识地使用存储设备进行 writes 操作是Redis的基本功能之一。发布/订阅机制已被完全实现:这意味着客户端可以有意识或无意识地订阅相关频道并接收全部消息发布记录。通过同步设计提升了读取操作的扩展性以及数据冗余度。

c. MongoDB(Document-oriented)

MongoDB是一种基于分布式文件存储机制的数据库系统。采用C++语言开发。专为Web应用设计提供高扩展性和高性能的数据存储解决方案。处于关系型和非关系型数据库之间位置,在非关系型数据库中是功能最为丰富且最具接近性于传统的关系型数据库的一种。其数据结构设计极为灵活,并遵循BSON格式从而能够高效地存储复杂的混合类型数据。其核心优势在于强大的查询语言系统,并且支持对数据建立索引

d. Cassandra(Column-oriented)

Cassandra是一种混合型的非关系型数据库系统,在功能设计上与其竞争对手Dynamo存在显著差异。尽管它提供了更为丰富的功能选项,并支持包括JSON在内的复杂数据类型存储(类似于MongoDB),但在实际的支持覆盖率方面略逊于后者(MongoDB是一种介于传统关系型数据库和非关系型数据库之间的开源解决方案,在支持复杂数据结构方面具有独特优势)。该系统最初由Facebook承担开发工作,在经历了技术转型后成功转变为开源项目,并逐渐发展成为网络社交和云计算领域的理想选择。它通过融合亚马逊专有的完全分布式的Dynamo技术基础以及Google BigTable基于列族的数据模型架构,在P2P去中心化存储策略的基础上实现了高度灵活的数据管理能力

e. 其他不常用非关系型数据库

HBase、MemacheDB、BerkeleyDB、Tokyo Cabinet

3. 关系型数据库与非关系型数据的区别

非关系型数据库的本质:这类数据库产品旨在作为传统关系型数据库功能的缩减版。它通过缩减那些未被频繁使用的功能模块,在不严重影响核心业务逻辑的前提下,从而显著提升了产品的性能水平。

b. 价格。目前大多数主流的非关系型数据库通常无需付费即可使用。然而知名的关系型数据库如Oracle、DB2、MSSQL等则需要付费订阅或许可。值得注意的是Mysql虽然免费但其性能和稳定性需经过额外测试才能确认其适合生产环境的应用

c. 功能。在实际开发过程中存在大量业务需求这些需求往往并不需要依赖传统的完整关系型数据库功能而非关系型数据管理技术足以满足基本应用需求。因此在这种情况下采用性能更高成本更低的非关系型数据库系统显然是更为明智的选择

全部评论 (0)

还没有任何评论哟~