简单的说,数据库(英文Dtabase)就是一个存放数据的仓库,这个仓库是按照必定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、咱们能够经过数据库提供的多种方法来管理数据库里的数据更简单的形象理解,数据库和咱们生活中存放杂物的仓库性质同样,区别只是存放的东西不一样。mysql
早期比较流行的数据库模型有三种,分别为:层次式数据库、网络式数据库和关系型数据库。web
而在当今的互联网中,最经常使用的数据库模型主要是两种,即关系型数据库和非关系型数据库。redis
1.关系型数据库介绍算法
网络数据库和层次数据库很好地解决了数据的集中和共享问题,可是在数据独立性和抽象级别上仍有很大欠缺。用户对这两种数据库进行存取时,依然须要明确数据的存储结构,支出存储路径。而关系数据库就能够较好地解决这些问题 sql
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。 Oracle 在数据库领域里上升到了霸主地位,造成每一年高达数百亿美圆的庞大市场,而MySQL也是不容忽视的数据库,以致于被Oracle重金收购 mongodb
MySQL 互联网市场 ———— Oracle 传统企业 数据库
(1) 非关系型数据库诞生背景json
非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL” 。指的是非关系型数据库,而不是“No SQL”的意思,所以,NoSQL的产生并非要完全地否认非关系型数据库,而是做为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下能够发挥出不可思议的高效率和高性能。 后端
(2) 随着互联网Web2.0网站的星期,传统的关系型数据库在应付web2,0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了不少难以克服的问题。例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,因而出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NOSQL(非关系型)类的数据就是在这样的情景下诞生并获得了很是迅速的发展。高性能、高并发、对数据一致性要求不高,开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也获得了普遍认同,Redis,mongb也逐渐愈来愈受到各种大中小型公司的欢迎和追捧。 缓存
1) Mysql和Oracle数据库(关系型数据库),互联网运维最经常使用的是MySQL
2) 经过SQL结构化查询语句存储数据
3) 保持数据一致性方面很强,ACID理论
1) NOSQL不是否认关系数据库,而是做为关系数据库的一个重要补充
2) NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
3) NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)
关系型数据库是目前最受欢迎的数据库管理系统,技术比较成熟,尤为是MySQL数据库,不少中小型企业为了节省成本都会选择它。可是将来的趋势也会成为非关系型的市场,毕竟非关系型数据库应用起来会有很大的便捷,不过当下的版本还未成熟到那样的地步,这些就交给咱们的业内大佬们了,下面咱们来认识一下这些数据库吧!
经常使用的 : SQL Server、Oracle、MySQL 、Access 等。
不经常使用的:DB二、 Informix、 Sybase、 PostgreSQL
做为关系数据库领域的开拓者和领航人,IBM在1997年完成了System R系统的原型,1980年开始提供集成的数据库服务器—— System/38,随后是SQL/DSforVSE和VM,其初始版本与SystemR研究原型密切相关。DB2 forMVSV1 在1983年推出。该版本的目标是提供这一新方案所承诺的简单性,数据不相关性和用户生产率。1988年DB2 for MVS 提供了强大的在线事务处理(OLTP)支持,1989 年和1993 年分别以远程工做单元和分布式工做单元实现了分布式数据库支持。最近推出的DB2 Universal Database 6.1则是通用数据库的典范,是第一个具有网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。DB2主要应用于大型应用系统,具备较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/二、Windows等平台下。 DB2采用了数据分级技术,可以使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序能够访问大型机数据,并使数据库本地化及远程链接透明化。它以拥有一个很是完备的查询优化器而著称,其外部链接改善了查询性能,并支持多任务并行查询。 DB2具备很好的网络支持能力,每一个子系统能够链接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤其适用。
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。Oracle 前身叫SDL,由Larry Ellison( 劳伦斯·埃里森 )和以前的同事Bob Miner和Ed Oates在1977年创建了软件开发实验室咨询公司(SDL,Software Development Laboratories),他们开发了本身的拳头产品,在市场上大量销售,1979 年,Oracle公司引入了第一个商用SQL 关系数据库管理系统, 是最先开发关系数据库的厂商之一,其产品支持最普遍的操做系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。因为有先进技术的不断更新,目前Oracle产品覆盖甚广,成为了世界上使用最普遍的关系数据系统之一, 到目前仍在数据库市场上占有主要份额。
完整的数据管理功能:
一、数据的大量性
二、数据的保存的持久性
三、数据的共享性
四、数据的可靠性
Informix在1980年成立,目的是为Unix等开放操做系统提供专业的关系型数据库产品。公司的名称Informix即是取自Information 和Unix的结合。Informix第一个真正支持SQL语言的关系数据库产品是Informix SE(StandardEngine)。InformixSE是在当时的微机Unix环境下主要的数据库产品。它也是第一个被移植到Linux上的商业数据库产品。
Sybase是美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统,Sybase公司成立于1984年,公司名称“Sybase”取自“system”和 “database” 相结合的含义。Sybase公司的创始人之一Bob Epstein 是Ingres 大学版(与System/R同时期的关系数据库模型产品)的主要设计人员。公司的第一个关系数据库产品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 数据库体系结构的思想,并率先在Sybase SQLServer 中实现。
特色:
一、客户/服务器体系结构
二、真正开放的
三、高性能的
1987 年,微软和 IBM合做开发完成OS/2,IBM 在其销售的OS/2 ExtendedEdition 系统中绑定了OS/2Database Manager,而微软产品线中尚缺乏数据库产品。为此,微软将目光投向Sybase,同Sybase 签定了合做协议,使用Sybase的技术开发基于OS/2平台的关系型数据库,1989年,微软发布了SQL Server 1.0 版。SQL Server是通常用于Web上存储数据,提供了众多功能,如对XML和Internet标准的丰富支持,经过Web对数据轻松安全的访问,具备灵活的、安全的、和基于Web的应用程序管理等,及容易操做的操做界面,受到广大用户的喜好。
PostgreSQL 是一种特性很是齐全的自由软件的对象——关系性数据库管理系统(ORDBMS),它的不少特性是当今许多商业数据库的前身。PostgreSQL最先开始于BSD的Ingres项目。PostgreSQL 的特性覆盖了SQL-2/SQL-92和SQL-3。首先,它包括了能够说是目前世界上最丰富的数据类型的支持;其次,目前PostgreSQL 是惟一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的惟一的一种自由软件的数据库管理系统.
MySQL是互联网领域里一款最主要的,深受广大用户欢迎的开源SQL数据库管理系统软件之一。与其余的大型数据库Oracle、DB二、SQL Server等相比,MySQL虽然有它的不足之处,但丝毫也没有减小它受欢迎的程度。mySQL是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构的应用,它由一个服务器守护程序mysqld和不少不一样的客户程序和库组成,是一个小型关系型数据库管理系统,由瑞典MySQL AB公司开发与维护。2006年,MySQL AB公司被SUN公司收购,2008年1月16号,SUN公司又被传统数据数据库领域大佬甲骨文(oracle)公司收购,所以,MySQL数据库软件目前属于Oracle公司,成为传统数据库领域老大的又一个数据库产品,甲骨文公司收购MySQL后,使得自身在商业数据库与开源软件领域市场占有份额都跃居第一的位置,这样的格局,引发了不少人的担心,这种担心直接致使后来的Mysql分支数据库MariaDB的诞生于发展。
MySQL是一种关系型数据库管理系统,关系型数据库的特色是将数据保存在不一样的表中,在将这些表放入不一样的数据库中,而不是将全部数据统一放在一个大仓库里,这样的设计增长了MySQL的读取速度,灵活性和可管理型也获得了很大提升,访问以及管理MySQL数据库的最经常使用标准化语言为SQL结构化查询语句。因为其体积小、速度快、整体拥有成本低,尤为是开放源码这一特色,许多Internet上的中小型网站为了下降网站整体拥有成本而选择了MySQL做为网站数据库。 MySQ L又是开源软件,所以没有必要花大精力和大价钱去使用大型付费数据库管理系统了。MySQL的官方网站的网址是: www.mysql.com
特色:
一、MySQL是开源免费的。
二、MySQL服务器是可靠的、易于使用的、快速的。
三、MySQL服务器工做在客户/服务器或嵌入系统中。
四、MySQL软件不少。
五、MySQL是一个关系数据库管理系统。
Access是入门级小型桌面数据库,性能安全性都很通常,可供我的管理或小型企业只用 ,Access不是数据库语言,只是一个数据库程序,目前最新版本为Office 2007,其特色主要以下:
(1)完善地管理各类数据库对象,具备强大的数据组织,用户管理、安全检查等功能
(2)强大的数据处理功能,在一个工做组级别的网络环境中,使用Access开发的多用户管理系统具备传统的XSASE(DBASE、FoxBASE的统称)数据库系统所没法实现的客户服务器(Ckient/Server)结构和响应的数据库安全机制,Access具有了许多先进的大型数据管理管理系统所具有的特征。
(3)能够方便地生成各类数据对象,利用存储的数据创建窗体和报表
(4)做为Office套件的一部分,能够与Office集成,实现无缝链接
(5)可以利用Web检索和发布数据,实现与Internet的链接,Access主要适用于中小企业应用系统,或做为客户机/服务器系统中的客户端数据库。
DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联网公司几乎见不到
================================================================================================================
键值数据库就相似传统语言中使用哈希表,能够经过key来添加、查询或删除数据,由于使用key主键访问,因此会得到很高的性能及扩展性 ,键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来讲的优点在于简单、易部署、高并发
典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB
格式:k1—>数据
k2—>数据
列存储数据库将数据库存储在列族(column family)中,一个列族存储常常被一块儿查询的相关数据。举个例子,若是咱们有一个Person类,咱们一般会一块儿查询他们的姓名和年龄而不是薪资。这种状况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。
这部分数据库一般用来分布式存储的海量数据,键仍然存在,可是他们的特色是指向了多个列。
典型产品:Cassandra,HBase
面向文档数据库会将以文档的形式存储。每一个文档都是自包含的数据单元,是一系列数据项的集合。每一个数据项都有一个名称与对应的值,值既能够是简单的数据类型,如字符串、数字和日期等;也能够是复杂的类型,若有序列表和关系对象。数据存储的最小单位是文档,同一个表中存储的文档属性能够是不一样的,数据可使用XML、JSON或者JSONB等多种形式存储
典型产品:MorgoDB、CouchDB
(4)图形(Graph)数据库
省略.......
HBase、MemcacheDB、BerkeleyDB、Tokyo Cabinet\Tokyo Tyrant(ttserver)
ttserver 持久化输出,缺点存储2千万条 性能降低(由日本人发明)
==================================================================================================
Memcaced是一个开源的、高性能的、具备分布式内存对象的缓存系统。经过它能够减轻数据库负载,加速动态的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具有了事务恢复能力、持久化数据能力和分布式复制能力,memcached很是适合须要超高性能读写速度、持久化保存的应用场景,可是最近几年逐渐被其余的持久化产品替代如Redis
Memcached小结:
一、key-value行数据库
二、纯内存数据库
三、持久化memcachedb(sina)
和Memcached相似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)等。这些数据类型都支持push/pop、add/remove及取交集、并集和差集及更丰富的操做,并且这些操做都是原子性的。为了保证效率,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
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。他支持的数据库结构很是松散,相似json的bjson格式,所以能够存储比较复杂的数据类型。Mongodb最大的特色是他支持的查询语言很是强大,其语法有点相似于面向对象的查询语言,几乎能够实现相似关系数据库单表查询的绝大部分功能,并且还支持对数据创建索引。
特色:
高性能、易部署、易使用、存储数据很是方便
主要功能特性:
Apache Cassndra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于存储特别大的数据。Facebook目前在使用此系统。Cassandir是一个混合型的非关系的数据库,相似于Google的BigTable。其主要功能比Dynomie(分布式的key-value存储系统)更丰富,Cassandra最初由Facebook开发,后转变成了开源项目。
主要特色:
缘由可能有如下几点:
(1) MySQL性能卓越、服务稳定,不多出现异常宕机
(2) MySQL开放源代码且无版权制约,自主性及使用成本低
(3) MySQL历史悠久,社区及用户活跃,遇到问题能够解决
(4) MySQL软件体积小,安装使用简单,而且易于文虎,安装及维护成本低
(5) MySQL品牌口碑效应,使得企业无需考虑就直接用,LAMP、LEMP流行架构
(6) MySQL支持多用操做系统,提供多种API接口,支持多用开发语言,特别对流行的PHP语言有很好的支持
MySQL数据库的官方网站为http://www.mysql.com,其发布的MySQL版本采用双受权政策,和大多数开源产品的路线同样,分为社区版和商业版,而这两个版本又各自分四个版本依次发布,这四个版本为:Alpha版、Beta版、RC版和GA版本
MySQL商业版与社区办之间的区别在于:
一、商业版本组织管理与测试环节控制更严格,稳定性方面,会比社区版本更稳定
二、MySQL是成熟产品,商业版与社区办之间性能方面相差不大
三、商业版不遵照GPL协议,社区版遵照GPL协议能够免费试用
四、使用商业版后能够购买相关的服务,享受7*24小时技术支持以及及时打补丁等服务,可是用户必须为此支持服务费用
五、社区版本的维护服务只能靠社区提供,没法像商业版本得到故障及补丁解决服务了,可是社区版是彻底免费的方式,社区版的服务质量与时效性等方面就没法与MySQL AB公司提供的服务相比了
(1)Alpha版 —— Alpha版通常只在开发的公司内部运行,不对外公开
(2)Beta版 —— Beta版通常是完成功能的开发与全部的测试工做以后的产品,不会存在较大的功能或性能BUG,而且邀请或提供给用户体验与测试,以便更全面地测试软件的问题。
(3)RC版 —— RC版属于生产环境发布以前的一个小版本或称候选版,是根据Beta版本测试结果,收集到的BUG或缺陷之处等收集到的信息,进行修复和完善以后的一版产品
(4)GA版 ——GA版是软件产品正式发布的版本,也称生产版本的产品
为了提升MySQL产品的竞争优点,以及提升性能,下降开发维护成本等缘由。同时方便企业用户更精准的选择适合的版本用于主机的企业生产环境中,
MySQL在发展到5.1版本系列以后,从新规划为三条产品线
第一条-5.0.xx到5.1.xx产品线系列介绍
MySQL 5.1是当前稳定(产品质量)发布系列。只针对漏洞修复从新发布:没有增长会影响稳定性的新功能。 MySQL 5.1:Previous stable(production-quality)release MySQL 5.0是前一稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复从新发布:没有增长会影响该系列的重要功能。
MySQL 5.0:Older stable release nearing the end of the product lifecycle
第二条-5.4.xx开始-到了5.7.xx产品线系列介绍
为了更好地整合MySQL AB公司社区和第三方公司开发的新存储引擎,以及吸取新的实现算法等,从而更好地支持SMP架构,提升性能而作了大量的代码重构,版本编号从5.4.xx开始,目前发展到了5.6.x MySQL 5.5:LatestGeneral Availability(Production)release
主流:互联网公司用MySQL.5.5
第三条-6.0.xx到7.1.xx产品线系列介绍
为了更好地推广MySQL Cluster版本,以及提升MySQL Cluster的性能和稳定性,以及功能改进和增长,以及改动MySQL基础功能,使其对Cluster存储引擎提供更有效的支持与优化。版本号为6.0.xx开发。目前发展到7.1.xx
http://dev.mysql.com/downloads/mysql
官方地址提供数据库下载版本:
http://mysql.ntu.edu.tw/Downloads
如今国内的镜像站也支持下载:
http://mirrors.sohu.com/mysql/
MySQL数据库软件的名字是由3个数字和一个后缀组成的版本号。
例如,像mysql-5.0.56.tar.gz的版本号解释:
(1) 第1个数字(5)是主版本号,描述了文件格式。全部版本5发行都有相同文件格式
(2) 第2个数字(0)是发行级别。主版本号和发行级别组合到一块儿便构成了发型序列号。
(3) 第3个数字(56)是在此系列的版本号,随每一个新分发递增,一般你须要已经选择的发行(release)的最新版本
(4) 后缀显示发行的稳定级别,经过一系列后缀显示如何改进稳定性,可能的后缀有:*alpha版
企业生产场景选择MySQL数据库建议:
1) 稳定版:选择开源的社区版的稳定版GA版本
2) 产品线:能够选择5.1或5.5 互联网公司主流5.5,其次是5.1和5.6
3) 选择MySQL数据库GA版发布后6个月以上的GA版本。
4)要选择先后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本
5)最好向后较长时间没有更新发布的版本
6)要考虑开发人员开发程序使用的版本是否兼容你选的版本
7)做为内部开发人员开发测试数据库环境,跑大概3-6个月的事件
8)优先企业非核心业务采用新版本的数据库GA版本软件
9)向DBA高手请教,或者在及技术氛围好的群里和你们一块儿交流,使用真正的高手们用过的好用的GA版本产品
10)如果没有重要的功能BUG或性能瓶颈,则能够开始考虑做为任何任务数据服务的后端数据库软件
p style=”margin-top: 10px; font-size: 15px; font-family: Helvetica, ‘Hiragino Sans GB’, 微软雅黑, ‘Microsoft YaHei UI’, SimSun, SimHei, arial, sans-serif; line-height: 24px;”>yum/rpm安装适合对数据库要求不过高的场合,例如并发布大,公司内部,企业内部的一些应用场景。大的门户把源码根据企业需求制做成rpm,搭建rpm仓库。