1.2 数据库的种类
按照早期的数据库理论,比较盛行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网企业中,最常用的数据库模式紧张有两种,即关系型数据库和非关系型数据库。

(1)关系型数据库由来
虽然网状数据库和层次数据库已经很好地办理了数据的集中和共享问题,但是在数据独立和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍旧须要明确数据的存储构造,指出存取路径。而关系数据库就可以比较好地办理这些问题。
(2)关系型数据库先容
关系型数据库模型是把繁芜的数据构造归结为大略的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作险些全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。
关系型数据库出身距今已有40多年了,从理论产生到发展到实现产品,例如:常见的MySQL和Oracle数据库,oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的弘大家当市场,而MySQL也是不容忽略的数据库,以至于被Oracle重金收购了。
关系型数据库知识和特点小结:
1)关系型数据库在存储数据时实际便是采取的一张二维表(和Word和excell里表格险些一样)。
2)市场霸占量较大的是MySQL和oracle数据库,而互联网场景最常用的是MySQL数据库。
3)它通过SQL构造化查询措辞来存取、管理关系型数据库的数据。
4)关系型数据库在保持数据安全和数据同等性方面很强,遵照ACID理论
1.2.2 非关系型数据库先容
1、非关系数据库出身的背景
非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思,因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥弗成思议的高效率和高性能。
随着web2.0网站的兴起,传统的关系型数据库在搪塞web2.0网站,特殊是对付规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以战胜的问题,例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效打破,于是开始涌现了大批针对特定场景,以高性能和利用便利为目的功能特异化的数据库产品。NoSQL(非关系型)类的数据库便是这样的情景中出身并得到了非常迅速的发展。
NoSQL是非关系型数据库的广义定义。它冲破了长久以来关系型数据库与ACID理论大一统的局势。NoSQL数据存储不须要固定的表构造,常日也不存在连续操作。在大数据存取上具备关系型数据库无法比拟的性能上风。该术语(NoSQL)在2009年初得到了广泛认同。
当今的运用体系构造须要数据存储在横向伸缩性上能够知足需求。而NoSQL存储便是为了实现这个需求而出身的。Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现。一些开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,redis,mongodb也逐渐的越来越受到各种大中小型公司的欢迎和追捧。
NOSQL非关系型数据库小结:
1)NOSQL数据库不是否定关系型数据库,而是作为关系数据库的一个主要补充。
2)NOSQL数据库为了灵巧及高性能、高并发而生,忽略影响高性能、高并发的功能。
3)在NOSQL数据库领域,当今的最范例产品为Redis(持久化缓存)、Mongodb、Memcached(纯内存)等。
4)NOSQL数据库没有标准的查询措辞(SQL),常日利用REST式的数据接口或者查询API。
2、非关系型数据库种类
1)键值(Key-Value)存储数据库
键值数据库就类似传统措辞中利用的哈希表。可以通过key来添加、查询或者删除数据,由于利用key主键访问,以是会得到很高的性能及扩展性。
键值(Key-Value)数据库紧张是利用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key-Value模型对付IT系统来说的上风在于大略、易支配、高并发。
范例产品:Memcached、Redis、MemcacheDB、Berke ley DB
2)列存储(Column-oriented)数据库
列存储数据库将数据存储存在列族(column family)中,一个列族存储常常被一起查询的干系数据。举个例子,如果我们有一个Person类,我们常日会一起查询他们的姓名和年事而不是薪资。这种情形下,姓名和年事就会被放入一个列族中,而薪资则在另一个列族中。
这部分数据库常日用来应对分布式存储的海量数据。键仍旧存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。
范例产品:Cassandra,HBase
3)面向文档(Document-Oriented)的数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半构造化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,许可之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
面向文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的凑集。每个数据项都有一个名称与对应的值,值既可以是大略的数据类型,如字符串、数字和日期等;也可以是繁芜的类型,如有序列表和关联工具。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以利用XML、JSON或者JSONB等多种形式存储。
范例产品:MongDB、CouchDB
4)图形(Graph)数据库
图形数据库许可我们将数据以图的办法存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。
图形构造的数据库同其他行列以及刚性构造的SQL数据库不同,它是利用灵巧的图形模型,并且能够扩展到多个做事器上。NoSQL数据库没有标准的查询措辞(SQL),因此进行数据查询须要定制数据模型。许多NoSQL数据库都有REST的数据接口或者查询API。
范例产品:Neo4J、InfoGr id
1.3 常用关系型数据库产品先容1.3.1 ORACLE数据库
Oracle前身叫SDL,由Larry Ellison和另两个编程职员在1977创办,他们开拓了自己的拳头产品,在市场上大量发卖,1979年,Oracle公司引入了第一个商用SQL关系数据库管理系统。Oracle公司是最早开拓关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场霸占率数一数二。
Oracle公司是目前环球最大的数据库软件公司,也是近年业务增长极为迅速的软件供应与做事商。
2007年7月12日,甲骨文公司在美国纽约宣告推出数据库Oracle llg,这是Oracle数据库的最新版本。Oracle先容说,Oracle llg有400多项功能,经由了1500万个小时的测试,开拓事情量达到了3.6万人/月。Oraclellg在安全,XML DB,备份等方面得到了很大提升。
紧张运用范围:传统大企业,大公司,政府,金融,证券等等。
版本升级:Oracle8i,Oracle9i,Oracle1Og,Oracle11g,Oracle12c。
1.3.2 MySQL数据库
MySQL数据库是一个中小型关系型数据库管理系统,软件开拓者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购,后Sun公司又被oracle公司收购。目前MySQL被广泛地运用在Internet上的大中小型网站中。由于其体积小、速率快、总体拥有本钱低,尤其是开放源码这一特点,许多大中小型网站为了降落网站总体拥有本钱而选择了MySQL作为网站数据库,乃至海内有名的淘宝网也选择弃用ORACLE而改换为更开放的MySQL。
MySQL数据库紧张运用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。
1.3.3 MariaDB数据库
MariaDB数据库管理系统是MySQL数据库的一个分支,紧张由开源社区掩护,采取GPL授权容许。开拓这个MariaDB数据库分支的可能缘故原由之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此MySQL开源社区采取分支的办法来避开这个风险。
开拓MariaDB数据库的目的是完备兼容MySQL数据库,包括API和命令行,使之能轻松的成为MySQL的代替品。在存储引擎方面,利用XtraDB (英语:XtraDB)来代替MySQL的 InnoDB MariaDB 由MySQL的创始人 Michael Widenius(英语:Michael Widenius)主导开拓,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中,MariaDB数据库的名称来自MySQL的创始人Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,更换了MySQL的MylSAM存储引擎,它利用了Percona的XtraDB(InnoDB的变体)。这个版本还包括了PrimeBaseXT(PBXT)和 FederatedX存储引擎。
MariaDB数据库直到5.5版本,均依照MySQL的版本发行。因此,利用MariaDB5.5 的人会从MySQL5.5中理解到MariaDB的所有功能。
1.3.4 SQL Server 数据库
Microsoft SQL Server是微软公司开拓的大型关系型数据库系统。SQL Server的功能比
较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Windows操 作系统紧密集成,不论是运用程序开拓速率还是系统事务处理运行速率,都能得到较大的 提升。对付在Windows平台上开拓的各种企业级信息管理系统来说,不论是C/S(客户机/ 做事器)架构还是B/S(浏览器/做事器)架构,SQL Server都是一个很好的选择。SQL Server的缺陷是只能在Windows系统下运行。
1987年,微软和IBM互助开拓完成OS/2,IBM在其发卖的OS/2 ExtendedEdition系统中绑定了OS/2 DatabaseManager,而微软产品线中尚短缺数据库产品。为此,微软将目光投向Sybase,同Sybase签订了互助协议,利用Sybase的技能开拓基于OS/2平台的关系型数据库。1989年,微软发布了SQLServer1.0版。Microsoft在与Sybase分道扬镳后,随后在其6.05和7.0版本中重写了核心数据库系统,如今SQL Server 2008即将到来。
紧张运用范围:部分企业电商(央视购物),利用windows做事器平台的企业。
1.3.5 Access 数据库
美国Microsoft公司于1994年推出的微机数据库管理系统。它具有界面友好、易学易
用、开拓大略、接口灵巧等特点,是范例的新一代桌面关系型数据库管理系统。它结合了 Microsoft Jet Database Engine和图形用户界面两项特点,是Microsoft Office的成员之一。 Access 能够存取 Access/Jet、Microsoft SQL Server、Oracle,或者任何ODBC兼容数据库的资料。Access界面友好而且易学易用,作为Office套件的一部分,可以与Office集成,实现无缝连接Access 供应了表(Table)、查询(Query)、窗体(Form)、报表(Report)、宏(Macro)、 模块(Module)等用来建立数据库系统的工具。供应了多种引导、天生器、模板,把数据存储、数据查询、界面设计、报表天生等操作规范化。
Access是入门级小型桌面数据库,性能安全性都很一样平常。可供个人管理或小型网站之用。Access不是数据库措辞,只是一个数据库程序。目前最新版本为Office2007。其紧张特点 如下:
1)完善地管理各种数据库工具,具有强大的数据组织、用户管理、安全检讨等功能。
2)强大的数据处理功能,在一个事情组级别的网络环境中,利用Access开拓的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户做事器(Cient/Server)构造和相应的数据库安全机制,Access具备了许多前辈的大型数据库管理系统所具备的特色,如事务处理/出错回滚能力等。
3)可以方便地天生各种数据工具,利用存储的数据建立窗体和报表,可视性好。
4)作为Office套件的一部分,可以与Office集成,实现无缝连接。
5)能够利用Web检索和发布数据,实现与Internet的连接。Acess紧张适用于中小型运用系统,或作为客户机/做事器系统中的客户端数据库。
早期运用领域:小型程序系统asp+access系统,留言板,校友录等。
1.3.6 其他不常用关系型数据库
DB2, PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡出了普通运维的视线,特殊是互联网公司险些见不到,因此我们这里就不多先容了。
1.4 常用非关系型数据库产品先容1.4.1 Memcached(key-value)
Memcached是一个开源的、高性能的、具有分布式内存工具的缓存系统。通过它可以减轻数据库负载,加速动态的Web运用,最初版本由LiveJoumal的Brad Fitzpatrick在2003年开拓完成。目前环球有非常多的用户都在利用它来构建自己的大负载网站或提高自己的高访问网站的相应速率。把稳:Memcache是这个项目的名称,而Memcached是做事器真个主程序文件名。
缓存一样平常用来保存一些常常被存取的工具或数据(例如,浏览器会把常常访问的网页缓存起来一样),通过缓存来存取工具或数据要比在磁盘上存取快很多,前者是内存,后 者是磁盘。Memcached是一种纯内存缓存系统,把常常存取的工具或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的办法被存取,memcached里面的数据就像
一张巨大的HASH表,数据以key-value对的办法存在。Memcached通过缓存常常被存取的工具或数据,从而减轻频繁读取数据库的压力,提高网站的相应速率,构建出速率更快的可扩展的Web运用。官方:http://memcached.org/
由于memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于 Memcached开拓了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的持久化存储机制和异步主辅复制机制,使Memcached具备了事务规复能力、持久化数据存储能力和分布式复制能力,Memcachedb非常适宜须要超高性能读写速率、持久化保存的运用处景,但是最近几年逐渐被其他的持久化产品替代例如redis。
1.4.2 redis(key-value)
和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value 类型相对更多,包括string(字符串)、list(链表)、set(凑集)和zset(有序凑集)等。这些数据类
型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操作,而且这些操作都 是原子性的。在此根本上,redis支持各种不同办法的排序。与memcached一样,为了担保效率,redis的数据都是缓存在内存中。差异是redis会周期性的把更新的数据写入磁盘或者把修正操作写入追加的记录文件,并且在此根本上实现了master-slave(主从)同步。Redis是一个高性能的key-value数据库。redis的涌现,很大程度补偿了memcached这类key/value存储的不敷,在部分场合可以对关系数据库綱很好的补充浸染。它供应了Python,Ruby,Erlang,PHP客户端,利用很方便。
官方:http://www.redis.io/documentation
redis特点:
1)支持内存缓存,这个功能相称于memcached。
2)支持持久化存储,这个功能相称于memcachedb,ttserver。
3)数据类型更丰富。比其他key-value库功能更强。
4)支持主从集群,分布式。
5)支持行列步队等分外功能。
运用:缓存从存取memcached变动存取redis。
1.4.3 MongoDB (Document-oriented)
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据构造非常疏松,类似json的bjson格式,因此可以存储比较繁芜的数据类型。Mongodb最大的特点是他支持查询措辞非常强大,其语法有点类似于面向工具的查询措辞,险些可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易支配、易利用,存储数据非常方便。
紧张功能特性:
1)面向凑集存储,易存储工具类型的数据
“面向凑集”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个凑集(Collenction)。每个凑集在数据库中都有一个唯一的标识名,并且可以包含无限数目的文挡。凑集的观点类似关系型数据库(RDBMS)里的表(table),不同的是它不须要定义任何模式(schema)。
②模式自由
模式自由(schema-free),意味着对付存储在mongodb数据库中的文件,我们不须要知道它的任何构造定义。如果须要,你完备可以把不同构造的文件存储在同一个数据库里。
3)支持动态查询
4)支持完备索引,包含内部工具
5)支持查询
6)支持复制和故障规复
7)利用高效的二进制数据存储,包括大型工具(如视频等)
8)自动处理碎片,以支持云打算层次的扩展性
9)支持RUBY,PYTHON,JAVA,C++, PHP 等多种措辞
10)文件存储格式为BSON (—种JSON的扩展)
BSON (Binary Serialized document Format)存储形式是指:存储在凑集中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中繁芜的文件类型。
11)可通过网络访问
MongoDB做事端可运行在Linux、Windows或OS X平台,支持32位和64位运用,默认端口为27017。推举运行在64位平台。
McmgoDB把数据存储在文件中(默认路径为:/data/db),为提高效率利用内存映射文件进行管理。
MongoDB 更详细的文档
http://www.oschina.net/question/12_38878
1.4.4 Cassandra(Column-oriented)
Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开拓,用于储存特殊大的数据。 Facebook目前在利用此系统。
紧张特性:
1)分布式
2)基于column的构造化
3)高伸展性
Cassandra的紧张特点便是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络做事,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对子一个Cassandra群集来说,扩展性能是比较大略的事情,只管在群集里面添加节点就可以了。
Cassandra是一个稠浊型的非关系的数据库,类似于Google的BigTable。其紧张功能比Dynomite (分布式的Key-Value存储系统)更丰富,Cassandra最初由Facebook开拓,后转变成了开源项目。它是一个网络社交云打算方面空想的数据库。以Amazon专有的完备分布式的Dynamo为根本,结合了Google BigTable基子列族(Column Family)的数据模型。P2P去中央化的存储。很多方面都可以称之为Dynamo2.0。
官方:http://cassandra.org
1.4.5 其他不常用非关系型数据库
HBase,MemcacheDB、Berkeley DB、TokyoCabinet\Tokyo Tyrant(ttserver)
数据库干系知识
1.5 数据库发展历史大事记
1951:Univac系统利用磁带和穿孔卡片作为数据存储。
1956:IBM公司在其Model305 RAMAC中第一次引入了磁盘驱动器。
1961:通用电气(GE)公司的Charles Bachman开拓了第一个数据库管理系统IDS。
1969:E.F.Codd发明了关系数据库。
1973:由John J.Cullinane领导Cullinane公司开拓了针对IBM主机的基子网络模型的数据库IDMS。
1976: Honeywell公司推出了第一个商用关系数据库产品Multics Relational Data Store。 1979:Oracle公司引入了第一个商用SQL关系数据库管理系统。
1983:IBM推出了 DB2数据库产品。
1985:为Procter&Gamble系统设计的第一个商务智能系统产生。
1991:W.H.“Bill”Inmon揭橥了“构建数据仓库”。
1.6 数据库软件企业运用排名参考http://db-engines.com/en/ranking