要介绍数据库技术,首先得从数据讲起。数据(Data)是指人类为记录客观事物的性质、状态以及相互关系等而使用的可以鉴别的物理符号。它不仅可以是数字,还可以是具有一定意义的文字、符号、图形等。在电子计算机诞生之后,在计算机科学领域,数据是指所有能被计算机存储与处理、反映客观事实的物理符号。在计算机的世界里,数据的表现形式是多种多样的,有数字、文本、图形、图像、音频、视频、动画、网页等。例如,我们要记录雷暴雨天气既可以使用“雷暴雨”这种文字的形式,也可以使用一个如图1.1所示的图像,还可以通过声音、动画等形式来表达。
图1.1 雷暴雨
数据与数字这两个概念的名字只有一字之差,以至于我们很容易混淆它们。数字指的是用于表示数值大小的物理符号,如1、2、3等。数字只是一种常见的数据表现形式而已。任何一种类型的数据,都是以二进制的形式存储在电子计算机中的。
进入21世纪之后,随着互联网和移动互联网技术的普及,人类世界进入了数据大爆炸的年代。短短几年间产生的数据量级就远超之前好几百年的总和。在海量的、杂乱无章的数据当中隐藏着一些对人类生产生活决策有价值的数据,这部分有价值的数据往往需要经过加工提炼过程才能得到。我们将这些为了满足决策的需要而加工处理的数据称为信息(Information)。
世间万物皆有其特性和发展规律。信息就是客观事物的状态和运动特征的一种普遍形式,它以物质介质为载体,反映和传递世间万物存在方式和运动状态的表征,是事物现象及其属性标识的集合。信息是一种资源,是有价值的。就像离不开空气和水一样,人类也离不开信息。例如,某超市的营业时间为9:00—21:00。人们获悉这条信息后,不会选择在早上9点前或晚上9点后去超市购物。由此可见,信息在人类社会活动中占据着非常重要的位置,因此有“物质、能量和信息是构成世界的三大要素”的说法。当今社会是信息社会,信息技术与生物技术、新材料技术一起构成了21世纪人类社会重大发展的三大支柱。
信息具有可感知、可理解、可存储、可传递等特征。人们常使用数据来表现信息,例如文字、音频、图像、视频、动画等。因此,数据是信息的载体,信息是数据的内涵,两者既紧密联系又相互区别。
如果把数据比喻成沙子,那么信息就是隐藏在这些沙子中的金子,是最具价值的部分。同一信息可有不同的数据表现形式,同一数据可以有不同的解释,例如“2046”,可以是一个十进制的数,也可以是一个八进制的数,还可以表示一部电影,因此,我们往往需要联系上下文来理解数据蕴含的信息。
人类社会在生产和生活过程当中产生了海量的数据。比如,我们每天通过即时通信工具与其他人沟通,从而产生了许多文字、语音、图像或者视频等形式的数据。为了从大量的、杂乱无章的数据中获取有价值的、能提供决策依据的信息,必须进行数据处理。数据处理(Data Processing)是指对各种数据进行采集、存储、整理、分类、统计、加工、利用、传输等一系列活动的统称,是一个将数据转换成信息的过程。如果把海量数据比喻为沙子,把信息比喻为沙子里的金子,那么数据处理就是在沙子里淘金。
数据处理存在于人类社会生产和生活的各个领域。数据处理技术发展及应用的广度和深度,极大地影响着人类社会发展的进程。现在,让我们从计算工具的进化演变来回顾数据处理的发展历程。
1.算盘
起源于我国古代的算盘(见图1.2)是一种手动操作的辅助计算工具。使用算盘可以进行十进制数字的计数及运算。由于计数简便、快速、精准,算盘成为在阿拉伯数字出现之前人们广为使用的一种计算工具。新中国成立后,我国开始研制原子弹。当时条件艰苦,设备落后,据说国内仅有的两台计算机承担着大量繁重的计算工作,许多数据得不到及时处理,导致整个研制过程进展缓慢。在这种情况下,我国科学家采用算盘结合手摇计算器的方法进行人工计算,对原子弹的成功研制做出了贡献。
图1.2 算盘
2007年11月算盘被英国最有影响力的报纸之一《独立报》评选为101件改变世界的小发明之一。2013年12月,以算盘为工具的珠算被列入了联合国“人类非物质文化遗产代表作名录”,可见算盘在人类文明发展史上的重要地位。
2.加法器
1642年,年仅19岁的法国哲学家、数学家和物理学家Blaise Pascal为了帮助税务官父亲解决税务计算问题,发明了能自动进位的齿轮式加法器(见图1.3)。这个加法器上有六个轮子,分别代表个、十、百、千、万、十万等,其原理和手表相似,顺时针拨动齿轮,就可以进行加法计算,而逆时针拨动齿轮则可以进行减法计算。这是人类历史上第一台机械式计算机,对后来计算机械的发展产生了巨大而持久的影响。
图1.3 Blaise Pascal和齿轮式加法器
3.差分机
英国发明家Charles Babbage设计了差分机并于1822年研制成功(见图1.4)。差分机能把函数表的复杂算式转化为差分运算,用简单的加法代替平方运算。它能够按照设计者的意图,自动处理不同函数的计算过程。差分机的设计蕴含着程序控制的思想,它的出现为现代计算机设计思想的发展奠定了基础。
图1.4 Charles Babbage和差分机
4.穿孔制表机
1880年以前,美国的人口普查都是人工完成的。人口普查需要处理大量数据,如公民的年龄、性别,社区中儿童、老人的比例,男女性公民的比例等。1880年人口普查完成后,美国人意识到按照当时的人口增长速度,无法依照美国的法律规定在10年内完成下一个10年的人口普查工作。在这样的情况下,1888年美国统计专家Herman Hollerith参照80年前纺织工程师Joseph Marie Jdakacquard通过穿孔纸带上的小孔来控制提花操作的步骤,设计发明了穿孔制表机,用于人口数据的采集并实现数据的自动统计。Hollerith把每个人的所有调查项目依次排列在一张卡片上,然后根据调查结果在相应项目的位置上打孔。这些穿好孔的卡片会被放置在一组盛满水银的小杯上,卡片上方有几排精心调好的探针,探针连接在电路的一端,水银杯则连接于电路的另一端。只要某根探针撞到卡片上有孔的位置,便会自动跌落下去,与水银接触接通电流,启动计数装置前进一个刻度。由此可见,穿孔卡存储的是二进制信息:有孔处能接通电路计数,代表该调查项目为“有”,即“1”;无孔处不能接通电路计数,表示该调查项目为“无”,即“0”。1900年采用穿孔制表机进行人口普查时,平均每台机器可代替500人工作,大大地提高了数据统计的效率。
Hollerith为其设计的穿孔制表机(见图1.5)申请了专利,并“下海”创办了一家专业制表机公司,但不久就因资金周转不灵陷入困境,被一家名为CTR的公司兼并。1924年,CTR公司更名为“International Business Machines Corporation”(即“IBM”),专门生产穿孔机、制表机一类产品。
穿孔制表机是人类历史上第一次把数据转换为二进制信息来存储,这种数据输入方法一直沿用到20世纪70年代,数据处理也成为计算机系统的主要功能之一。
图1.5 Herman Hollerith和穿孔制表机
5.电子计算机
在第二次世界大战期间,飞机和大炮是占主要地位的战略武器。美国军方在研制新型大炮和导弹时,需要计算弹道。每条弹道的数学模型是一组非常复杂的非线性方程组,使用当时的计算工具求解这些方程组需要耗费大量人力及时间。因此,美国军方拨款研制高速的电子管计算装置。1946年,为满足计算弹道需要而定制的世界上第一台电子计算机“Electronic Numerical Integrator And Calculator”(即“ENIAC”,见图1.6)在宾夕法尼亚大学问世了。
图1.6 ENIAC
ENIAC实现了多年来人类将电子技术应用于计算机的梦想,为进一步提高运算速度开辟了极为广阔的前景,从此人类正式进入电子计算机时代。
人类对高效数据处理的追求不断推动计算工具的发展和演变。在电子计算机诞生之后,计算机硬件和软件技术不断发展,同时也推动了数据处理方式的不断演化。根据处理数据的空间分布方式和时间分配方式的不同,数据处理有多种不同的方式。
如图1.7所示根据处理数据的空间分布方式来划分,数据处理可以分为集中式处理、分散式处理和分布式处理。在电子计算机时代早期,数据处理采用集中式处理或分散式处理的方式来进行。集中式处理指的是数据集的存储和处理都由一台计算机完成。集中式处理可实现设备高利用率,并能保证被处理数据的完整性和有效性,然而处理能力非常有限。分散式处理指的是数据集被分块并分别存储在多台计算机上,这些计算机之间没有通信联系,对数据的管理和操纵都是相互独立的。分散式处理的优点是简单,能就地提取数据,变换格式并加工,以及最后输出结果。但是随着数据分散程度的增高,实现统一和控制信息流的困难也增多。20世纪70年代计算机网络出现,电子计算机日益广泛地应用于各个领域,一种新型的数据处理方式——分布式处理出现了。它既能克服分散式处理的缺点,又可避免集中式处理的困难。在分布式处理系统中,数据集被分块分别存储在多台计算机上,这些计算机通过网络连接,不仅可以单独处理存储在本机的数据,也可以和其他联网的计算机一起对整个数据集进行全局处理。
图1.7 按处理数据的空间分布方式划分的三种数据处理方式
按处理数据的时间分配方式来划分,数据处理可以分为批处理和联机处理。批处理就是对某些对象进行批量的处理。在早期的信息处理系统中,批处理虽能有效地提高设备的利用率,但用户把作业交给系统后便失去了控制和修改作业的能力,而且往往要经过几小时甚至几天才能得到所需要的结果。用户希望能通过自己的终端直接享用计算机资源,因而出现了联机处理。联机处理就是信息直接从产生地输入系统,并将处理结果直接送到信息目的地的数据处理方式。联机处理分为实时处理和延迟处理。实时处理是指立即处理输入的数据并得到结果。延迟处理则是先将输入的数据存储起来,过一段时间再处理。
不同的数据处理方式需要不同的硬件和软件支持。每种数据处理方式都有自己的特点,在解决实际问题时应当根据应用问题的实际环境选择合适的数据处理方式。