免费智能真题库 > 历年试卷 > 系统分析师 > 2015年上半年 系统分析师 下午试卷 论文
  第4题      
  知识点:   数据模型   磁盘   大数据   建模   可靠性   内存   耦合   数据分布   数据库   数据库技术   一致性

 
论非关系型数据库技术及应用
非关系型数据库(NoSQL数据库)在数据模型可靠性一致性等诸多数据库核心机制方面与关系型数据库有着显著的不同。非关系型数据库技术包括:(1)使用可扩展的松耦合类型数据模式未对数据进行逻辑建模;(2)为遵循CAP定理的跨多节点数据分布模型而设计,支持水平伸缩;(3)拥有在磁盘和(或)内存中的数据持久化能力; (4)支持多种非SQL接口来进行数据访问。非关系型数据库都具有非常高的读写性能,尤其在大数据量下,依然表现优秀,数据之间的弱关联关系使得数据库的结构简单,实现了更细粒度的缓存机制,具有更好的性能表现。
 
问题:4.1   1.简要叙述你参与的使用了非关系型数据库的软件系统开发项目以及你所承担的主要工作。
2.详细论述非关系型数据库有哪几类不同实现方式,每种方式有何技术特点和代表性数据库产品。
3.根据你所参与的项目中使用的非关系型数据库,具体阐述使用方法和实施效果。
 
 
 

   知识点讲解    
   · 数据模型    · 磁盘    · 大数据    · 建模    · 可靠性    · 内存    · 耦合    · 数据分布    · 数据库    · 数据库技术    · 一致性
 
       数据模型
        在数据模型下,对于一个预先确定的输入环境,软件的可靠度定义为在n次连续运行中软件完成指定任务的概率。其基本方法如下:
        设需求说明所规定的功能为F,而程序实现的功能为F′,预先确定的输入集为E={eii=1,2,…,n},令导致软件差错的所有输入的集合为Ee,即Ee={ejejEandF′(ej)<>Fej)},则软件运行一次出现差错概率为:
        
        一次运行正常的概率为R1=1-P1
        在上述讨论中,假设所有输入出现的概率相等。如果不相等,且ei出现的概率为pii=1,2,…,n),则软件运行一次出现差错的概率为:
        
        其中:
        
        于是,软件的可靠度(n次运行不出现差错的概率)为:
        
        显然,只要知道每次运行的时间,上述数据模型中的Rn)就很容易转换成时间模型中的Rt)。
 
       磁盘
        在磁表面存储器中,磁盘的存取速度最快,且具有较大的存储容量,是目前广泛使用的外存储器。磁盘存储器由盘片、驱动器、控制器和接口组成。盘片的两面用来存储信息。驱动器用于驱动磁头(读/写头)沿盘面作径向运动以寻找目标磁道位置,驱动盘片以额定速率稳定旋转,通常是5400~15000r/min(Revolution Per Minute,RPM),并且控制数据的写入和读出。控制器接收主机发来的命令,将它转换成磁盘驱动器的控制命令,并实现主机和驱动器之间数据格式的转换及数据传送,以控制驱动器的读/写操作。一个控制器可以控制一台或多台驱动器。接口是主机和磁盘存储器之间的连接逻辑。
        磁盘存储器也称为硬盘存储器。硬盘存储器具有存储容量大,使用寿命长,存取速度较快的特点。硬盘存储器的硬件包括硬盘控制器(适配器)、硬盘驱动器以及连接电缆。硬盘控制器(Hard Disk Controller,HDC)对硬盘进行管理,并在主机和硬盘之间传送数据。硬盘控制器以适配卡的形式插在主板上或直接集成在主板上,然后通过电缆与硬盘驱动器相连。硬盘驱动器(Hard Disk Drive,HDD)中有盘片、磁头、主轴电机(盘片旋转驱动机构)、磁头定位机构、读/写电路和控制逻辑等。
        为了提高单台驱动器的存储容量,在硬盘驱动器内使用了多个盘片,它们被叠装在主轴上,构成一个盘组;每个盘片的两面都可用作记录面,所以一个硬盘的存储容量又称为盘组容量。
        硬盘的接口方式可以说是硬盘另一个非常重要的技术指标,这点从SCSI硬盘和IDE硬盘的巨大差价就能体现出来,接口方式直接决定硬盘的性能。现在最常见的接口有IDE(ATA)和SCSI两种,此外还有一些移动硬盘采用了PCMCIA或USB接口。
        .IDE(Integrated Drive Electronics):IDE接口最初由CDC、康柏和西部数据公司联合开发,由美国国家标准协会(ATA)制定标准,所以又称ATA接口。普通用户家里的硬盘几乎全是IDE接口的。IDE接口的硬盘可细分为ATA-1(IDE)、ATA-2(EIDE)、ATA-3(Fast ATA-2)、ATA-4(包括UItraATA、Ultra ATA/33、Ultra ATA/66)与Serial ATA(包括Ultra ATA/100及其他后续的接口类型)。基本IDE接口数据传输率为4.1Mb/s,传输方式有PIO和DMA两种,支持总线为ISA和EISA。后来为提高数据传输率、增加接口上能连接的设备数量、突破528MB限制及连接光驱的需要,又陆续开发了ATA-2、ATAPI和针对PCI总线的FAST-ATA、FAST-ATA2等标准,数据传输率达到了16.67MB/s。
        .小型计算机系统接口(Small Computer System Interface,SCSI):SCSI并不是专为硬盘设计的,实际上它是一种总线型接口。由于独立于系统总线工作,所以它的最大优势在于其系统占用率极低,但由于其昂贵的价格,这种接口的硬盘大多用于服务器等高端应用场合。
 
       大数据
               大数据相关概念
                      大数据概念
                      大数据的应用和技术是在互联网快速发展中诞生的,起点可追溯到2000年前后。当时互联网网页爆发式增长,每天新增约700万个网页,到2000年底全球网页数达到40亿,用户检索信息越来越不方便。谷歌等公司率先建立了覆盖数十亿网页的索引库,开始提供较为精确的搜索服务,大大提升了人们使用互联网的效率,这是大数据应用的起点。当时搜索引擎要存储和处理的数据,不仅数量之大前所未有,而且以非结构化数据为主,传统技术无法应对。为此,谷歌提出了一套以分布式为特征的全新技术体系,即后来陆续公开的分布式文件系统(Google File System,GFS)、分布式并行计算(MapReduce)和分布式数据库(BigTable)等技术,以较低的成本实现了之前技术无法达到的规模。这些技术奠定了当前大数据技术的基础,可以认为是大数据技术的源头。
                      伴随着互联网产业的崛起,这种创新的海量数据处理技术在电子商务、定向广告、智能推荐、社交网络等方面得到应用,取得巨大的商业成功。这启发全社会开始重新审视数据的巨大价值,于是金融、电信等拥有大量数据的行业开始尝试这种新的理念和技术,取得初步成效。与此同时,业界也在不断对谷歌提出的技术体系进行扩展,使之能在更多的场景下使用。2011年,麦肯锡、世界经济论坛等知名机构对这种数据驱动的创新进行了研究总结,随即在全世界兴起了一股大数据热潮。
                      虽然大数据已经成为全社会热议的话题,但至今“大数据”尚无公认的统一定义。我们认为,认识大数据要把握“资源、技术、应用”三个层次。大数据是具有体量大、结构多样、时效强等特征的数据;处理大数据需采用新型计算架构和智能算法等新技术;大数据的应用强调以新的理念应用于辅助决策、发现新的知识,更强调在线闭环的业务流程优化。因此可以说,大数据不仅“大”,而且“新”,是新资源、新工具和新应用的综合体。
                      大数据特点
                      业界通常用Volume、Variety、Value、Velocity这4个V来概括大数据的特点:
                      (1)数据体量巨大(Volume)。IDC研究表明,数字领域存在着1.8万亿吉字节的数据。企业数据正在以55%的速度逐年增长。实体世界中,数以百万计的数据采集传感器被嵌入到各种设备中,在数字化世界中,消费者每天的生活(通信、上网浏览、购物、分享、搜索)都在产生着数量庞大的数据。
                      (2)数据类型繁多(Variety)。数据可分为结构化数据、半结构化数据和非结构化数据。相对于以往便于存储的以文本为主的结构化数据,音频、视频、图片、地理位置信息等类型的非结构化数据量占比达到了80%,并在逐步提升,有用信息的提取难度不断增大。
                      (3)价值密度低(Value)。价值密度的高低与数据总量的大小成反比。以视频为例,一部1小时的视频,在连续不间断监控过程中,可能有用的数据仅仅只有一两秒。
                      (4)时效性高(Velocity)。这是大数据区分于传统数据挖掘最显著的特征。数据的价值除了与数据规模相关,还与数据处理周期成正比关系。也就是,数据处理的速度越快、越及时,其价值越大,发挥的效能越大。
               大数据技术
                      大数据技术体系
                      大数据来源于互联网、企业系统和物联网等信息系统,经过大数据处理系统的分析挖掘,产生新的知识用以支撑决策或业务的自动智能化运转。从数据在信息系统中的生命周期看,大数据从数据源经过分析挖掘到最终获得价值一般需要经过5个主要环节,包括数据准备、数据存储与管理、计算处理、数据分析和知识展现,技术体系如下图所示。每个环节都面临不同程度的技术上的挑战。
                      
                      大数据技术框架
                      (1)数据准备环节。在进行存储和处理之前,需要对数据进行清洗、整理,传统数据处理体系中称为ETL(Extracting,Transforming,Loading)过程。与以往数据分析相比,大数据的来源多种多样,包括企业内部数据库、互联网数据和物联网数据,不仅数量庞大、格式不一,质量也良莠不齐。这就要求数据准备环节一方面要规范格式,便于后续存储管理,另一方面要在尽可能保留原有语义的情况下去粗取精、消除噪声。
                      (2)数据存储与管理环节。当前全球数据量正以每年超过50%的速度增长,存储技术的成本和性能面临非常大的压力。大数据存储系统不仅需要以极低的成本存储海量数据,还要适应多样化的非结构化数据管理需求,具备数据格式上的可扩展性。
                      (3)计算处理环节。需要根据处理的数据类型和分析目标,采用适当的算法模型,快速处理数据。海量数据处理要消耗大量的计算资源,对于传统单机或并行计算技术来说,速度、可扩展性和成本上都难以适应大数据计算分析的新需求。分而治之的分布式计算成为大数据的主流计算架构,但在一些特定场景下的实时性还需要大幅提升。
                      (4)数据分析环节。数据分析环节需要从纷繁复杂的数据中发现规律提取新的知识,是大数据价值挖掘的关键。传统数据挖掘对象多是结构化、单一对象的小数据集,挖掘更侧重根据先验知识预先人工建立模型,然后依据既定模型进行分析。对于非结构化、多源异构的大数据集的分析,往往缺乏先验知识,很难建立显式的数学模型,这就需要发展更加智能的数据挖掘技术。
                      (5)知识展现环节。在大数据服务于决策支撑场景下,以直观的方式将分析结果呈现给用户,是大数据分析的重要环节。如何让复杂的分析结果易于理解是主要挑战。在嵌入多业务中的闭环大数据应用中,一般是由机器根据算法直接应用分析结果而无需人工干预,这种场景下知识展现环节则不是必需的。
                      总的来看,大数据对数据准备环节和知识展现环节来说只是量的变化,并不需要根本性的变革。但大数据对数据分析、计算和存储三个环节影响较大,需要对技术架构和算法进行重构,是当前和未来一段时间大数据技术创新的焦点。下面简要分析上述3个环节面临的挑战及发展趋势。
                      大数据技术创新
                      大数据技术体系纷繁复杂,其中一些技术创新格外受到关注。随着社交网络的流行导致大量非结构化数据出现,传统处理方法难以应对,数据处理系统和分析技术开始不断发展。从2005年Hadoop的诞生开始,形成了数据分析技术体系这一热点。伴随着量急剧增长和核心系统对吞吐量以及时效性的要求提升,传统数据库需向分布式转型,形成了事务处理技术体系这一热点。然而时代的发展使得单个企业甚至行业的数据都难以满足要求,融合价值更加显现,形成了数据流通技术体系这一热点。
                             数据分析技术
                             从数据在信息系统中的生命周期看,数据分析技术生态主要有5个发展方向,包括数据采集与传输、数据存储与管理、计算处理、查询与分析、可视化展现。在数据采集与传输领域渐渐形成了Sqoop、Flume、Kafka等一系列开源技术,兼顾离线和实时数据的采集和传输。在存储层,HDFS已经成为了大数据磁盘存储的事实标准,针对关系型以外的数据模型,开源社区形成了K-V(key-value)、列式、文档、图这四类NoSQL数据库体系,Redis、HBase、Cassandra、MongoDB、Neo4j等数据库是各个领域的领先者。计算处理引擎方面,Spark已经取代MapReduce成为了大数据平台统一的计算平台,在实时计算领域Flink是Spark Streaming强力的竞争者。在数据查询和分析领域形成了丰富的SQL on Hadoop的解决方案,Hive、HAWQ、Impala、Presto、Spark SQL等技术与传统的大规模并行处理(Massively Parallel Processor,MPP)数据库竞争激烈,Hive还是这个领域当之无愧的王者。在数据可视化领域,敏捷商业智能(Business Intelligence,BI)分析工具Tableau、QlikView通过简单的拖拽来实现数据的复杂展示,是目前最受欢迎的可视化展现方式。
                             相比传统的数据库和MPP数据库,Hadoop最初的优势来源于良好的扩展性和对大规模数据的支持,但失去了传统数据库对数据精细化的操作,包括压缩、索引、数据的分配裁剪以及对SQL的支持度。经过10多年的发展,数据分析的技术体系渐渐在完善自己的不足,也融合了很多传统数据库和MPP数据库的优点,从技术的演进来看,大数据技术正在发生以下变化:
                             (1)更快。Spark已经替代MapReduce成为了大数据生态的计算框架,以内存计算带来计算性能的大幅提高,尤其是Spark 2.0增加了更多了优化器,计算性能进一步增强。
                             (2)流处理的加强。Spark提供一套底层计算引擎来支持批量、SQL分析、机器学习、实时和图处理等多种能力,但其本质还是小批的架构,在流处理要求越来越高的现在,Spark Streaming受到Flink激烈的竞争。
                             (3)硬件的变化和硬件能力的充分挖掘。大数据技术体系本质是数据管理系统的一种,受到底层硬件和上层应用的影响。当前硬件的芯片的发展从CPU的单核到多核演变转化为向GPU、FPGA、ASIC等多种类型芯片共存演变。而存储中大量使用SSD来代替SATA盘,NVRAM有可能替换DRAM成为主存。大数据技术势必需要拥抱这些变化,充分兼容和利用这些硬件的特性。
                             (4)SQL的支持。从Hive诞生起,Hadoop生态就在积极向SQL靠拢,主要从兼容标准SQL语法和性能等角度来不断优化,层出不穷的SQL on Hadoop技术参考了很多传统数据库的技术。而Greenplum等MPP数据库技术本身从数据库继承而来,在支持SQL和数据精细化操作方面有很大的优势。
                             (5)深度学习的支持。深度学习框架出现后,和大数据的计算平台形成了新的竞争局面,以Spark为首的计算平台开始积极探索如何支持深度学习能力,TensorFlow on Spark等解决方案的出现实现了TensorFlow与Spark的无缝连接,更好地解决了两者数据传递的问题。
                             事务处理技术
                             随着移动互联网的快速发展,智能终端数量呈现爆炸式增长,银行和支付机构传统的柜台式交易模式逐渐被终端直接交易模式替代。以金融场景为例,移动支付以及普惠金融的快速发展,为银行业、支付机构和金融监管机构带来了海量高频的线上小额资金支付行为,生产业务系统面临大规模并发事务处理要求的挑战。
                             传统事务技术模式以集中式数据库的单点架构为主,通过提高单机的性能上限适应业务的扩展。而随着摩尔定律的失效(底层硬件的变化),单机性能扩展的模式走到了尽头,而数据交易规模的急速增长(上层应用的变化)要求数据库系统具备大规模并发事务处理的能力。大数据分析系统经过10多年的实践,积累了丰富的分布式架构的经验,Paxos、Raft等一致性协议的诞生为事务系统的分布式铺平了道路。新一代分布式数据库技术在这些因素的推动下应运而生。
                             如下图所示,经过多年发展,当前分布式事务架构正处在快速演进的阶段,综合学术界以及产业界工作成果,目前主要分为三类:
                             
                             事务型数据库架构演进图
                             (1)基于原有单机事务处理关系数据库的分布式架构改造:利用原有单机事务处理数据库的成熟度优势,通过在独立应用层面建立起数据分片和数据路由的规则,建立起一套复合型的分布式事务处理数据库的架构。
                             (2)基于新的分布式事务数据库的工程设计思路的突破。通过全新设计关系数据库的核心存储和计算层,将分布式计算和分布式存储的设计思路和架构直接植入数据库的引擎设计中,提供对业务透明和非侵入式的数据管理和操作/处理能力。
                             (3)基于新的分布式关系数据模型理论的突破。通过设计全新的分布式关系数据管理模型,从数据组织和管理的最核心理论层面,构造出完全不同于传统单机事务数据库的架构,从数据库的数据模型的根源上解决分布式关系数据库的架构。
                             分布式事务数据库进入到各行各业面临诸多挑战,其一是多种技术路线,目前没有统一的定义和认识;其二是除了互联网公司有大规模使用外,其他行业的实践刚刚开始,需求较为模糊,采购、使用、运维的过程缺少可供参考的经验,需要较长时间的摸索;其三是缺少可行的评价指标、测试方法和测试工具来全方位比较当前的产品,规范市场,促进产品的进步。故应用上述技术进行交易类业务进行服务时,应充分考虑“可持续发展”“透明开放”“代价可控”三原则,遵循“知识传递先行”“测试评估体系建立”“实施阶段规划”三步骤,并认识到“应用过度适配和改造”“可用性管理策略不更新”“外围设施不匹配”三个误区。
                             大数据事务处理类技术体系的快速演进正在消除日益增长的数字社会需求同旧式的信息架构缺陷,未来人类行为方式、经济格局以及商业模式将会随大数据事务处理类技术体系的成熟而发生重大变革。
                             数据流通技术
                             数据流通是释放数据价值的关键环节。然而,数据流通也伴随着权属、质量、合规性、安全性等诸多问题,这些问题成为了制约数据流通的瓶颈。为了解决这些问题,大数据从业者从诸多方面进行了探索。目前来看,从技术角度的探索是卓有成效和富有潜力的。
                             从概念上讲,基础的数据流通只存在数据供方和数据需方这两类角色,数据从供方通过一定手段传递给需方。然而,由于数据权属和安全的需要,不能简单地将数据直接进行传送。数据流通的过程中需要完成数据确权、控制信息计算、个性化安全加密等一系列信息生产和再造,形成闭合环路。
                             安全多方计算和区块链是近年来常用的两种技术框架。由于创造价值的往往是对数据进行的加工分析等运算的结果而非数据本身,因此对数据需方来说,本身不触碰数据、但可以完成对数据的加工分析操作,也是可以接受的。安全多方计算这个技术框架就实现了这一点。其围绕数据安全计算,通过独特的分布式计算技术和密码技术,有区分地、定制化地提供安全性服务,使得各参与方在无需对外提供原始数据的前提下实现了对与其数据有关的函数的计算,解决了一组互不信任的参与方之间保护隐私的协同计算问题。区块链技术中多个计算节点共同参与和记录,相互验证信息有效性,既进行了数据信息防伪,又提供了数据流通的可追溯路径。业务平台中授权和业务流程的解耦对数据流通中的溯源、数据交易、智能合约的引入有了实质性的进展。
               大数据产业体系
               随着大数据技术不断演进和应用持续深化,以数据为核心的大数据产业体系正在加速构建。大数据产业体系中主要包括大数据解决方案提供商、大数据处理服务提供商和数据资源提供商三个角色,分别向大数据的应用者提供大数据服务、解决方案和数据资源,如下图所示。
               
               大数据产业体系
                      大数据解决方案提供商
                      大数据解决方案提供商面向企业用户提供大数据一站式部署方案,覆盖数据中心和服务器等硬件、数据存储和数据库等基础软件、大数据分析应用软件以及技术运维支持等方面内容。其中,大数据基础软件和应用软件是大数据解决方案中的重点内容。当前,企业提供的大数据解决方案大多基于Hadoop开源项目,例如,IBM基于Hadoop开发的大数据分析产品BigInsights、甲骨文融合了Hadoop开源技术的大数据一体机、Cloudera的Hadoop商业版等。大数据解决方案提供商中,主要包括传统IT厂商和新兴的大数据创业公司。传统IT厂商主要有IBM、HP等解决方案提供商以及甲骨文、Teradata等数据分析软件商。它们大多以原有IT解决方案为基础,融合Hadoop,形成融合了结构化和非结构化两条体系的“双栈”方案。通过一系列收购来提升大数据解决方案服务能力,成为这些IT巨头的主要策略。
                      国际上也诞生了一批专门提供非结构化数据处理方案的新兴创业公司。这些公司包括Cloudera、Hortonworks、MapR等,它们主要基于Hadoop开源项目,开发Hadoop商业版本和基于Hadoop的大数据分析工具,单独或者与传统IT厂商合作提供企业级大数据解决方案。这些新兴大数据企业成为资本市场的热点。国内华为、联想、浪潮、曙光等一批IT厂商也都纷纷推出大数据解决方案。但总体上,国内大数据解决方案提供商实力较弱,产品一些关键行业还未形成影响力,新兴大数据解决方案初创企业也凤毛麟角。
                      大数据处理服务提供商
                      大数据处理服务提供商主要以服务的方式为企业和个人用户提供大数据海量数据分析能力和大数据价值挖掘服务。按照服务模式进行划分,大数据处理服务提供商可以分为以下四类。
                      第一类是在线纯分析服务提供商。此类服务商主要是互联网企业、大数据分析软件商和新创企业等,通过SaaS或PaaS云服务形式为用户提供服务。典型的服务如谷歌提供的大数据分析工具Big Query、亚马逊提供的云数据仓库服务RedShift、微软的Azure HDInsigh1010data提供的商业智能服务等。国内一些云服务商也逐步开始提供大数据相关云服务,如阿里云的开放数据处理服务(ODPS)、百度的大数据引擎、腾讯的数据云等。
                      第二类是既提供数据又提供分析服务的在线提供商。此类服务商主要是拥有海量用户数据的大型互联网企业,主要以SaaS形式为用户提供大数据服务,服务背后以自有大数据资源为支撑。典型的服务如谷歌Facebook的自助式广告下单服务系统、Twitter基于实时搜索数据的产品满意度分析等。国内百度推出的大数据营销服务“司南”就属于此类。
                      第三类是单纯提供离线分析服务的提供商。此类服务商主要为企业提供专业、定制化的大数据咨询服务和技术支持,主要集中为大数据咨询公司、软件商等,例如专注于大数据分析的奥浦诺管理咨询公司(Opera Solutions)、数据分析服务提供商美优管理顾问公司(Mu Sigma)等。
                      第四类是既提供数据又提供离线分析服务的提供商。此类服务商主要集中在信息化水平较高、数据较为丰富的传统行业。例如日本日立集团(Hitachi)于2013年6月初成立的日立创新分析全球中心,其广泛收集汽车行驶记录、零售业购买动向、患者医疗数据、矿山维护数据和资源价格动向等庞大数据信息,并基于收集的海量信息开展大数据分析业务。又如美国征信机构Equifax基于全球8000亿条企业和消费者行为数据,提供70余项面向金融的大数据分析离线服务。
                      大数据资源提供商
                      既然数据成为了重要的资源和生产要素,必然会产生供应与流通需求。数据资源提供商因此应运而生,它是大数据产业的特有环节,也是大数据资源化的必然产物。数据资源提供商,包括数据拥有者和数据流通平台两个主要类型。数据拥有者可以是企业、公共机构或者个人。数据拥有者通常直接以免费或有偿的方式为其他有需求的企业和用户提供原数据或者处理过的数据。例如美国电信运营商Verizon推出的大数据应用精准营销洞察(Precision Market Insights),将向第三方企业和机构出售其匿名化和整合处理后的用户数据。国内阿里巴巴公司推出的淘宝量子恒道、数据魔方和阿里数据超市等,属于此种类型。
                      数据数据流通平台是多家数据拥有者和数据需求方进行数据交换流通的场所。按平台服务目的不同,可分为政府数据开放平台和数据交易市场。
                      (1)政府数据开放平台。主要提供政府和公共机构的非涉密数据开放服务,属于公益性质。全球不少国家已经加入到开放政府数据行动,推出公共数据库开放网站,例如美国数据开放网站Data.gov已有超过37万个数据集、1209个数据工具、309个网页应用和137个移动应用,数据源来自171个机构。国内地方政府数据开放平台开始出现,如国家统计局的国家数据网站、北京市政府和上海市政府的信息资源平台等数据开放平台正在建设过程中。
                      (2)数据交易市场。商业化的数据交易活动催生了多方参与的第三方数据交易市场。国际上比较有影响力的有微软的AzureData Marketplace、被甲骨文收购的BlueKai、DataMarket、Factual、Infochimps、DataSift等等,主要提供地理空间、营销数据和社交数据的交易服务。大数据交易市场发展刚刚起步,在市场机制、交易规则、定价机制、转售控制和隐私保护等方面还有很多工作要做。国内,2014年2月,在北京市和中关村管委会指导下,中关村大数据交易产业联盟成立,将在国内推动国内大数据交易相关规范化方面开展工作。
               大数据对电子商务的发展影响
                      大数据更好地支撑了电子商务营销精准化和实时化
                      电子商务发展到今天,其营销平台、营销方式都发生了很大的改变。电子商务平台、移动终端、社交网络以及物联网等设备的使用大大增加了消费者数据,而云计算、复杂分析系统等大数据处理手段,为人们整合各个渠道消费者数据、形成有用的营销信息提供了可能。与传统的电子商务数据处理方式相比,大数据处理方式更快捷、更精细,它给我们科学分析消费者偏好及其消费行为轨迹提供巨大帮助。特别是在移动设备进入电子商务领域后,地理位置服务信息处理使电子商务一对一精准营销成为可能,极大程度提升了电子商务营销的准确性,有力地支撑了电子商务营销的精准化与实时化。
                      大数据更好地支撑了电子商务高度差异化和个性化
                      在传统电子商务营销背景下,企业与消费者总是处于双向信息不对称状态。一方面企业很难掌握消费者的消费行为和消费习惯,另一方面消费者了解企业产品的信息渠道相对较窄。进入大数据时代后,企业可以通过科学分析海量数据来获得更加丰富的消费者信息,从而针对不同消费者消费需求,提供特定的产品和服务,以最大限度地提高其满意度。消费者可以通过移动终端等渠道及时向电子商务企业传递信息,为企业进行个性化服务提供依据。由此可以推断,未来电子商务价值创造将会围绕消费者个性化需求展开,并将消费者纳入到企业产品设计与生产过程,实现共同的价值创造。
                      大数据进一步推进了价值链、供应链一体化
                      大数据等新型信息技术可以促进各个渠道的跨界数据整合,使所有围绕消费者消费行为的价值链、供应链企业成为一个整体。如大数据可以将地理位置不同、从事行业不同的研发、生产、加工、营销、仓储、配送、服务等各环节企业在满足消费者消费需求这一共同目的下组成动态联盟,通过彼此协作和创造,真正为消费者提供个性化产品和服务。相对于传统意义上的供应链,通过大数据连接起来的动态联盟反应速度更快、智能化程度更高,这既有利于联盟内企业的信息、资源共享,也有利于联盟内企业的分工协作,从而创造新的价值。
                      大数据推动了新型增值服务模式发展
                      电子商务中应用众多的新型信息技术产生了生产、消费、金融、物流等一系列大数据,这些本属于不同领域的大数据在被综合运用的过程中会产生新的融合,从而形成新的增值服务。如电子商务中产生的买卖双方信息、物流信息、金融信息,如果加以整合肯定能够使企业在市场竞争中处于比较有利的位置。在此基础上,企业还可以积极开展类似金融信用服务、供应链整合等增值服务。随着大数据的广泛应用,加之大数据分析手段创新,已经产生了互联网金融等多个增值服务,给包括电子商务企业在内的众多中小企业提供了新的发展空间。假以时日,大数据还会催生更多新型增值服务模式、产生众多的产业。
 
       建模
        建模是在计算机上创造三维形体的过程,建模是三维动画的基础,没有一个好的模型,其他好的效果都难以表现。三维建模的基本方法主要有:利用二维形体的技术、直接进行三维物体建模、造型组合等。
        利用二维形体进行建模的技术的主要思想是首先创建简单的二维形体,如样条线和形状等,然后对这些创建的二维形体进行挤压、旋转、放样等操作以创建三维造型。
        直接进行三维物体建模的常用方法有多边形建模、面片建模、NURBS建模等。
        造型组合是把已有的物体组合成新的物体,其中布尔运算是最重要的组合技术。
 
       可靠性
        (1)完备性。完备性评价指标及测量,如下表所示。
        
        完备性评价指标及测量
        (2)连续性。连续性评价指标及测量,如下表所示。
        
        连续性评价指标及测量
        
        (3)稳定性。稳定性评价指标及测量,如下表所示。
        
        稳定性评价指标及测量
        (4)有效性。有效性评价指标及测量,如下表所示。
        
        有效性评价指标及测量
        (5)可追溯性。可追溯性评价指标及测量,如下表所示。
        
        可追溯性评价指标及测量
        
 
       内存
        除了CPU,内存也是影响系统性能的最常见的瓶颈之一。看系统内存是否够用的一个重要参考就是分页文件的数目,分页文件是硬盘上的真实文件,当操作系统缺少物理内存时,它就会把内存中的数据挪到分页文件中去,如果单位时间内此类文件使用频繁(每秒个数大于5),那就应该考虑增加内存。具体考察内存的性能的参数包括内存利用率、物理内存和虚拟内存的大小。
 
       耦合
        耦合性是指模块之间联系的紧密程度。耦合性越高,则模块的独立性越差。模块间耦合的高低取决于模块间接口的复杂性、调用的方式及传递的信息。模块的耦合有以下几种类型:
        (1)无直接耦合:指两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。
        (2)数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。这种耦合程度较低,模块的独立性较高。
        (3)标记耦合:指两个模块之间传递的是数据结构,如高级语言中的数据组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。
        (4)控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调模块通过该控制变量的值有选择地执行块内的某一功能。
        (5)公共耦合:指通过一个公共数据环境相互作用的那些模块之间的耦合。
        (6)内容耦合:这是程度最高的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合,这种情况往往出现在汇编程序设计中。
 
       数据分布
        数据分布是分布式数据库系统中的基本问题,解决好这个问题对提高分布式数据库系统的效率和性能有积极的作用。所谓数据分布是指在分布式环境中通过合理分布数据.提高数据操作自然并行度,以达到最好的执行效率的目的。在构建分布式数据库系统的运行环境时,必须考虑数据如何分布在系统的各个场地上,或者说,必须考虑构成分布式数据库系统的各个组成部分各自如何使用数据的问题。所以,在分布式数据库系统中,同样存在着分布式数据库的设计问题。数据分布就是讨论这个问题,它包括分布式数据库的逻辑划分和物理分配,以及用户对分布式数据库的划分或分配的感知程度(透明度)。
        数据分布要研究的问题是在分布式数据库中,如何放置数据,从而使得相关数据之间的相对位置最佳。
        如何分布数据,使它们的相对位置最佳,还需要考虑许多其他问题,例如:
        (1)如果一个场地上的存储空间不够,无法存放要访问的所有数据时该怎么办?
        (2)数据相对位置对查询优化有什么样的影响?
        (3)如何才能知道相对位置最佳的数据分布是否最大限度地利用了网络环境并行性?
        对于数据分布问题,人们已经进行了大量的研究工作,其中主要的工作都是围绕着两方面进行的:“高效的数据划分问题”和“数据放置问题”。第一个方面是关于如何把数据划分开,使得使用率最高的数据能够被放置在性能最好的场地上。第二个方面是关于如何把已划分好的数据合理地放置在网络上以获得最好的执行效率,减少网络传输的数据量。数据的划分和放置是数据分布问题的两个方面,只解决其中任何一个都不能说是已经解决了数据分布问题。数据分布是分布式数据库的特征,解决数据分布的策略一般有以下几种:
        (1)集中式:所有全局数据片段都安排在一个节点上。
        这种分布策略把系统数据都存放在一个节点上,对数据的控制和管理都比较容易,数据的一致性和完整性能够得到保证。但是由于数据的检索和修改都必须通过这个节点,使得这个节点的负担过重,容易出现瓶颈。另外,系统对这个节点的依赖性也过多,一旦这个节点出现故障,将使整个系统崩溃,系统的可靠性就相对较差,为了提高系统的可靠性,该节点的设备就必须提高。
        (2)分割式:所有全局数据有且只有一份,它们被分割成若干个逻辑片段,每个逻辑片段被分别指派在特定的节点上,可以说对全局数据进行了划分。
        这种分布策略充分利用各个站点上的存储设备,数据的存储量大。在存放数据的各个节点可自治地检索和修改数据,发挥系统的并发操作能力。同时,由于数据是分布在多个节点上的,所以当某部分节点出现故障时,系统仍可运行,提高了系统的可靠性。对于全局查询和修改,所需的时间会比集中式长些,因为数据不在同一场地上,需要进行网络通信。
        (3)复制式:全局数据有多个副本,每个站点上都有一个完整的数据副本。
        采用这种策略的系统可靠性较高,响应速度快。数据库的恢复也较容易,可从任意的场地得到数据的副本。但是要保持各个站点上数据的同步修改,将要付出昂贵的代价。另外,整个系统的数据冗余很大,系统的数据容量也只是一个节点上数据库的容量。
        (4)混合式:全部数据被分为若干个数据子集,每个子集被放在不同的节点上,但任何一个节点都没有保存全部的数据,根据数据的重要性决定各个数据子集副本的数量。
        这种分布策略,兼顾了分割式和复制式的做法,也获得了二者的优点,它灵活性好,能提高系统的效率,但同时也包括了二者的复杂性。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
 
       数据库技术
        计算机与人类相比的最大优势就是能够迅速准确地处理大量数据。因此,自从计算机发明以来,数据处理就是它的基本功能和关键技术。数据处理的中心问题是数据管理,即对数据的分类、组织、编码、存储、检索和维护等。而数据库技术正是数据处理技术发展到比较成熟后的产物。可以说,数据库技术是现代计算机应用的基础。电子商务以电子计算机及其网络技术取代传统方式来进行生产经营活动,当然离不开数据库技术的支持。数据库技术对电子商务的支持主要表现在两方面:
        存储和管理各种商务数据:这是数据库技术的基本功能。
        决策支持:近几年,随着数据仓库和数据挖掘技术的产生和发展,使企业可以科学地对数据库中海量的商务数据进行科学地组织、分析和统计,从而更好地服务于企业的决策支持。可以说,数据库技术是电子商务的一项支撑技术,在电子商务的建设中占有重要的地位。
               数据库技术基本理论
               电子商务是利用电子网络进行的商务活动,这里的电子网络主要是指Internet和基于Internet技术的Intranet(企业内部网)、Extranet(企业外部网)。其进行的商务活动不仅包含电子数据交换所涉及的电子交易,还包括电子函件交流、网上站点宣传和利用Internet技术改造的其他传统应用。但电子商务应用的前提是企业管理信息系统的广泛应用。数据库技术是企业管理信息系统的核心技术之一,所以,要深入理解电子商务就应该先了解数据库的一些基本理论。
                      数据模型
                      模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计沙盘等都是具体的模型。最常用的数据模型分为概念数据模型和基本数据模型。
                      (1)概念数据模型,也称信息模型,是按用户的观点对数据和信息建模,是现实世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解,是用户和数据库设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是实体联系模型,简称E-R模型。
                      (2)基本数据模型。它是按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现。基本的数据模型有层次模型、网状模型、关系模型和面向对象模型(Object Oriented Model)。
                      数据库结构的基础是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是数据结构、数据操作和数据的约束条件。
                      .数据结构。是所研究的对象类型的集合,是对系统静态特性的描述。
                      .数据操作。对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作规则。如操作有检索、插入、删除和修改,操作规则有优先级别等。数据操作是对系统动态特性的描述。
                      .数据的约束条件。是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。
                      关系数据库
                      (1)基本概念。关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界。关系模型有三部分组成:数据结构、关系操作集合、关系的完整性。
                      .数据结构。在关系模型中,无论是实体还是实体之间的联系均由单一的结构类型即关系来表示。
                      .关系操作。关系代数(或等价的关系演算)中并、交、差、选择、投影、连接等。关系模型给出了关系操作的能力和特点,但不对DBMS的语言给出具体的语法要求,关系语言的特点是高度的非过程化。其操作方式的特点是集合操作,即操作的对象和结果是集合,称为一次一集合的方式,而不是一次一记录的方式。
                      .关系完整性。实体完整性、参照完整性和用户自己定义的完整性。实体完整性是保证数据库中记录的唯一性,即每个记录的主键不能为空值也不能与其他记录的主键相同。参照完整性是保证表与表之间语意上的完整性,即当一个表引用在另一个表中定义的实体时,要保证这个实体的有效性。这两种完整性是关系模型必须满足的约束条件,应该由关系系统自动支持。而用户自定义完整性反映了用户的要求,是用户自行定义的。
                      (2)结构化查询语言(SQL)。结构化查询语言(Structured Query Language,SQL)的理论是在1974年被提出的,并在IBM公司的System R上实现。由于它功能丰富、使用方式灵活、语言简洁易学等优点,在计算机工业界和用户中备受青睐,很快得以推广。后来,美国国家标准局(ANSI)和国际标准化组织(ISO)先后批准SQL作为关系数据库语言的美国及国际标准。至此,SQL就成为关系数据库的标准语言,关系数据库系统一般都支持标准SQL语句。所以,尽管当今不同品牌的关系数据库有这样或那样的差异,人们都可以通过标准SQL语句对数据库进行操作,这就大大减轻了用户的负担。
                      SQL虽被称为“查询语言”,其功能却不仅仅是查询,它的功能包括数据定义、数据操纵、数据库控制、事务控制四个方面,是一个综合、通用、功能强大的关系数据库语言。其中:
                      .数据定义。用于定义和修改数据库对象。如CREATE TABLE(创建表)、DROP TABLE(删除表)等。
                      .数据操纵。对数据的增、删、改和查询操作。如SELECT(查询数据)、INSERT(插入记录)、DELETE(删除记录)、UPDATE(修改数据)等。
                      .数据库控制。控制用户对数据库的访问权限。如GRANT(授予权利)、REVOKE(取消权利)等。
                      .事务控制。控制数据库系统事务的运行。如COMMIT(事务提交)、ROLLBACK(事务撤销)等。
                      SQL有如下几个比较突出的优点。
                      .一体化。SQL可以完成包括数据库定义、修改、删除、数据更新、数据查询等数据库生命周期中的全部活动,给用户使用带来很多方便。
                      .灵活。SQL有两种使用方式。一种是联机交互使用,另一种是嵌入某种高级程序设计语言的程序中。这两种方式的语法结构是统一的。这样既给用户带来了灵活的选择余地,又不会带来不一致的困扰。
                      .高度非过程化。与高级编程语言相比,SQL对数据库的操作方面是非常有优势的。使用SQL用户只需提出“做什么”,不用了解实现的细节,复杂的过程均由系统自动完成。
                      .语言简洁,易学易用。
                      (3)关系数据的规范化理论。为了使数据库设计的方法走向完备,人们提出规范化理论。规范化可以使关系的结构简化,更加有规律,存储尽量减少冗余,使数据库设计得更为合理。规范化的目的可以概括为以下几点:①保证库中每一个分量都不可再分;②消除冗余存储,简化检索操作;③消除插入异常和删除异常。
                      数据库系统的建立
                      数据库系统是企业整个管理信息系统的核心和基础,它的任务就是把系统中大量的数据按一定的模型组织起来,以便及时、准确地提供给用户。一个管理信息系统的各部分是否能紧密地结合在一起以及如何结合,关键在数据库。因此只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的管理信息系统。数据库系统是整个管理信息系统建设重要的组成部分。
                      建设数据库系统一般要分为两步:一是设计和建立高效的数据库(DB),二是设计和建立数据库管理系统(DBMS)。其基本过程如下图所示。
                      
                      数据库管理信息系统的建设过程
               数据仓库、联机分析处理和数据挖掘
               广义概念上的数据仓库是一种帮助企业作决策的体系化解决方案,它包括了三个方面的内容:数据仓库技术(Data Warehouse,DW)、联机分析处理技术(Online Analytical Processing,OLAP)和数据挖掘技术(Data Mining,DM)。
                      数据仓库技术
                      数据仓库是一种只读的、用于分析的数据库,常常作为决策支持系统的底层。它从大量的事务型数据库中抽取数据,并将其清理、转换为新的存储格式,即为了决策目标而把数据聚合在一种特殊的格式中。数据仓库之父W. H. Inmon对数据仓库的定义是:数据仓库是支持管理决策过程的、面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合。其中,“主题”是指用户使用数据仓库辅助决策时所关心的重点问题,每一个主题对应一个客观分析领域,如销售、成本、利润的情况等。那么,所谓“面向主题”就是指数据仓库中的信息是按主题组织的,按主题来提供信息。“集成的”是指数据仓库中的数据不是业务处理系统数据的简单拼凑与汇总,而是经过系统地加工整理,是相互一致的、具有代表性的数据。所谓“随时间变化”,是指数据仓库中存储的是一个时间段的数据,而不仅仅是某一个时点的数据,所以主要用于进行时间趋势分析。一般数据仓库内的数据时限为5~10年,数据量也比较大。“信息本身相对稳定”,是指数据一旦进入数据仓库,一般情况下将被长期保留,变更很少。
                      数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源,为了决策需要而产生的,它并不是所谓的“大型数据库”。数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库往往有如下几个特点:
                      (1)数据效率足够高。数据仓库的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1~3日才能给出数据,显然不行的。
                      (2)数据质量足够好。数据仓库所提供的各种信息,肯定要准确的数据,但由于数据仓库流程通常分为多个步骤,包括数据清洗、装载、查询、展现等,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
                      (3)数据有足够的扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来若干年的扩展性,这样的话,未来不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了。
                      数据仓库组织和管理数据的方法与普通数据库不同。主要表现在三个方面:
                      (1)依据决策要求,只从数据库中抽取那些需要的数据,并进行预处理使系统获得特定的数据格式。
                      (2)数据仓库是多维的,即数据仓库的数据的组织方式有多层的行和列。
                      (3)支持决策处理,不同于普通的事务处理。
                      数据仓库技术在近几年蓬勃发展起来,不少厂商都推出了他们的数据仓库产品,同时也推出了一些分析工具。仅仅拥有数据仓库是不够的,在其上应用各种工具进行分析,才能使数据仓库真正发挥作用。联机分析处理和数据挖掘就是这样的分析工具。
                      联机分析处理技术
                      联机分析处理是针对特定问题的联机数据访问和分析,通过对信息进行快速、稳定、一致和交互式的存取,对数据进行多层次、多阶段的分析处理,以获得高度归纳的分析结果。联机分析处理是一种自上而下、不断深入的分析工具:在用户提出问题或假设之后,它负责提取出关于此问题的详细信息,并以一种比较直观的方式呈现给用户。联机分析处理技术的发展速度很快,在数据仓库的概念提出不久,联机分析处理的理论及相应工具就被相继推出了。
                      联机分析处理要求按多维方式组织企业的数据,传统的关系数据库难以胜任。为此,人们提出了多维数据库的概念。正是这一技术的发展使决策分析中的数据结构和分析方法相分离,才有可能研制出通用而灵活的分析工具,并使分析工具产品化。维是人们观察现实世界的角度,决策分析需要从不同的角度观察分析数据,以多维数据为核心的多维数据分析是决策的主要内容。多维数据库是以多维方式来组织数据的。目前,联机分析处理的工具可分为两大类,一类是基于多维数据库的,另一类是基于关系数据库的。两者的相同点是基本数据源仍是数据库和数据仓库,都是基于关系数据模型的,都向用户显示多维数据视图;不同点在于,前者是把分析所需的数据从数据仓库中抽取出来,物理地组织成多维数据库,而后者则是利用关系表来模拟多维数据,并不是物理地生成多维数据库。
                      数据挖掘技术
                      数据挖掘的基本思想就是从数据中抽取有价值的信息,其目的是帮助决策者寻找数据间潜在的关联,发现被忽略的要素,而这些信息对预测趋势和决策行为也许是十分有用的。
                      从数据库的角度看,数据挖掘就是这样一个过程,它从数据库的数据中识别出有效的、新颖的、具有潜在效用的并最终可理解的信息(如规则、约束等)的非平凡过程。非平凡是一个数学概念,用来描述其复杂程度,即数据挖掘既不是把数据全部抽取,也不是所有数据都不抽取,而是抽取出隐含的、未知的、可能有用的信息。
                      从决策支持的角度看,数据挖掘是一种决策支持的过程,主要基于人工智能、机器学习、统计学和数据库技术等多种技术,能高度自动地分析企业原始的数据,进行归纳推理,从中挖掘出潜在的模式,使系统能通过这些发现的知识来预测客户的行为,帮助企业的决策者调整市场策略,从而减少风险,辅助做出正确的决策。它是提高商业和科学决策过程质量和效率的一种新方法。
                      数据挖掘和联机分析处理都可以在数据仓库的基础上对数据进行分析,以辅助决策,那么它们之间是否有差别呢?答案是肯定的。从某种意义上来说,联机分析处理还是一种传统的决策支持方法。即,在某个假设的前提下通过数据查询和分析来验证或否定这个假设,所以联机分析处理是一种验证型的分析。一般来说验证型的分析有如下局限性:
                      (1)常常需要以假设为基础。用户的假设能力有限,只能局限于对几种变量进行假设。
                      (2)联机分析处理需要对用户的需求有全面而深入的了解,然而实际上有些时候用户的需求并不是确定的。
                      (3)抽取信息的质量依赖于用户对结果的解释,容易导致错误。
                      我们可以看出,联机分析处理是由用户驱动的,很大程度上受到用户水平的限制。与联机分析处理不同,数据挖掘是数据驱动的,是一种真正的知识发现方法。使用数据挖掘工具,用户不必提出确切的要求,系统能够根据数据本身的规律性,自动地挖掘数据潜在的模式,或通过联想,建立新的业务模型,帮助决策者调整市场策略,并找到正确的决策。这显然利于发现未知的事实。从数据分析深度的角度来看,联机分析处理位于较浅的层次,而数据挖掘则处于较深的层次。所以,联机分析处理和数据挖掘的主要差别就在于是否能自动地进行数据分析。
                      近几年,越来越多的联机分析处理产品融入了数据挖掘的方法,所以联机分析处理与数据挖掘间的界限正在逐渐模糊。
               SQL语言
                      SQL概述
                      SQL(Structured Query Language)结构化查询语言,是一种数据库查询及程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口,常用的数据库开发系统,都支持SQL语言作为查询语言。
                      SQL语言主要具有以下优点:
                      .非过程化语言。SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作。
                      .统一的语言。SQL将许多任务统一在一种语言之中,包括:查询数据;在表中插入、修改和删除记录;建立、修改和删除数据对象;控制对数据和数据对象的存取;保证数据库一致性和完整性。
                      .是所有关系数据库的公共语言。由于主流的关系数据库管理系统都支持SQL语言,所以SQL语言具有很强的公用性,所有用SQL编写的程序都是可以移植的。
                      SQL语法基础
                      (1)CREATE建立表结构语句。
                      基本语法格式:
                      
                      语法说明:CREATE语句用于创建数据库中的表。其中column_name代表表中的字段名称,data_type代表字段可容纳何种数据类型。常用的数据类型可以是integer(size)、int(size)、smallint(size)、tinyint(size)、decimal(size,d)、numeric(size,d)、varchar(size)、date(yyyymmdd)等。CREATE语句的应用格式如下所示。
                      
                      
                      该语句创建Student学生表,其中包含Id、Sname等六个字段。
                      (2)SELECT查询语句。SELECT语句是数据库最基本语句之一,也是最常用的SQL操作。用户使用SELECT语句可以从数据库中按照自身的需要查询数据信息。系统按照用户的要求选择数据,然后将选择的数据以用户规定的格式整理后返回给用户。用户使用SELECT语句不但可以对数据库进行精确查询,还可以进行模糊查询。
                      基本语法格式:
                      
                      语法说明:ALL|DISTINCT用来标识在查询结果中出现相同行时的处理方式。如果使用关键字ALL,则返回查询结果中的所有行(包括重复行);如果使用关键字DISTINCT,返回删除相同行的查询结果;select_list表示获取字段信息的字段列表,各个字段名称之间用逗号分隔。在这个列表中可以包含数据源表或视图中的字段名称及其他表达式,例如常量或函数。如果用户用“*”来代替字段列表,那么系统将返回指定数据库表中的全部数据信息;INTO new_table_list代表创建一个新的数据表,这个数据表的名称是new_table_list,包含的数据信息是查询出来的结果集;table_list表示数据信息的数据源表列表;WHERE search_conditions代表查询条件,该子句表示一个或多个筛选条件的组合。WHERE子句中可以使用算数运算符、比较运算符和逻辑运算符来设置条件。还可以使用BETWEEN…AND…、LIKE、IN、NOT IN等特殊运算符;GROUP BY group_by_list表示查询的分组条件,即归纳信息类型;HAVING search_conditions表示组或聚合的查询条件;ORDER BY order_lis表示查询结果的排序方式。具体应用格式如以下SQL语句所示。
                      语句一:
                      
                      该语句查找Student学生表中所有学生的信息。
                      语句二:
                      
                      该语句查找Student学生表中广东籍女学生的Sno、Sname和Sclass信息。
                      语句三:
                      
                      该语句查找Student学生表中Sno最小的前10个记录。
                      语句四:
                      
                      该语句查找Student学生表中所有Snative既不是湖南也不是湖北的学生信息。
                      语句五:
                      
                      该语句查询以Sclass作为分组条件,查询结果为Student学生表中每个班的人数。
                      语句六:
                      
                      该语句查找Student学生表中人数大于30的Sclass和人数。HAVING子句总是跟在GROUP BY子句之后,不可以单独使用。
                      (3)INSERT插入语句。在SQL语句中,向数据表中添加数据的常用方法就是使用INSERT语句。
                      语法格式:
                      
                      语法说明:INSERT INTO子句用于指定向某数据表插入数据。数据表名跟在INSERT INTO关键字后面;column name用于指定该数据表的列名,可以指定一列或者多列,所有这些列都必须放在圆括号“()”中。如果要指定多个列,则必须用逗号隔开。如果指定了列名,那么在目标数据表中所有未被指定的列必须支持空值或者默认值;VALUES子句主要用于提供向表中插入的值。这些值也必须放在圆括号中,如果指定的值为多个时,这些值之间也必须用逗号隔开。具体应用形式可见以下语句。
                      
                      该语句向Student学生表插入一条新的记录。
                      UPDATE更新语句
                      当数据被添加到数据表之后,会经常需要修改。在SQL语言中,对数据的修改是通过使用UPDATE语句来实现的。
                      语法格式:
                      
                      语法说明:UPDATE子句和SET子句是必需的,而WHERE子句是可选的。在UPDATE子句中,必须指定将要更新的数据表的名称。在SET子句中,必须指定一个或多个子句表达式。使用UPDATE语句可以更改表中单行、多行或者表或视图中所有行的数值。具体应用形式可见以下语句。
                      
                      将Student学生表中Sname为刘晶晶的Sclass和Snative记录进行更新。
                      DELETE删除语句
                      DELETE语句用来从表或视图中删除一行或者多行记录。
                      语法格式:
                      
                      语法说明:DELETE FROM子句要求指定从中删除行的表的名称,WHERE指定搜索条件。如果在DELETE语句中没有包括WHERE子句,那么将从指定的表中删除所有行。在DELETE语句中没有指定列名,这是因为不能从表中删除单个列的值。具体应用形式可见以下语句。
                      
                      该语句删除Student学生表中Sname为“刘晶晶”的记录。
 
       一致性
        在讨论一致性之前,先看一下CAP理论。它作为一种理论依据,使得在不同应用中,对一致性也有了不同的要求。CAP理论:简单地说,就是对于一个分布式系统,一致性(Consistency)、可用性(Availablity)和分区容忍性(Partition tolerance)三个特点最多只能三选二。
        一致性意味着系统在执行了某些操作后仍处在一个一致的状态,这点在分布式的系统中尤其明显。比如某用户在一处对共享的数据进行了修改,那么所有有权使用这些数据的用户都可以看到这一改变。简言之,就是所有的结点在同一时刻有相同的数据。
        可用性指对数据的所有操作都应有成功的返回。高可用性则是在系统升级(软件或硬件)或在网络系统中的某些结点发生故障的时候,仍可以正常返回。简言之,就是任何请求不管成功或失败都有响应。
        分区容忍性这一概念的前提是在网络发生故障的时候。在网络连接上,一些结点出现故障,使得原本连通的网络变成了一块一块的分区,若允许系统继续工作,那么就是分区可容忍的。
        在数据库系统中,事务的ACID属性保证了数据库的一致性。比如银行系统中,转账就是一个事务,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,具有原子的不可拆分特性,从而保证了整个系统中的总金额没有变化。
        然而,这些ACID特性对于大型的分布式系统来说,是和高性能不兼容的。比如,你在网上书店买书,任何一个人买书这个过程都会锁住数据库直到买书行为彻底完成(否则书本库存数可能不一致),买书完成的那一瞬间,世界上所有的人都可以看到书的库存减少了一本(这也意味着两个人不能同时买书)。这在小的网上书城也许可以运行得很好,可是对Amazon这种网上书城却并不是很好。
        而对于Amazon这种系统,它也许会用Cache系统,剩余的库存数也许是几秒甚至几个小时前的快照,而不是实时的库存数,这就舍弃了一致性。并且,Amazon可能也舍弃了独立性,当只剩下最后一本书时,也许它会允许两个人同时下单,宁愿最后给那个下单成功却没货的人道歉,而不是整个系统性能的下降。
        由于CAP理论的存在,为了提高性能,出现了ACID的一种变种BASE(这四个字母分别是Basically Available,Soft—state,Eventual consistency的开头字母,是一个弱一致性的理论,只要求最终一致性):
        .Basically Available:基本可用。
        .Soft state:软状态,可以理解为“无连接”的,而与之相对应的Hard state就是“面向连接”的。
        .Eventual consistency:最终一致性,最终整个系统(时间和系统的要求有关)看到的数据是一致的。
        在BASE中,强调可用性的同时,引入了最终一致性这个概念,不像ACID,其并不需要每个事务都是一致的,只需要整个系统经过一定时间后最终达到一致。比如Amazon的卖书系统,也许在卖的过程中,每个用户看到的库存数是不一样的,但最终卖完后,库存数都为0。再比如SNS网络中,C更新状态,A也许可以1分钟就看到,而B甚至5分钟后才看到,但最终大家都可以看到这个更新。
        具体地说,如果选择了CP(一致性和分区容忍性),那么就要考虑ACID理论(传统关系型数据库的基石,事务的四个特点)。如果选择了AP(可用性和分区容忍性),那么就要考虑BASE系统。如果选择了CA(一致性和可用性),如Google的bigtable,那么在网络发生分区的时候,将不能进行完整的操作。
        ACID理论和BASE的具体对比如下表所示。
        
        ACID和BASE的对比表
   题号导航      2015年上半年 系统分析师 下午试卷 论文   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
 
第4题    在手机中做本题