数据库简介
我这里不是技术手册,也不是为了传道授业,只是一点点个人见解,闲来聊聊。
做过的都知道,web服务器平行加10台很轻松,但数据库平行加10台就很难了,即使加上去,数据也很难处理;存储相对比较容易,在存储前面用缓存,可用CDN,减轻存储的压力;
数据库减轻压力,在前面用缓存,目的是减轻压力;(在后面不容易扩展,且效率不高);当然还可以不缓存数据库,做静态(把数据库的内容全导出来做成HTML,降低数据库的压力);
最牛逼的架构师和数据库管理员的目标都是尽量让网站的请求不到达数据库,90%就解决掉了;但剩下的10%还是撑不住(数据库和存储还是相当脆弱的,因为它极难扩展)。
其实,99%的互联网网站最大的瓶颈都在后端,数据库和存储。做运维工程师的把数据库玩转了,架构也就特别简单了。
・从架构上解决数据的瓶颈,说明了一个道理:
有了问题不要自己扛,要团队精神;
数据库有了压力让前面的memcache扛,把数据静态化,让web服务器扛;
同理,工作中有了问题也不自己扛,要发挥团队作用,让团队一起扛。
1.数据库介绍
1)数据库是按照一定的数据结构来组织和存储数据库的的仓库,用C和C++编写,支持多种编程语言;
2)应用场景:中小型网站;
3)特点:
优势:体积小、速度快、开放源代码、总体成本低;
劣势:规模小、功能有限;
2.数据库的种类
・早期按发展历史理论上分为三种:层次型数据库、网络式数据库、关系型数据库;
・工作场景应用分类:关系型数据库、非关系型数据库(nosql数据库)
注意:我们每做的每一项都要贴近互联网和工作场景。
3.关系型数据库:
1)关系型数据库优势:
数据库集中共享,数据独立性和抽象级较高,用户体验较好;
2)关系型数据库介绍:
关系型数据库模型:二维表格形式(把复杂的数据结构归结为二元关系);
在关系型数据库中,对数据的操作几乎全部都是建立在一个或多个关系表格上;
3)关系型数据库特点:
①关系型数据库类似于exel表格的二维表来表示的;
②访问语言是SQL语言,结构型查询语言来对数据进行存取的;
③典型产品:MySQL和Oracle
4.非关系型数据库:
・非关系型数据库也被成为NoSQL数据库,本意是“not only SQL”;
・非关系型数据库是作为作为传统的关系型数据库的一个有效的补充,并不是要彻底否定关系型数据库;
・由来:
随着在web2.0网站的兴起,非关系型数据库为弥补关系型数据库的在动态请求 的不足而产生。
动态请求越来越多,对数据库的要求越来越高;而传统的关系型数据库遵循acid理论,存取数据很慢,还要存到磁盘里;这样速度就很慢了,非关系型数据库顺势而生。
・典型产品:
商业的非关系型数据库:Google的BigTable;Amazon的Dynamo;
开源的非关系型数据库:Facebook额Cassandra;Apache的Hbase;Redis;Mogodb
名词解释:web2.0:以用户为主题上传下载(动态应用比较多,数据库压力比较大)
5.常用关系型数据库产品介绍
1)mysql数据库
2)MariaDB
3)oracle数据库
4)SQL Server(在微软环境上开发会用到)
切忌:别混用,混用数据库很棘手;
6.常用的非关系型数据库产品:
1)memcache
memcache是纯内存缓存,是一款开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载、加速动态的web应用。
2)redis
支持内存缓存、持久化,数据类型丰富,支持集群、分布式,支持队列。
3)mongoDB
MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中功能最丰富、最想关系型数据库的。MongDB最大的特点是它支持的查询语言非常强大,还支持对数据建立索引。高性能、易部署、易使用,存储数据非常方便。