BUSINESSREPORTPRESENTEDBYOfficePLUSNoSQL2016年1月ContentsRelationalDatabaseNon-RelationalDatabaseApacheHadoopDatabaseMongoDB1、RelationalDatabase关系模型(Relationalmodel)是基于谓词逻辑和集合论的一种数据模型,最早于1969年由埃德加·科德提出。关系模型是采用二维表格结构表达实体类型及实体间联系的数据模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系型数据库是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。当前主流的关系型数据库有Oracle、DB2、MicrosoftSQLServer、MicrosoftAccess、MySQL、浪潮K-DB等。结构化查询语言(StructuredQueryLanguage,缩写:SQL)是关系型数据库中的标准数据查询语言,IBM公司最早使用在其开发的数据库系统中。ER模型,全称为实体联系模型或实体关系模型或实体联系模式图(ERD)(Entity-relationshipmodel)由美籍华裔计算机科学家陈品山发明,是概念数据模型的高层描述所使用的数据模型或模式图,它为表述这种实体联系模式图形式的数据模型提供了图形符号。1、RelationalDatabase传统关系型数据库面临的挑战主要有以下几点:(1)对数据库高并发读写的需求Web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,无法使用动态页面静态化技术,因此数据库的并发负载非常高,往往要达到每秒上万次的读写请求,此时的磁盘I/O根本无法承受如此之多的读写请求。(2)对海量数据的高效率存储和访问的需求。类似Facebook、Twitter和Friendfeed这样的SNS网站,每天用户产生海量的用户动态。(3)对数据库的高扩展性和高可用性的需求。在基于Web的架构中,数据库是最难进行横向扩展的,当用户量和访问量增加时,数据库没有办法像WebServer那样简单的通过添加更多的硬件和服务结点来扩展性能和负载能力。1、RelationalDatabaseDB-Engine发布最新1月份的数据库排名,该排名每个月发布一次,根据数据库的受欢迎程度进行排名。1、RelationalDatabase2、Non-RelationalDatabaseNoSQL,泛指非关系型的数据库。非关系型数据库不使用SQL作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用SQL的JOIN操作,一般有水平可扩展性的特征。关系型数据库通常部署在一台服务器上,通过增加处理器、内存和硬盘来升级。部署在多台服务器上的关系型数据库通过是依赖互相复制来保持数据同步。NoSQL数据库可以部署在单服务器上,但更多的是分布式部署。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。NoSQL一词最早出现于1998年,是CarloStrozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。2009年在亚特兰大举行的no:sql(east)讨论会是一个里程碑,其口号是selectfun,profitfromreal_worldwhererelational=false;NoSQL数据库的四大分类表格分析分类主流产品典型应用场景数据模型优点缺点键值(key-value)TokyoCabinet/Tyrant,Redis,Voldemort,OracleBDB内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。Key指向Value的键值对,通常用hashtable来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据列存储数据库Cassandra,HBase,Riak分布式的文件系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限文档型数据库CouchDB,MongoDBWeb应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法。图形(Graph)数据库Neo4J,InfoGrid,InfiniteGraph社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。2、Non-RelationalDatabase分布式文件系统(DistributedFileSystem,缩写为DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户端/服务器模式。Apache软件基金会(ApacheSoftwareFoundation,简称为ASF),正式创建于1999年,是专门为支持开源软件项目而办的一个非营利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(ApacheLicense)。ApacheHadoop是一个能够对大量数据进行分布式处理的软件框架。Hadoop以一种可靠、高效、可伸缩的方式进行数据处理。Hadoop是根据Google发表的MapReduce和GFS两篇论文的思想发展而来。Google文件系统(GoogleFileSystem,缩写为GFS)是一种专有分布式文件系统,由Google公司开发,运行于Linux平台上。MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。BigTable是一种压缩的、高性能的、高可扩展性的,基于Google文件系统的数据存储系统,用于存储大规模结构化数据,适用于云计算。2、Non-RelationalDatabase3、ApacheHadoopDatabaseHBase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能。其目标是处理非常庞大的表,可以用普通的计算机处理超过10亿行数据,并且有数百万列元素组成的数据表。GoogleBigTable论文中BigTable的定义:ABigtableisasparse,distributed,persistentmultidimensionalsortedmap.Themapisindexedbyarowkey,columnkey,andatimestamp;eachvalueinthemapisanuninterpretedarrayofbytes.3、ApacheHadoopDatabase与Hadoop一样,HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。HBase中的表一般有这样的特点:1大:一个表可以有上亿行,上百万列2面向列:面向列(族)的存储和权限控制,列(族)独立检索3稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏HBase中的每一行记录有三个基本类型的定义:RowKey,TimeStamp,Column。RowKey是行在BigTable中的唯一标识,TimeStamp是每次数据操作对应关联的时间戳。用户在表格中存储数据,每一行都有一个可排序的主键和任意多的列。由于是稀疏存储的,所以同一张表里面的每一行数据都可以有截然不同的列。HBase将行ID、列簇号、列号以及时间戳一起组成一个Key,然后将Value按Key的顺序进行存储。3、ApacheHadoopDatabase下面就是Hbase存储数据的概念视图(逻辑数据模型)RowKeyTimeStampColumncontents:Columnanchor:Columnmime:com.cnn.:my.look.caCNN.comt6html...text/htmlt5html...t3html...3、ApacheHadoopDatabase物理数据模型RowKeyTimeStampColumncontents:com.cnn.:cnnsi.comCNNt8anchor:my.look.caCNN.comRowKeyTimeStampColumnmime:com.cnn.、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabase3、ApacheHadoopDatabaseNoSQL数据库在以下的这几种情况下比较适用:①数据模型比较简单;②需要灵活性更强的IT系统;③对数据库性能要求较高;④不需要高度的数据一致性;⑤对于给定key,比较容易映射复杂值的环境。4、MongoDBMongoDB是一个基于分布式文件存储的文档型数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。JavaScript对象表示法(JavaScriptObjectNotation,缩写为JSON)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。{people:[{firstName:Brett,lastName:McLaughlin,email:aaaa},{firstName:Jason,lastName:Hunter,email:bbbb},{firstName:Elliotte,lastName:Harold,email:cccc}]}4、MongoDB下面给出的表显示RDBMS术语使用与MongoDB的区别RDBMSMongoDBDatabaseDatabaseTableCollectionTuple/RowDocumentcolumnFieldTableJoinEmbeddedDocumentsPrimaryKeyPrimaryKey(Defaultkey_idprovidedbymongodbitself)数据库服务器和客户端Mysqld/Oraclemongodmysql/sqlplusmongo4、MongoDB增加记录的操作4、MongoDB修改记录的操作4、MongoDB删除记录的操作4、MongoDB查询记录的操作4、MongoDBTHANKYOU!