
文档数据库
-
2023年3月19日发(作者:工作动态模板)数据库的简介与类型
1.1什么是数据库?
简单的说,数据库(英⽂Database)就是⼀个存放数据的仓库,这个仓库是按照⼀定的数据结果(数据结构是指数据的组织形
式或数据之间的联系)来组织、存储的、我们可以通过数据库提供的多种⽅法来管理数据库⾥的数据更简单的形象理解,数据库和我们⽣活
中存放杂物的仓库性质⼀样,区别只是存放的东西不同。
1.2数据库的种类
早期⽐较流⾏的数据库模型有三种,分别为层次式数据库、⽹络式数据库和关系型数据库。⽽在当今的互联⽹中,最常⽤的数据
库模型主要是两种,即关系型数据库和⾮关系型数据库。
1.3关系型数据库介绍
(1)关系型数据库由来
⽹络数据库和层次数据库很好地解决了数据的集中和共享问题,但是在数据独⽴性和抽象级别上仍有很⼤⽋缺。⽤户对这两种数
据库进⾏存取时,依然需要明确数据的存储结构,⽀出存储路径。⽽关系数据库就可以较好地解决这些问题
(2)关系型数据库介绍
关系型数据库模型是把复杂的数据结构归结为简单的⼆元关系(即⼆维表格形式)。
Oracle在数据库领域⾥上升到了霸主地位,形成每年⾼达数百亿美元的庞⼤市场,⽽MySQL也是不容忽视的数据库,以⾄于被
Oracle重⾦收购
MySQL互联⽹市场
Oracle传统企业
(3)关系型数据库举例
表格
1.4什么是关系型数据库
⼆维表格
和Oracle数据库,互联⽹运维最常⽤的是MySQL
2.通过SQL结构化查询语句存储数据
3.保持数据⼀致性⽅⾯很强,ACID理论
1.5⾮关系型数据库介绍
1.6⾮关系型数据库诞⽣背景
⾮关系型数据库也被成为NoSQL数据库,NOSQL的本意是“NotOlnlySQL”
指的是⾮关系型数据库,⽽不是“NoSQL”的意思,因此,NoSQL的产⽣并不是要彻底地否定⾮关系型数据库,⽽是作为传统关系型
数据库的⼀个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的⾼效率和⾼性能。
随着互联⽹Web2.0⽹站的星期,传统的关系型数据库在应付web2,0⽹站,特别是对于规模⽇益扩⼤的海量数据,超⼤规模和⾼
并发的微博、微信、SNS类型的web2.0纯动态⽹站已经显得⼒不从⼼,暴露了很多难以克服的问题。
例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是出现了⼤批针对特定场景,以⾼性能和使⽤便利为⽬的功能
特异化的数据库产品。NOSQL(⾮关系型)类的数据就是在这样的情景下诞⽣并得到了⾮常迅速的发展
⾼性能、⾼并发、对数据⼀致性要求不⾼
开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了⼴泛认同,Redis,mongb也逐渐越来越受到各类⼤
中⼩型公司的欢迎和追捧
NOSQL⾮关系型数据库⼩结:
1、NOSQL不是否定关系数据库,⽽是作为关系数据库的⼀个重要补充
2、NOSQL为了⾼性能、⾼并发⽽⽣,忽略影响⾼性能,⾼并发的功能
3、NOSQL典型产品memcached(纯内存),redis(持久化缓存),mongodb(⽂档的数据库)
1.7⾮关系型数据库种类
(1)键值(Key-Value)存储数据库
k1—>数据
k2—>数据
键值数据库就类似传统语⾔中使⽤哈希表,可以通过key来添加、查询或删除数据,因为使⽤key主键访问,所以会获得很⾼的性能及扩
展性
键值(Key-Value)数据库主要是使⽤⼀个哈希表,这个表中有⼀个特定的键和⼀个指针指向特定的数据。Key/value模型对于IT
系统来说的优势在于简单、易部署、⾼并发
典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB
(2)列存储(Column-oriedted)数据库======>了解即可,⼀般公司⽤不到
列存储数据库将数据库存储在列族(columnfamily)中,⼀个列族存储经常被⼀起查询的相关数据。举个例⼦,如果我们有⼀个Person类,我们通常会⼀起查询他们
这部分数据库通常⽤来分布式存储的海量数据,键仍然存在,但是他们的特点是指向了多个列。
典型产品:Cassandra,HBase
(3)⾯向⽂档(Document-Oriented)数据库
⾯向⽂档数据库会将以⽂档的形式存储。每个⽂档都是⾃包含的数据单元,是⼀系列数据项的集合。每个数据项都有⼀个名称与
对应的值,值既可以是简单的数据类型,如字符串、数字和⽇期等;也可以是复杂的类型,如有序列表和关系对象。数据存储的最⼩单位是
⽂档,同⼀个表中存储的⽂档属性可以是不同的,数据可以使⽤XML、JSON或者JSONB等多种形式存储
典型产品:MorgoDB、CouchDB
(4)图形(Graph)数据库
1.8常⽤关系型数据库产品介绍
1.8.1oracle数据库
Oracle前⾝叫SDL、由LarryEllison和两个变成任意在1977创办,他们开发了主机的拳头产品,在市场上⼤量销售。Oracle公司是最
早开发关系型数据库的⼚商之⼀,其产品⽀持最⼴泛的操作系统平台。⽬前Oracle关系数据库产品的市场占有率数⼀数⼆
Oracle公司是⽬前全球最⼤的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商
主要应⽤范围:传统⼤企业、⼤公司、政府、⾦融、证券等。
版本升级:oracle8i,oracle9i,oracle10g,oracle11g,oracle12c
关系型数据库分类
1.8.2MySQL
MySQL被⼴泛的应⽤在Internet上的⼤中⼩型⽹站中。由于体积⼩、速度快、总体拥有成本低,开放源代码
1.8.3MariaDB数据库
MAriaDB数据库管理系统是MySQL数据库的⼀个分⽀,主要由开元社区维护,采⽤GPL授权许可。开发这个MariaDB的原因之⼀是:
甲⾻⽂公司收购了MySQL后,有MySQL闭源的潜在风险,因此MySQL开元社区采⽤分⽀的⽅式来避开这个风险。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM的存储引擎,它使⽤了Percona的XtraDB(InnoDB的变体)这个版
本还包括了PrimeBaseXT(PBXT)和FederatedX存储引擎。
1.8.4SQLServer数据库
MicrosoftSQLServer是微软公司开发的⼤型关系数据库系统。SQLServer的功能⽐较全⾯,效率⾼,可以作为中型企业或单位
的数据库平台。SQLServer可以与Winodws操作系统紧密集成,不论是应⽤程序开发速度还是系统事务处理运⾏速度,都得到较⼤的提
升,对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构。
SQLServer都是⼀个很好的选择。SQLServer的缺点是只能在Windows系统下运⾏
1.8.5Access数据库
Access是⼊门级⼩型桌⾯数据库,性能安全性都很⼀般,可供个⼈管理或⼩型企业只⽤
Access不是数据库语⾔,只是⼀个数据库程序,⽬前最新版本为Office2007,其特点主要如下:
(1)完善地管理各种数据库对象,具有强⼤的数据组织,⽤户管理、安全检查等功能
(2)强⼤的数据处理功能,在⼀个⼯作组级别的⽹络环境中,使⽤Access开发的多⽤户管理系统具有传统的XSASE(DBASE、FoxBASE
的统称)数据库系统所⽆法实现的客户服务器(Ckient/Server)结构和响应的数据库安全机制,Access具备了许多先进的⼤型数据管理管
理系统所具备的特征。
(3)可以⽅便地⽣成各种数据对象,利⽤存储的数据建⽴窗体和报表
(4)作为Office套件的⼀部分,可以与Office集成,实现⽆缝连接
(5)能够利⽤Web检索和发布数据,实现与Internet的连接,Access主要适⽤于中⼩企业应⽤系统,或作为客户机/服务器系统中的客户
端数据库。
1.9其他不常⽤关系型数据库
DB2,PostgreSQL,Informix,Sybase等。这些关系型数据库逐步的淡化了普通运维的实现,特别是互联⽹公司⼏乎见不到
常⽤⾮关系型数据库产品介绍
1.9.1memcached(key-value)
Memcaced是⼀个开源的、⾼性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的web应⽤,最初版本由
LiveJoumal的BradFitzpatrick在2003年开发完成。⽬前全球有⾮常多的⽤户都在使⽤它来架构主机的⼤负载⽹站或提升主机的⾼访问
⽹站的响应速度。注意:Memcache是这个项⽬的名称,⽽Memcached是服务端的主程序⽂件名。
缓存⼀般⽤来保存⼀些进程被存取的对象或数据,通过缓存来存取对象或数据要⽐在磁盘上存取块很多,前者是内存,后者是磁盘、
Memcached是⼀种纯内存缓存系统,把经常存取的对象或数据缓存在memcached的内存中,这些被缓存的数据被程序通过API的⽅式被
读取,memcached⾥⾯的数据就像⼀张巨⼤的hash表,数据以key-value对的⽅式存在。Memcached通过缓存经常被存取的对象或数
据,从⽽减轻频繁读取数据库的压⼒,提⾼⽹站的响应速度,构建出快速更快的可扩展的Web应⽤。
官⽹:
由于memcached为纯内存缓存软件,⼀旦重启所有数据都会丢失,因此,新浪⽹基于Memcached开发了⼀个开源项⽬Memcachedb。
通过为Memcached增加BerkeleyDB的特久化存储机制和异步主复制机制,使Memcached具备了事务恢复能⼒、持久化数据能⼒和分布
式复制能⼒,memcached⾮常适合需要超⾼性能读写速度、持久化保存的应⽤场景,但是最近⼏年逐渐被其他的持久化产品替代如Redis
Memcached⼩结:
1、key-value⾏数据库
2、纯内存数据库
3、持久化memcachedb(sina)
1.9.2Redis(key-value)
和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客户端,使⽤⽅便。
官⽅:
redis特点:
1)⽀持内存缓存,这个功能相当于memcached
2)⽀持持久化存储,这个功能相当于memcachedb,ttserver
3)数据库类型更丰富。⽐其他key-value库功能更强
4)⽀持主从集群、分布式
5)⽀持队列等特殊功能
应⽤:缓存从存取memcached更改存取redis
1.9.3MongoDB(Document-oriented)
MongoDB是⼀个介于关系型数据库和⾮关系型数据库之间的产品,是⾮关系型数据库当中功能最丰富,最像关系数据库的。他⽀持的数
据库结构⾮常松散,类似json的bjson格式,因此可以存储⽐较复杂的数据类型。Mongodb最⼤的特点是他⽀持的查询语⾔⾮常强⼤,其
语法有点类似于⾯向对象的查询语⾔,⼏乎可以实现类似关系数据库单表查询的绝⼤部分功能,⽽且还⽀持对数据建⽴索引。
特点:
⾼性能、易部署、易使⽤、存储数据⾮常⽅便
主要功能特性:
1.⾯向集合存储,易存储对象类型的数据
2.“⾯向集合”(Collenction-Orented)意思是数据库被分组存储在数据集中,被称为⼀个集合(Collenction)每个集合在数据库中
都有⼀个唯⼀的标识名,并且可以包含⽆限数⽬的⽂档,集合的概念类似关系型数据库(RDBMS)⾥的表(table)不同的是它不需
要定义任何模式(schema)
3.模式⾃由
4.模式⾃由(schema-free)意为着存储在mongodb数据库中的⽂件,我们不需要知道它的任何结构定义。
5.⽀持动态查询
6.⽀持完全索引,包含内部对象
7.⽀持查询
8.⽀持复制和故障恢复
9.使⽤⾼效的⼆进制数据存储,包括⼤型对象
10.⾃动处理碎⽚、以⽀持云计算层次的扩展性
1.9.4Cassandra(Column-oriented)
ApacheCassndra是⼀套开源分布式Key-Value存储系统。它最初由Facebook开发,⽤于存储特别⼤的数据。Facebook⽬前在使
⽤此系统。
主要特点:
1.分布式
2.基于column的结构化
3.⾼伸展性
dra的主要特点就是它不是⼀个数据库,⽽是由⼀堆数据库节点共同构成⼀个分布式⽹络服务,对Cassandra的⼀个写操作,
会被复制到其他节点上去,对Cassandra的读操作。也会被路由到某个节点上⾯去读取。
Cassandir是⼀个混合型的⾮关系的数据库,类似于Google的BigTable。其主要功能⽐Dynomie(分布式的key-value存储系统)更
丰富,Cassandra最初由Facebook开发,后转变成了开源项⽬。
1.9.5其他不常⽤⾮关系型数据库
HBase、MemcacheDB、BerkeleyDB、TokyoCabinetTokyoTyrant(ttserver)
ttserver持久化输出,缺点存储2千万条性能下降(由⽇本⼈发明)
2.1Mysql数据库介绍
2.2Mysql数据库介绍
MySQL是互联⽹领域⾥⼀款最要的,深受⼴⼤⽤户欢迎的开源关系型数据库软件之⼀、由瑞典MySQLAB公司开发与维护。
2006年。MySQLAB公司被SUN公司收购,2008年,SUN公司⼜被传统数据数据库领域⼤佬甲⾻⽂(oracle)公司收购,因
此,MySQL数据库软件⽬前属于Oracle公司,成为传统数据库领域⽼⼤的⼜⼀个数据库产品,甲⾻⽂公司收购MySQL后,使得⾃⾝在商
业数据库与开源软件领域市场占有份额都跃居第⼀的位置,这样的格局,引起了很多⼈的担忧,这种担忧直接导致后来的Mysql分⽀数据库
MariaDB的诞⽣于发展。
MySQL是⼀种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,在将这些表放⼊不同的数据库中,⽽不
是将所有数据统⼀放在⼀个⼤仓库⾥,这样的设计增加了MySQL的读取速度,灵活性和可管理型也得到了很⼤提⾼,访问以及管理MySQL
数据库的最常⽤标准化语⾔为SQL结构化查询语句
2.3为什么选择MySQL数据库
原因可能有以下⼏点:
(1)MySQL性能卓越、服务稳定,很少出现异常宕机
(2)MySQL开放源代码且⽆版权制约,⾃主性及使⽤成本低
(3)MySQL历史悠久,社区及⽤户活跃,遇到问题可以解决
(4)MySQL软件体积⼩,安装使⽤简单,并且易于⽂虎,安装及维护成本低
(5)MySQL品牌⼝碑效应,使得企业⽆需考虑就直接⽤,LAMP、LEMP流⾏架构
(6)MySQL⽀持多⽤操作系统,提供多种API接⼝,⽀持多⽤开发语⾔,特别对流⾏的PHP语⾔有很好的⽀持
2.4MySQL数据库分类与版本升级
MySQL数据库的官⽅⽹站为,其发布的MySQL版本采⽤双授权政策,和⼤多数开源产品的路线⼀样,分为社区版和商业版,⽽这两个
版本⼜各⾃分四个版本依次发布,这四个版本为:Alpha版、Beta版、RC版和GA版本
MySQL数据库商业版与社区办区别
MySQL商业版与社区办之间的区别在于:
1、商业版本组织管理与测试环节控制更严格,稳定性⽅⾯,会⽐社区版本更稳定
2、MySQL是成熟产品,商业版与社区办之间性能⽅⾯相差不⼤
3、商业版不遵守GPL协议,社区版遵守GPL协议可以免费试⽤
4、使⽤商业版后可以购买相关的服务,享受7*24⼩时技术⽀持以及及时打补丁等服务,但是⽤户必须为此⽀持服务费⽤
5、社区版本的维护服务只能靠社区提供,⽆法像商业版本获得故障及补丁解决服务了,但是社区版是完全免费的⽅式,社区版的服务质量
与时效性等⽅⾯就⽆法与MySQLAB公司提供的服务相⽐了
2.5MySQL数据库四种发布版本介绍
(1)Alpha版
Alpha版⼀般只在开发的公司内部运⾏,不对外公开
(2)Beta版
Beta版⼀般是完成功能的开发与所有的测试⼯作之后的产品,不会存在较⼤的功能或性能BUG,并且邀请或提供给⽤户体验与测试,以便
更全⾯地测试软件的问题。
(3)RC版
RC版属于⽣产环境发布之前的⼀个⼩版本或称候选版,是根据Beta版本测试结果,收集到的BUG或缺陷之处等收集到的信息,进⾏修复和
完善之后的⼀版产品
(4)GA版
GA版是软件产品正式发布的版本,也称⽣产版本的产品
2.6MySQL产品路线
为了提⾼MySQL产品的竞争优势,以及提⾼性能,降低开发维护成本等原因。同时⽅便企业⽤户更精准的选择适合的版本⽤于主机
的企业⽣产环境中,
MySQL在发展到5.1版本系列之后,重新规划为三条产品线
第⼀条-到产品线系列介绍
MySQL5.1是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布:没有增加会影响稳定性的新功能。MySQL5.1:Previous
stable(production-quality)releaseMySQL5.0是前⼀稳定(产品质量)发布系列。只针对严重漏洞修复和安全修复重新发布:没有
增加会影响该系列的重要功能。
MySQL5.0:Olderstablereleasenearingtheendoftheproductlifecycle
第⼆条-开始-到了产品线系列介绍
为了更好地整合MySQLAB公司社区和第三⽅公司开发的新存储引擎,以及吸收新的实现算法等,从⽽更好地⽀持SMP架构,提⾼性能⽽
做了⼤量的代码重构,版本编号从开始,⽬前发展到了5.5:LatestGeneralAvailability(Production)release
主流:互联⽹公司⽤MySQL.5.5
第三条-到产品线系列介绍
为了更好地推⼴MySQLCluster版本,以及提⾼MySQLCluster的性能和稳定性,以及功能改进和增加,以及改动MySQL基础功能,使
其对Cluster存储引擎提供更有效的⽀持与优化。版本号为开发。⽬前发展到
官⽅地址提供数据库下载版本:
现在国内的镜像站也⽀持下载:
2.7MySQL数据库软件命名介绍
MySQL数据库软件的名字是由3个数字和⼀个后缀组成的版本号。
例如,像的版本号解释:
(1)第1个数字(5)是主版本号,描述了⽂件格式。所有版本5发⾏都有相同⽂件格式
(2)第2个数字(0)是发⾏级别。主版本号和发⾏级别组合到⼀起便构成了发型序列号。
(3)第3个数字(56)是在此系列的版本号,随每个新分发递增,通常你需要已经选择的发⾏(release)的最新版本
(4)后缀显⽰发⾏的稳定级别,通过⼀系列后缀显⽰如何改进稳定性,可能的后缀有:*alpha版
2.8MySQL版本选择最终建议
企业⽣产场景选择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或性能瓶颈,则可以开始考虑作为任何任务数据服务的后端数据库软件
<
pstyle=”margin-top:10px;font-size:15px;font-family:Helvetica,‘HiraginoSansGB’,微软雅⿊,‘MicrosoftYaHei
UI’,SimSun,SimHei,arial,sans-serif;line-height:24px;”>yum/rpm安装适合对数据库要求不太⾼的场合,例如并发布⼤,公司内
部,企业内部的⼀些应⽤场景。⼤的门户把源码根据企业需求制作成rpm,搭建rpm仓库。