数据与信息

数据

( Data)是观察事物的结果,是对事物的性质、状态及相互关系进行的物理组合。数据不仅可以是狭义上的数字,而且可以是具有一定意义的文本、数字符号等。图形、图像、视频、音频,也是对客观事物的属性、数量、位置及其相互关系的抽象表示,也属于数据。例如,“0,1,2,…”“阴、气温下降”“学生的档案记录”“货物的运输情况”等都是数据。

在计算机科学中,数据是所有能输入计算机并被计算机程序处理的数字、字母、符号和模拟量等的总称。现代计算机存储和处理的对象十分广泛,表示这些对象的数据也随之变得越来越复杂。

信息与数据既有联系又有区别。数据是信息的表现形式和载体,而信息是数据的内涵。信息加载于数据之上,对数据有解释的作用。数据和信息是不可分离的,信息依赖数据来表达,数据则生动具体地表达出信息。

数据是符号,是物理性的;信息是对数据进行加工处理的结果,会对决策产生影响,是逻辑性和观念性的。

人们在购物网站挑选商品,用手机预约酒店和查看当地天气,在家预约挂号,数据中心有数以万计的服务器将信息汇总,通过电子设备呈现到用户面前,这些服务器构成庞大的数据库系统,将资源整合连接。数据库系统( Database System)是由数据库及其管理软件组成的系统。用户可将数据库视为电子化的书柜(存储电子书籍的地方),可以对书柜中的数据进行增加、删除、修改、查找等操作。图所示为机架式服务器。

服务器与机柜的图片

image.pngimage.png

数据库的系统构成

庞大的数据库系统不仅提供了数据存储能力,而且为数据的运算提供了有力的支持,使人们的上网体验得到了提升。数据库系统主要由存储单元、硬件、软件和人员这四部分构成,如图所示。

image.pngimage.png

1.存储单元

数据库中的数据按一定的数学模型组织、描述和存储,具有极小的冗余、较高的数据独立性和易扩展性,并可为各种用户共享。

2.硬件

数据库系统的硬件组成包括构成计算机系统的各种物理设备, 像 CPU、 内存和磁盘这些必要的硬件设施,当然,空调、应急电源、传感器等也都包括在系统之内。硬件的配置应满足整个数据库系统的需求。

3.软件

数据库系统的软件包括操作系统、数据库管理系统及应用程序。数据库管理系统( DatabaseManagement System, DBMS)是数据库系统的核心软件,在操作系统的支持下工作,科学地组织和存储数据,高效获取和维护数据。其主要功能包括数据定义、数据操纵、数据库的运行管理和数据库的建立与维护。

4.人员

数据库系统的正常运行离不开人员的维护和优化, 数据库系统只有在专业人员的手中才能发挥其出色的性能。根据不同的数据库岗位职责,人员可划分为三类,如表所示。
image.png

数据库系统的特点

数据库系统的结构化使数据管理更加方便,同时数据库系统丰富的接口可以与外界应用进行数据沟通与交换。数据库系统的特点如下。

1.实现数据共享

数据共享是指所有用户可以同时存储和读取数据库中的数据,也是指用户可以使用各种方式通过接口来调用数据库。

2.减少系统和数据的冗余

和文件系统相比,数据库系统实现了数据共享,从而避免了由用户各自建立应用文件造成的大量数据重复和系统冗余,保持了数据的一致性,性能更加稳定。

3.数据实现集中控制

相对于文件系统中数据处于分散状态,同一用户或不同用户在处理数据过程中,文件之间无关系的管理方式,数据库系统可对数据进行集中控制和管理,并通过数据模型来表示各种数据和组织之间的联系。

4.保持数据的安全、完整合并发

数据库系统可以实现安全性控制(防止数据丢失、错误更新和越权使用)、完整性控制(保证数据的正确性、有效性和相容性)、并发控制(既能在同一时间周期内允许对数据实现多路存取,又能防止用户之间的不正常交互)。

5.故障恢复

数据库管理系统可以实现数据的监控和定期备份,可及时发现故障和修复故障,从而防止数据被破坏。即使在数据丢失的情况下,也可以将备份的数据恢复到相邻的备份节点,减少经济损失

数据库的类型

数据建模

数据模型是科学研究的一种重要方法,模型可以形象直观地反映出事物的结构与特点,方便理解与记忆。将客观事物抽象为数据模型,是一个逐步抽象转化的过程。计算机领域常见的数据模型有以下四种。

1.层次模型

数据库层次模型就像一棵树,主干上有着不同的分支,描述一对多的层次关系非常自然直观,容易理解。这种模型为数据库系统提供了良好的完整性支持,如图所示。
image.png
层次模型的主要缺点:对于非层次关系,如多对多关系、一个节点具有多个父节点等,使用层次模型表示容易出现关系混乱;对插入和删除操作的限制比较多;查询子节点必须经过父节点,容易造成查询时间延长从而影响性能。

2.网状模型

在实际开发中,事物之间的联系更多的是非层次关系,用层次模型表示很不直接,网状模型则可以解决这一弊端。网状模型就像是一张蜘蛛网,各个节点相互连接。在数据库中,满足以下两个条件的数据模型称为网状模型。
( 1)允许一个以上的节点无父节点;
( 2)一个节点可以有多于一个的父节点。
从以上定义可以看出, 网状模型具有比层次模型更复杂的网状结构,如图所示。

image.png

3.关系型模型

虽然网状模型和层次模型已经可以很好地解决数据的集中和共享问题,但它们在数据独立和抽象级别上仍有很大欠缺。关系型模型可以解决它们在数据库存取时仍然需要明确数据的存储结构、指出存取路径等问题。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过表格分类、合并、连接或选取等运算来实现数据的管理。本书所讲的 MySQL 就采用了关系型模型的结构。关系型模型如表所示。
image.png

4.面向对象模型

面向对象模型是一种新兴的数据模型,它以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。与传统的数据库(如层次数据库、 网状数据库或关系型数据库)不同,面向对象数据库适合存储不同类型的数据,如图像、音频、视频、文本、数字等。面向对象模型具有强大的语义表达能力,能够精确地描述数据、数据之间的联系和完整性约束条件,这使得面向对象模型在数据库和数据集成中的应用越来越广泛。面向对象模型如图所示

image.png

关系型数据库

关系型数据库是指采用关系型模型来组织数据的数据库。关系型数据库采用了关系对应的表现形式,以行和列的形式存储数据,就像是一组二维表格,便于用户理解。每一列代表着不同的选项,每一行代表着不同的数据。行与列组成的区域被称为表,一组表组成了数据库。用户可以通过 SQL语句或者索引等方式来查询、检索数据库中的数据。

关系型数据库特点

关系型数据库的特点体现在以下几个方面。

( 1)存储结构

关系型数据库按照结构化的方法存储数据,每个数据表的行列都必须对应相应的字段(也就是先定义好表的结构), 再根据表的结构存入数据。
因为数据的形式和内容在存入之前就已经定义好了,所以整个数据表的可靠性和稳定性都比较高。事先定义表结构也带来了相应的问题,就是一旦存入数据,再要修改数据表的结构就会十分困难。

( 2)扩展方式

由于关系型数据库将数据存储在数据表中,因此数据操作的瓶颈就出现在多张数据表的操作中,而且数据表越多问题越严重。要缓解这个问题,只能提高处理能力,也就是选择速度更快、性能更高的计算机,但拓展空间显然非常有限,也就是说,关系型数据库只具备纵向扩展能力。

( 3)查询方式

关系型数据库采用结构化查询语言( Structured Query Language, SQL)来对数据库进行查询。SQL 早已获得了各个数据库厂商的支持,成为数据库行业标准,它支持数据的增加、查询、更新、删除操作,具有非常强大的功能。 SQL 可以采用类似索引的方法来加快查询操作。

( 4)事务性

关系型数据库强调 ACID 规则:原子性( Atomicity)、一致性( Consistency)、隔离性( Isolation)、持久性( Durability)。它可以满足对事务性要求较高或者需要进行复杂数据查询的任务需求,而且可以充分满足数据库操作的高性能和操作稳定性的要求。 关系型数据库强调数据的强一致性,可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以回滚事务。

( 5)读写性能

关系型数据库十分强调数据的一致性,并为此降低读写性能,付出了巨大的代价。虽然关系型数据库存储数据和处理数据的可靠性很不错,但一旦面对海量数据的处理,效率就会变得很低,特别是遇到高并发读写的时候,性能会下降得非常厉害。关系型数据库诞生已有 40 多年了,从理论产生到实现产品,一直有很多厂商在开发自己的关系型数据库。

2.关系型数据库产品

( 1) Oracle 数据库

1979 年, Oracle(甲骨文, 前身叫 SDL)公司引入了第一个商用 SQL 关系数据库管理系统。 Oracle公司是最早开发关系型数据库的厂商之一,其产品支持最广泛的操作系统平台。

目前 Oracle 关系型数据库产品占有很大市场比例。甲骨文公司商标如图所示。
image.png
Oracle 数据库主要应用在传统大企业、政府机构、金融机构、证券机构等。

( 2) SQL Server 数据库

Microsoft SQL Server 是微软公司开发的大型关系型数据库系统。 SQL Server 可以与 Windows 操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都能得到较大的提升。对于在 Windows 平台上开发的各种企业级信息管理系统来说,不论是 C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构, SQL Server 都是一个很好的选择。 SQL Server 的缺点是只能在 Windows系统下运行。 SQL Server 图标如图所示。
image.png
SQL Server 数据库主要应用在部分电商和使用 Windows 服务器平台的企业。

( 3) Access 数据库

Access 是入门级小型桌面数据库, 性能和安全性都很一般, 可供个人管理或小型网站使用。Access
不是数据库语言,只是一个数据库程序。 Access 数据库图标如图所示。
Access 数据库早期应用于小型程序系统 ASP + Access、系统留言板、校友录等
image.png

非关系型数据库

非关系型数据库也被称为 NOSQL( Not Only SQL)数据库。它的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。非关系型数据库的数据存储不需要固定的表结构,一般情况下也不存在对数据的连续操作。相对于关系型数据库,非关系型数据库在大数据存取上具备无法比拟的性能优势。
常见的非关系型数据库产品有以下 3 种。

1.Memcached

Memcached 是一个开源的、高性能的、具有分布式内存对象的缓
存系统。通过它可以减轻数据库负载, 加速动态的 Web 应用。Memcached
的最初版本由 LiveJounal 的布拉德·菲茨帕特里克( Brad Fitzpatrick)
在 2003 年开发完成。目前全球有非常多的用户在使用它来构建自己的
大负载网站或提高自己的高访问网站的响应速度。

Memcached 图标如图所示。
image.png

2.Redis

Redis 与 Memcached 类似,也是一个高性能的键值( Key-Value)存储数据库系统。为了保证效率, Redis 的数据都缓存在内存中。与 Memcached 的区别是, Redis 会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从( Master-Slave)同步。 Redis 的出现,很大程度上补偿了 Memcached 这类键值存储的不足,在部分场合可以对关系型数据库起到很好的补充作用。它提供了 Python、 Ruby、 Erlang、 PHP客户端,使用很方便,支持主从集群与分布式,支持队列等特殊功能。 Redis图标如图所示。
image.png

3.mongoDB

mongoDB 是介于关系型数据库和非关系型数据库之间的产品,也是非关系型数据库中功能最丰富的一种产品,支持存储比较复杂的数据类型。 mongoDB 最大的特点是支持强大的数据查询语言,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能。 mongoDB 同时支持对数据建立索引和 Python、 Java、 C++、PHP 等多种计算机语言, mongoDB 图标如图所示。
image.png