FB数据单元——信息导航图
数据是由什么组成的?
一个数据单元有多大?怎样产生和传送?
这是我们首先要知道的基本问题。曾经有人把数据比喻成花粉,蜜蜂搬运花粉使果实得以产生。每一个花朵都是数据产生源,蜜蜂承担着数据搬运工的工作。我认为这个比喻非常恰当,但有更好的概括——数据就像人体的血红细胞,一个数据单元就是一组营养单元,由肝脏产生,输送到身体各处,供应器官的需要。
数据单元是信息传输的基本单位。特别是在网络中,一般的网络连接不会允许将任意大小的数据包进行传送,它有严格的规则,采用分组技术将一个数据分成若干个很小的数据包,并且给每一个小数据包都加上它的属性。这个属性是与传输有关的,包括源IP地址、目的IP地址、数据的长度等。
和血液一样,它有固定的目的地。所以,我们把一个这样的小数据包称作数据单元,也可以称为数据帧或帧。如此一来,数据信息流的特点就明确了,每次要传送的数据都是特点鲜明的“包裹”,它们的规格和封装方式都是相同的。这有利于数据传输的标准化,也简化了它的产生、加工、包装和传送方式,使得大规模应用数据成为了可能。
我们发现,任何一个数据组织都有它的既定体系。在这个体系中,可以划分为位、字符、数据元、记录、文件和数据库六个层级。前一个层级的数据元组合产生了后一个层级,最终实现了更大规模的数据集合。
在这六个层级中,“位”数据处于第一层,一般的用户不需要探究,但后面五个层级则需要我们掌握,因为它们是人们在输入和请求数据时要应用到的。
当不同的数据包或数据元素之间存在着特定关系(一种或很多种)时,它们就构成了数据结构,也就产生了“电脑存储和组织数据”的特定方式。人们认真选择的数据结构能够带来更高的运行或者存储效率。这时,检索和索引技术的需求就随之产生了。更好的技术可以让我们的检索更加高效。
我的朋友沙尼尔是一位任职于谷歌公司的大数据专家,他在去年出版的名为《数据算法与应用》的书中对于数据的性质这样解释:
“数据结构代表着一种联系,它是数据对象及存在于该对象的实例和构成该实例的数据元素之间的各种联系。同时,这些联系可以通过定义有关的函数给出并量化。”
数据对象又是什么呢?沙尼尔认为,一个数据对象是实例或者值的集合,而数据结构是抽象数据类型(ADT)的物理实现。他将一个数据结构的设计过程分成抽象层、数据结构层和实现层这三个层级。在这其中,抽象层是指抽象数据的类型层,它讨论的是数据的逻辑结构及其运算,数据结构层和实现层则更贴近于形象化和实用性,它们讨论的是一个数据结构的表示和在电脑中的存储细节以及这种运算的实现。
如果我们结合现实应用,将数据结构解剖开来,会看到什么?你立刻就会发现自己已经漂浮在数据王国的海洋之上,它们离你是如此之近,并时时刻刻与你的生活发生着关系。
● 字符
当我们输入一个字符时(通过键盘或其他设备),系统会直接将字符译成某特定的编码系统中的一串位的组合。一个字符在电脑中占8位,即一个字节。这就是字符,也是一般而言数据的最基本单位。同时,电脑系统可以使用不只一种编码体制来处理字符。比如,某些系统将ASCII编码体制用于数据通信,而把EBCDIC编码体制用于数据的存储。广义上,我们在纸上写下一个汉字单词、一个阿拉伯数字,也可视作“数据”中的一个字符。
↓
● 数据元
数据元是数据的层次体系中最低一层的逻辑单位。我们为了形成一个逻辑单位,需要将若干位和若干的字节(字符)组合在一起。比如一句完整的话,一段完整的富有逻辑的代码,一个最小的信息流等。因此,数据元也可称作字段。它是泛指的,其中的数据项才是数据实体,比如一个完整的手机号是一个数据元,138或后面的数字按段分开,则是具有单独存在意义的数据项。
↓
● 记录
数据元以逻辑相关的形式组合在一起,就形成了一个数据记录。价值在这时候开始陡然提升。比如一条员工记录——编号、姓名、性别、职称、所属部门——包含了若干的数据元,它们之间有逻辑相关性,再加上辅助性的数据项,就构成了完整的记录。这是数据库中存取的最低一层的逻辑单位。
↓
● 文件
一个完整的文件是由信息和介质构成的,它是被命名的、存储在某种介质上的一组信息的集合体。比如一篇文章、一张唱片、一份合同,甚至于一本书,都可称为数据元件。一个文件在逻辑上可划分成若干的记录,那么文件就以记录序列的形式体现。文件与存储介质无关,介质的改变不会改变文件的性质和它的价值。
↓
● 数据库
数据库是最大的层级,它是一组有序数据的集合。在这组有序数据中,包含大量的文件——这些文件之间互相又具有逻辑相关性,并以某种检索价值被标注。根据不同的应用需求和不同的领域,人们有时也将数据库分成若干段,而不是唯一存在。数据库有备份,可以随时检索、整理和利用,也可以随时被有权限的人更改。