数据库

运维为什么要学DBA课程

在我们互联的小型企业中,有的公司3百多台的数据服务器也没有用DBA,而是运维人员来维护。我们运维人员为什么要学好DBA那,因为数据库是企业架构的瓶颈。

99%互联网的公司的网站机构瓶颈都在后端,一个是存储一个是数据库数据库,第一大瓶颈是数据库极难扩展的,第二大瓶颈是存储,只要将这两个学好,做网络架构是非常容易的。因为数据库和存储的极难扩展的特性所应用到了缓存和cdn这些技术的价值,cdn和缓存的目的都是为了减轻存储的压力。为什么是加缓存那而不是直接扩展数量那,一个是不好扩展,另一个是即使扩展了效率也不高,就拿数据库为例,加一个memched比后端扩展5台mysql的效果都好。

一、什么是数据库?

简单说,数据库就是一个存放数据的仓库,这个厂库是按照一定的数据结构来组织、存储的我们可以通过数据提供的多种方法来管理数据据库的数据。
数据库诞生距现在大概60年,2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理的方式,数据库有很多种类和功能,从简单的存储有各种数据的表格到能够进行海量数据据存储的大型数据系统都各方面得到了广泛的应用。

二、非关系型数据库

随着互联网web2.0网站的兴起,传统关系型数据库在应对web2.0网站,特别是对于模块日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据IO瓶颈、性能瓶颈都难以有效的突破,于是开始出现大批针对特定场景,以高性能和使用便利为目的功能特异化的数据产品,NoSQl(非关系型)类的数据库就是在这样的场景中诞生并得到非常迅速的发展。

简单来讲就是web2.0后动态请求的增加,传统的数据库已经成为机构的瓶颈,所以才会后noSql的发展。

非关系型数据库的种类
1.(键值)存储数据库
键值数据库就是类似于传统语言中使用的哈希表,可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能以扩展性。
键值数据库主要使用的是哈希表,这个表中有一个特定的建和一个指针指向特定的数据。key/value 模型对与IT系统来说的优势在于简单、易于部署、高并发。
典型产品:Momcached,Redis、MomcacheDB、Berkeley DB
2.列存储数据库
列存储数据库将数据存储的列族中,一个列族存储经常备一起查询的相关数据。举个例子,如果我们有一个Person类,我们通过经常一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会备放入一个列族中,而薪资则在另一列族中。
这部分数据库通常是用来对应分布存储的海量数据。键仍然存在,但是它们的特点是指向了多个列,这些列是由列家族来安排的
典型产品:Cassandra,Hbase
3.面向文档的数据库
文档数据库的灵感来自与Lotus Notes办公软件的,而且它同第一中键值存储类型。该类型的数据类型是版本的文档,半结构的文档一特别的格式存储,比如json。文档数据可一看作是键值数据的升级版本。允许之间嵌套键值,而且文档数据库比键值数据库的查询效率高。
面向文档数据库会将数据以及文档的形式存储,每个文档都是自包含的数据单元,是一系列数据项的集合,每个数据项都有一个名称于应键值,值既可以是简单的数据类型,如字符串、数字和日期等;亦可以是复杂的类型,如有序表和关联对象,数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。
典型产品:mongoDB、CouchDB
4.图形数据库
图形数据库允许我们将数据以图的方式存储,实体会被作为顶点,而实体之间的关系则被作为边,比如我们有三个实体SteveJobs、Annle和Next、则会有“Founded by”的边将Apple和Next连接Steve Jobs
图形结构的数据库通其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上,NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要定制数据库类型,许多NoSQL数据库有REST式的数据接口或或者查询API
典型产品:Neo4J、InforGr id

三、关系型数据库

关系型数据库是把复杂的机构归结为简单的二元关系(即二位表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联表格分类、合并、连接或选取等运算来实现数据库的管理

Mysql 数据库的主要应用范围,是互联网

典型产品:Mysql ,oracle 

有必要学习oracle吗?

互联网公司是没有必要学习的,互联网公司都用mysql,因为oracle太笨重、太贵了,在传统的一些行业中可能会用到(证卷,金融,政府。。。)。  

Mysql数据库是一个中小行的关系数据库管理系统,软件开发为瑞典Mysql AB公司。在2008年1月16号备sun公司收购,后Sun公司又被oracle公司收购。目前Mysql被广泛应用在Intnet上的大中小网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多大中小网站为了降低网站成本而选择了Mysql作为网站数据库,甚至国内致命的淘宝也选择弃用oracle而更换为Mysql。Mysql数据库的主要应用范围;互联网领域,大中小行网站,游戏公司,电商平台等。

为什么选择用mysql数据库

毫无疑问,既成事实,绝大多数linux操作系统的大中小互联网网站都在用Mysql作为后端的数据库存储,从大型的BAT门户,到电商平台,分类用户等无一例外都使用mysql数据库。那么Mysql数据库到底有那些优势和特点,让大家义无反顾的选择它呢?
原因有一下几点:
1)Mysql性能卓越,服务稳定,很少出现异常宕机
2)Mysql开放源代码且无版权限制,自主及使用成本低
3)Mysql历史悠久,社区及用户非常活跃,遇到文帝,可以寻求帮助
4)Mysql软件体积小,安装使用方便,并且维护成本低
5)Mysql口碑效应,是的企业无需考虑是使用,LAMP,LEMP流行架构
6)Mysql支持多中操作系统,提供多中API接口,支持多种语言,特别多流行的PHP语言有很好的支持

四、msyql版本

 mysql 官网:https://www.mysql.com/,msyql采取双授权的政策,和大多数的开源产品一样,分为社区版和商业版,二者两个版本又各自分四个晓得版本,这个四个晓得版本分别是alpha版、Beta版、RC版和GA版。

alpha 版:mysql公司内部测试用的版本,不对外开放。
beata 版:完成功能和测试后的版本。
RC版:生产环境发布前的小版本,是beata升级后的版本。
GA版:对外的稳定版。

五、mysql产品线

msyql在发展5.1版本后,重新规划为三条生产线,为的是提高市场的竞争力

第一条生产线:5.0.xxx--5.1.xxx生产线
这条生产线继续完善和改进用户体验和性能,同时增加新功能,这条生产线可以说是早起生产线的延续。
第二条生产线:5.4.xxx--5.7.xxx生产线
第二条产品线是为了更好的整合msyql AB 公司社区和第三方公司的新存引擎,以及吸收新的算法等,从而更好的支持SMP架构,提搞性能而做了大量的代码重构版本从5.4开始目前发展到5.6x
***公司常用的版本是5.5版本
第三条产品线:6.0.xx--7.1.xx 产品系列(使用比较少,为的是解决集群的问题,但是各公司都用自己的解决方案)
第三条产品先是为了更好的推广mysql cluster版本,以及提高性能和稳定性,以及功能改进,使其对cluster引擎提供更有效的支持和优化,版本为6.0开发版,目前到7.1xx

六、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)优先企业非核心业务跑新版的数据库
9)行DBA高手请教,那个产品更适合
10)经过上述流程没有问题后,可以全面上新的数据库

七、mysql多实例介绍(需要补充)

什么是mysql多实例?
简单说,就是一台机器上开启多个不同对的服务端口(3306-3307),运行多个mysql服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务。
这些mysql多实例共用一套mysql安装程序,使用不同(也可以相同)的mysql配置文件、启动程序、数据文件,在提供服务时多实例Mysql在逻辑上看来是各自独立的,多个实例的自身根据配置文件对应的设定值,来取得服务器的相关硬件资源多少。
mysql多实例就像房子的多个卧室一样,每个实例可以看做一个卧室,整个服务就是一套房子,服务器的硬件资源可以看做房子的卫生间、厨房、客厅一样,是房子的公共资源。
多实例的问题:
当某个服务实例并发很高或者有慢查询时,整个实例回消耗整个更多的内存、cpu、磁盘IO资源,导致服务上的其他实例提供服务的质量下降,这样相当于大家住在一个房子的不同卧室内,早上起床上班,都会刷牙。。。这样为卫生间会长期占用,其他人就要等待一样的道理。
多实例的应用场景
1)资金紧张的公司。公司业务量不大有舍不得花钱,可以通过3台服务器部署6-9个实例,交叉做主从同步及读写分离,实现6-9台服务器才有的效果,这里要强调的是所谓的尽量独立是相对的。
2)并发访问不是特别大的业务。服务的资源基本是浪费的。这个时候就和适合多实例的应用,如果对SQl语句优化做的好,MYSQL多实例是一个值得用的技术,及使并发很大,合理分配好系统资源,也不会有太多问题。
3)门户网站应用MYSQL多实例的场景。百度搜索引擎的数库就是多实例,一般是从库,cpu为48C内存96G,跑3-4个实例,sina网也是用的多实例,内存48G左右。门户网站使用多实例的目的是配硬件好的服务,节省IDC机柜空间,同时,跑多个实例也让硬件资源不浪费。

 

posted @ 2018-11-08 14:50  无敌小格鲁  阅读(195)  评论(0编辑  收藏  举报