模型(
Model)是现实世界特征的模拟和抽象表达,其有助于人们更好地认识和理解客观世界中的事物、对象、过程等感兴趣的内容,例如汽车车模、飞机航模、建筑图纸、军事沙盘等。同样,为能表示和处理现实世界中的数据和信息,我们常使用数据模型(Data
Model)这个工具来模拟和抽象现实世界中的数据特征。因此,数据模型也是一种模型,它是对现实世界数据特征的抽象,描述的是数据的共性内容。
数据特征与数据模型组成要素
般而言,数据具有静态和动态两种特征。其中,数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束;数据的动态特征是指对数据可以进行符合定规则的操作。相应地,对现实世界数据特征进行抽象的数据模型,需要描述数据的静态特征与动态行为,并为数据的表示和操纵提供框架。因此,数据模型是用来描述数据的结构、定义在结构上的操纵以及数据间的约束的一组概念和定义。
通常,任何一种数据模型都是严格定义的概念集合,而这些概念必须能够精确地描述系统的静态特性、动态特性和数据约束条件。因此,数据模型通常由数据结构、数据操作和数据约束三个要素组成,分别如下。
(1)数据结构
数据结构描述的是系统的 ...
在一个组织的数据库系统中,有着各种不同类型的人员(或用户)需要与数据库打交道。他们从不同的角度以各自的观点来看待数据库,从而形成了数据库系统不同的视图结构。因此,考察数据库系统的结构可以有多种不同的层次或不同的视角。
若从数据库管理员(DBA)的视角来看,数据库系统可分为内部系统结构和外部体系结构,其中内部系统结构通常采用三级模式结构,而外部体系结构通常表现为集中式结构、分布式结构和并行结构等;若从数据库应用的用户(如应用程序的编写人员)的角度来看,目前数据库系统通常具有客户/服务器结构和浏览器服务器结构,这也是数据库系统整体的运行与应用结构。
数据库系统的三级模式结构
“从数据库管理员的角度来审视数据库系统,其内部基本上遵循美国
ANSISPARC数据库管理系统研究组提出的三级体系结构,即用户级、概念级和物理级。该结构也是目前各个不同数据库管理系统产品所遵循的体系结构准则。也就是说,尽管不同的数据库管理系统产品,可以使用不同的数据库语言,可以支持不同的数据模型,可以建立在不同的操作系统之上,但是们在体系结构上通常具有相同的特征,即釆用三级模式结构,并提供两层映像功能。
具体而言,数据 ...
ELK又被称为ELK
Stack,既然被称为Stack,说明它并不是某一种技术,它是Elastic公司推出的一整套日志收集、分析和展示的解决方案。ELK分别为3个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash
和 Kibana。下面我们分别来介绍这三个项目。
Elastic Search
Elastic
Search(简称ES)毫无疑问是ELK的核心,他是一个分布式的开源搜索和分析引擎,适用于几乎所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。说到Elastic
Search就不能不提Apache
Lucene。Lucene是一个高性能、全功能的全文检索引擎库,但其仅仅是一个库,需要使用Java将Lucene集成到应用程序中,并且需要一定的信息检索学知识才能了解其工作原理。而Elasticsearch
同样使用 Java 编写,其内部使用 Lucene 做索引与搜索,但它隐藏了Lucene
的复杂性,取而代之的提供一套简单一致的 RESTful
API,从而使全文搜索变得简单。同时,针对大数据场景,ES可以分布式部署于上千台节点,处 ...
分组交换基本原理
分组交换是目前计算机网络广泛采用的技术。分组交换需要将待传输数据(即报文)分割成较小的数据块,每个数据块附加上地址、序号等控制信息构成数据分组(
packet),每个分组独立传输到目的地,目的地将收到的分组重新组装,还原为报文。分组传输过程通常也采用存储一转发交换方式。
1961年,麻省理工学院(MT)的一名研究生 Leonard
Kleinrock,首次提出分组交换技术,并利用排队论证明了分组交换处理突发流量的网络传输的有效性。1964年,兰德公司的巴兰(
Paul
baran)开始研究应用分组交换技术,实现在军用网络上进行安全语音传输,得出的解决方法就是在计算机网络通信中把要发送的信息分割为“信息块”,每个信息块分别传输。与此同时,英国国家物理实验室(
National Physical Laboratory.,NPL)的戴维斯( Donald
Davies)也在自己独立的研究中得出类似结论。巴兰提出的“信息块”概念在戴维斯的研究中被称为分组,相应地这种通信技术被称作分组交换,目前世界上广泛使用的分组交换概念即由此而来。
分组交换是报文交换的一种改进,它将一个完整 ...
当主机间交换的数据具有随机性和突发性时,采用电路交换方法的缺点是信道容量和有效时间的浪费,于是提出了报文交换的方法。报文交换也称为消息交换,其工作过程为:发送方把要发送的信息附加上发送/接收主机的地址及其他控制信息,构成一个完整的报文(
Message)。然后以报文为单位在交换网络的各结点之间以存储转发的方式传送,直至送达目的主机。一个报文在每个结点的延迟时间,等于接收报文所需的时间加上向下一个结点转发所需的排队延迟时间之和。
可以看出,报文交换事先不需要建立连接,发送方组装好报文之后即可向相邻的交换结点发出,交换结点收到整个报文并且检查无误后,暂时存储报文,然后利用路由选择找出需要转发的下一个结点的地址,再把整个报文转发给下一个结点。交换结点的这种接收-暂存转发的工作方式,就称为“存储转发”交换方式。只有当报文被转发时才占用相应的信道,不存在电路交换中通信双方空闲时信道也要被占用的情况。因此,相对电路交换信道而言,报文交换线路利用率高。报文交换网络中交换结点需要缓冲存储,报文需要排队,因此会导致报文经过网络的延迟时间变长并且不固定,对于实时通信而言会容易出现不能满足速度要求的情况。有 ...
电路交换是最早出现的一种交换方式,距今已有100多年的历史,而电话网络则是最早、最大的电路交换网络。在电路交换网络中,首先需要通过中间交换结点为两台主机之间建立一条专用的通信线路,称为电路,然后再利用该电路进行通信,通信结束后再拆除电路。电话网络的电话拨号呼叫过程就是请求建立电路的过程。电路交换网络在建立电路时,为整个会话在沿线所有链路上都预留一个专用信道,传输速率恒定。在这个通信过程中,交换设备对通信双方的通信内容不做任何干预,即对数据的编码、符号、格式和传输控制顺序等没有影响。利用电路交换进行通信包括建立电路、传输数据和拆除电路3个阶段。
建立电路
传输数据之前,必须建立一条端对端的电路,这个电路建立过程实际上就是一个个交换结点的接续过程。需要指出的是,这个电路可能不是通信双方之间直接的连接,而是通过若干个中间交换结点实现的连接如果两个主机之间需要进行通信,那么发送主机需要先发出呼叫请求信号给接收主机,然后经过若干结点沿途接通一条物理链路后,再由接收主机发出应答信号给发送主机,这样双方之间的电路连接就建立成功了。只有电路建立成功之后,才能进入数据传输阶段。其中,电路交换的这种“接 ...
数据交换的概念
计算机网络的根本目的是在网络边缘的主机之间实现相互的数据传输、信息交换。一个主机为了同时与其他主机通信,可以选择通过通信链路直接连接所有主机,构成完全网状网络,如图1.4a所示。在这种网络中,如果主机数为N,则每个主机需要同时建立(N-1)条链路,整个网络共需要N(N-1)/2条链路。显然,当N较大时,网络需要的链路数量很大,每个主机需要维护的链路数量也很大。这不仅会带来网络建设成本问题,也会带来许多技术问题,例如,主机如何同时维护众多通信链路以及如何灵活扩展网络等。因此,当网络规模较大(即N较大)时,通过通信链路直接连接所有通信终端是不可行的。于是,人们发明了交换设备。
交换设备具有多通信端口,可以同时连接多个通信结点(即主机或交换设备),实现通信端口间物理或逻辑上的动态、并行通信。通过交换设备,每个主机只需一个通信链路与交换设备相连,即可实现与其他主机的通信。
个交换设备的端口数量是有限的,并且也无法通过一条通信链路直接连接距离遥远的主机或通信设备,因此,只有在特殊情况下,如小规模局域网,才有可能利用一个交换设备直接连接所有主机。为了连接更大范围、更多数量的主机,可 ...
计算机网络规模不同,其结构复杂程度也有所不同。大规模现代计算机网络的结构包括网络边缘(network
edge)、接入网络(access network)与网络核心(network core)3部分。
网络边缘
回顾前文的概念,连接到网络上的计算机、服务器、智能手机、智能传感器、智能家电等称为主机或端系统。这些端系统位于网络的最边缘,因此,连接到网络上的所有端系统构成了网络边缘。网络边缘上的端系统运行分布式网络应用,在端系统之间进行数据交换,实现应用目的。例如,常用的Web应用,用户主机上运行浏览器软件,服务器主机上运行Web服务器软件。浏览器根据用户的输入或操作向Web服务器发送请求消息,Web服务器根据请求,向浏览器发送响应消息,浏览器解释并显示收到的消息,如web页面等。
普通网络用户在使用网络时,就是在网络边缘中通过使用某网络应用,实现在网络边缘的端系统之间的信息交换。因此,可以说网络边缘为网络用户提供了网络应用服务。
接入网络
简单网络中,如简单的局域网或个域网,网络边缘中的端系统可以通过通信链路直接连接,此时的网络可以认为没有图13中的网络核心和接入网络。对于大规模、复杂 ...
为了从操作系统中获得服务,用户程序必须使用系统调用( System
Call),系统调用陷入内核并调用操作系统。访管指令把目态切换成管态,并启用操作系统。当有关工作完成之后,在系统调用后面的指令把控制权返回给用户程序。本节介绍系统调用的概念,系统调用的分类,以及系统调用的执行过程。
所谓系统调用,就是用户在程序中调用操作系统所提供的一些子功能。这是一种特殊的过程调用,这种调用通常是由特殊的机器指令实现的。除了提供对操作系统子程序的调用外,这条指令还将系统转入特权方式(管态)。因此,系统调用程序被看成是一个低级的过程,只能由汇编语言直接访问。系统调用是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,动态请求和释放系统资源,调用系统中已有的系统功能来完成与计算机硬件部分相关的工作以及控制程序的执行速度等。因此,系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关的功能。
系统调用与函数调用的区别
由于操作系统的特殊性,应用程序不能采用一般的函数调用方式来调用这些功能过程,而是利用一种系统调用命令去调用所需的操作系统过程。因此,系统调用在本质上是应用程序请求操作系统核 ...
多级中断与中断优先级
现代的微处理器都提供有多级中断系统,从硬件上看,多级中断系统表现为有多根中断请求线从不同设备连接到中断逻辑线路上。连接在不同中断请求线上的中断信号,表示它们有不同的中断级别。中断信号的级别代表了该中断信号是否具有被优先处理的特权,以及这个特权的大小。可见,在多级中断系统中,硬件决定了各个中断的优先级别。
多级中断的第一个作用是,对各类中断信号依据其紧急程度和重要性划分级别。在需要处理的各类中断信号中,它们的紧急程度和重要性是不同的。系统当然应该优先处理最紧急的或者最重要的中断信号。而中断信号本身的紧急或重要性,则由该中断的级别的高低来标识。在多级中断系统中,在同时有多个中断请求时,处理器接收中断优先级为最高的中断(如果其中断优先级高于当前运行程序的中断优先级时),而忽略其中断优先级较低的中断。比如,计算机的电池即将没有电了,这种掉电中断显然应该有非常高的优先级别。
多级中断的第二个作用是,解决如果有重要程度相当的多个中断信号同时到达时,如何选择首个被处理的中断信号的问题。比如,在一套计算机系统上接有一台打印机和一台扫描仪,在打印机发出了打印完毕的信号的同时,扫描仪 ...