作为对商业数据计算机化管理的响应,在20世纪60年代出现了最早的数据库系统。现代的数据库应用包括有非常复杂的全球型企业。跟现代的数据库应用相比,那些早期的应用是相对简单的。
所有的数据库应用,不管老的还是新的,都共享重要的公共元素。比如数据库应用的核心不是执行某种计算的程序,而是数据本身。今天,一些最有价值的公司之所以有价值,不是因为它们的有形资产,而是因为它们拥有的信息。想象一下,如果一个银行没有了账户和客户数据,一个社交网站丢失了用户之间的联系,则这些公司的价值就全部丧失了。
适合使用数据库来管理的数据集有以下特点:
- 数据非常有价值;
- 数据量相对较大;
- 数据会同时被许多用户和应用访问;
画外音:
如果应用的数据不是非常有价值,或者数据量不是很大,或者很少会被用户和应用同时访问,则就不适合使用数据库系统来管理数据。
第一批数据库应用有的仅是简单的、格式精确的、结构化的数据。今天,数据库应用可能包含具有复杂关系和结构可变的数据。
先看一个具有结构化数据的应用示例:一个大学里有关课程、学生、课程注册等信息的记录。该大学为每门课程保留相同类型的信息:课程标识符、课程名、所属系、课程编号等,为每个学生信息也保留相同类型的信息:学生标识符、学生名、地址、电话号码等,课程注册是由(课程标识符, 学生标识符)这样的对组成的集合。这类信息具有着标准的、重复性的结构,是可追溯至20世纪60年代的数据库应用类型的典型代表。
跟这个简单的大学数据库应用相比,一个社交网站的用户会发布有关他们自己的各种类型的信息,从姓名、出生日期等简单信息,到由文本、图片、视频、指向其他用户的链接组成的复杂信息。虽然这些数据之间具有共同结构的数量是有限的,但是这两类应用都具有数据库的基本特征。
现代数据库不仅利用数据结构中的共性来提升效率,而且支持弱结构的数据以及格式高度可变的数据。
因此,数据库系统是一个大型的、复杂的软件系统,它的任务是管理大型、复杂的数据集。
复杂性管理不仅在数据管理领域非常有挑战性,而且在任何一个领域都是很有挑战性的。
复杂性管理的的关键是抽象。抽象允许一个人使用一个复杂的设备或者系统,而不用知道设备或者系统是如何被构建的。比如,一个人能开车,只要知道如何操作这部车的控制部件就行了,而不用知道如何制造车或者车子的运行原理。所有的司机需要知道的是汽车能做什么的一个抽象概念。
类似地,面对一堆大型且复杂的数据,数据库系统需要提供一个更简单的、抽象的信息视图,以便用户和应用程序员不需用知道数据在底层是如何存储和组织的。通过提供高层次的抽象,数据库系统使得企业能将不同类型的数据整合成一个统一的信息仓库。
有一些使用数据库系统的典型应用:
- 企业信息
- 销售信息
比如顾客、产品及购买信息; - 会计信息
比如支付、收据、账户余额、资产及其他会计信息; - 人力资源
比如雇员信息、工资、工资税、福利等信息及用于生成工资的信息
- 销售信息
- 制造业
比如用于供应链管理的信息,以及用于追踪工厂中物品的生产、仓库和商店中物品的库存及物品订单等信息 - 银行和金融业
- 银行信息
比如客户信息、账户、贷款、银行交易等信息 - 信用卡交易信息
比如信用卡购买信息、用于月度账单生成的信息等 - 金融信息
比如存储有关金融工具(股票和债券等)的持有、销售及购买信息;存储实时市场数据,以便客户进行在线交易和公司进行自动交易;
- 银行信息
- 大学
比如学生信息、课程注册、分数等信息 - 民用航空业
比如预定和调度等信息 - 电信业
比如保存电话记录、文本记录、数据使用率等信息,用于生成阅读账单、维护有关预付电话卡的余额、存储有关通信网络的信息 - 基于互联网的服务
- 社交媒体
保存用户记录、用户之间的连接(比如朋友、关注等信息)、由用户发布的消息、有关该消息的关注度等信息 - 电商
为任何一个零售商保存销售数据和订单,追踪用户看过的商品、搜索项等信息来为了给用户推荐最合适的商品 - 互联网广告
为了实现有针对性地投放广告、产品建议、新闻文章等,保存点击历史记录。每当人们做一次互联网搜索、线上购买或者访问一次社交网站,他们都会访问这些数据库。
- 社交媒体
- 文档数据库
维护新文章、专利、公开的研究论文等信息 - 导航系统
维护各种名胜古迹的位置以及精确的公路路线、火车路线、公交路线等
如这个列表所示,数据库不仅是每个企业的必要组成部分,而且也构成了一个人每日活动的很大部分。
人们跟数据库的交互方式是随着时间而改变的。早期的数据库是作为后台办公系统维护的,人们通过打印的报告及纸质表单作为输入来跟其交互的。随着数据库变得更复杂,更好的语言被开发出来供程序员使用来跟数据交互,更好的用户界面也被开发出来使得企业内的终端用户能查询和更新数据。随着程序员跟数据库交互方式的改进,计算机硬件性能的提升,出现了更复杂的应用,使得数据库中的数据不仅对企业内部的终端用户可得,而且对大众也可得。虽然曾经银行客户必须要跟出纳员进行每笔交易,但是现在ATM机支持直接跟客户交互。今天,几乎每个企业都部署有互联网应用或者移动应用,来支持它的客户直接跟企业的数据库交互,即跟企业自己交互。
用户或者消费者能集中在产品或者服务上,而不用了解使得交互可行的大型数据库的细节。比如,当你阅读一条社交媒体消息、访问在线书店、浏览一本书或者音乐集时,你就是在访问存储在某个数据库中的数据。当你输入一条在线订单时,你的订单将会被存到某个数据库中。当你访问一个银行网站,检索你的银行余额和交易信息时,信息是从该银行的数据中检索的。当你访问一个网站时,有关你的信息可能会从数据库中检索出来用于为你选择应该看到的广告。几乎跟智能手机的每次交互都会导致某种类型的数据库访问。有关你的互联网访问数据可能被保存在某个数据库中。
因此,虽然用户界面隐藏了许多数据库的访问细节,大部分人并没有感觉到他们是在跟一个数据库打交道,但是访问数据库构成了今天每个人生活的必要组成部分。
从广义上讲,数据库被使用有两种模式:
-
在线事务处理
大量用户使用数据库,其中每个用户都只是检索小部分信息,执行小型更新;
对我们之前总结的数据库应用的大部分用户来说,这是主要的使用模式; -
数据分析
比如,银行需要决定是否把贷款发放给某个贷款申请人,在线广告商需要决定将哪一个广告展示给特定用户。
再比如,制造商和零售商需要决定制造哪些物品或者订购多少量。这些决定深受分析过去数据、预测趋势的技术的驱动。因为做错误决策的成本非常高,因此组织愿意投资许多钱来收集或者购买所需数据,构建能使用数据做正确预测的系统。
解决这些任务需要两步:
首先,数据分析技术尝试从数据中自动发现规则和模式,创建预测模型。这些模型把个人特征作为输入,输出一些预测,比如偿还贷款的可能性、点击一个广告的可能性等。
然后,使用这些预测来做商业决策。
数据挖掘领域将人工智能研究者和统计学者发明的知识发现技术跟高效实现整合起来使其能够用于超大型数据库。