一、常用关系型数据库产品介绍
1.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.2、MySQL数据库
MySQL数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购,后Sun公司又被oracle公司收购。目前MySQL被广泛地应用在Internet上的大中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库,甚至国内知名的淘宝网页选择弃用ORACLE而更换为更开放的MySQL。
MySQL数据库主要应用范围:互联网领域、大中小型网站,游戏公司,电商平台等等。
1.3、MariaDB数据库
MariaDB数据库管理系统是MySQL数据库的一个分支,主要由开源社区维护,采用CPL授权许可。开发这个MariaDB数据库分支的可能原因之一是:甲骨文公司收购了MySQL之后,有将MySQL闭源的潜在风险,因此MySQL开源社区采用分支的方式来避开这个风险。(CentOS7已经将集成的MySQL替换为了MariaDB)
开发MariaDB数据库的目的是完全兼容MySQL数据库,包括API和命令行,使之能轻松的成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。MariaDB由MySQL的创始人Michael
Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入了Oracle的手中。MariaDB数据库的名称来自MySQL的创始人Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用Percona的XtraDB。这个版本还包括了PrimeBase XT和FederatedX存储引擎。
MariaDB数据库直到5.5八本,均依照MySQL的版本发行。因此,使用MariaDB5.5的人会从MySQL5.5中了解到MariaDB的所有功能。
1.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.5、Access数据库
美国Microsoft公司于1994年推出的微机数据库管理系统。它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面关系型数据库管理系统。它结合了Microsoft Jet Database Engine和图形用户界面两项特点,是Microsoft
Office的成员之一。Access能够存取Access/Jet、Microsoft SQL Server、Oracle,或者任何ODBC兼容数据库的资料。
Access是入门级小型桌面数据库,性能安全性都很一般。可供个人管理或小型网站使用。
1.6、其他数据库
DB2, PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡出了普通运维的视线,特别是互联网公司几乎见不到。
二、常用的非关系型数据库产品介绍
2.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。特点:①key-value型数据库②纯内存数据库,重启丢失数据③持久化产品memcachedb(sina)
2.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特点:
①支持内存缓存,这个功能相当于memcached。
②支持持久化存储,这个功能相当于memcachedb,ttserver。
③数据类型更丰富。比其他key-value库功能更强。
④支持主从集群,分布式。
⑤支持队列等特殊功能。
应用:缓存从存取memcached更改存取redis。
2.3、MongoDB(Document-oriented)
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb最大的特点是他支持查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。
主要功能特性:
①面向集合存储,易存储对象类型的数据
“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文挡。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
②模式自由
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要,你完全可以把不同结构的文件存储在同一个数据库里。
③支持动态查询
④支持完全索引,包含内部对象
⑤支持查询
⑥支持复制和故障恢复
⑦使用高效的二进制数据存储,包括大型对象(如视频等)
⑧自动处理碎片,以支持云计算层次的扩展性
⑨支持RUBY,PYTHON,JAVA,C++, PHP 等多种语言
⑩文件存储格式为BSON (—种JSON的扩展)
BSON (Binary Serialized document Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。
⑩①可通过网络访问
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台。
McmgoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。
MongoDB 更详细的文档
http://www.oschina.net/question/12_38878
2.4、Cassandra(Column-oriented)
Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。 Facebook目前在使用此系统。
主要特性:
①分布式
②基于column的结构化
③高伸展性
Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对子一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite (分布式的Key-Value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基子列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo2.0。
官方:http://cassandra.org
2.5、其他不常用非关系型数据库
HBase,MemcacheDB、Berkeley DB、TokyoCabinet\Tokyo Tyrant(ttserver)。