数据库总结
定义
数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
数据库优点
数据库有以下优点:
- 可存储大量数据;
- 方便检索;
- 保持数据的一致性、完整性;
- 安全,可共享;
- 通过组合分析,可产生新数据。
数据库的发展历程
数据库发展历程如下所示:
- 没有数据库,使用磁盘文件存储数据;
- 层次结构模型数据库;
- 网状结构模型数据库;
- 关系结构模型数据库,使用二维表格来存储数据;
- 关系-对象模型数据库;
MySQL就是关系结构模型数据库管理系统,简称关系型数据库管理系统。
主流关系型数据库介绍
MySQL
目前属于 Oracle 旗下产品,在 WEB 应用方面,MySQL是最好的关系数据库应用软件
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
中小型数据库
使用 C和 C++编写
Oracle
ORACLE公司提供的以分布式数据库为核心的一组软件产品
大部分企事业单位都用oracle,在电信行业占用最大的份额。
大型商用数据库,价格昂贵
适用于各类大、中、小、微机环境
SQL Server
windows生态系统的产品
MS SQL Server主要面向中小企业
它一般是和同是微软产品的.net平台一起搭配使用
Access
小型数据库、桌面数据库
Microsoft Office Access是由微软发布的关系数据库管理系统
易操作性及友好的界面
一般做小型网站用,性能一般。ASP+ACCESS最常见的小型网站组合
在处理少量数据和单机访问的数据库时是很好的,效率也很高
不适合大量数据使用
MariaDB
是MySQL的一个分支,主要由开源社区在维护
MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。
DB2
DB2是IBM产品,DB2主要应用于大型应用系统,最适于海量数据
主要应用于金融和电信行业
适应于安全性要求极高的系统,尤其是银行, 证券系统的应用。
其他一些不常有的数据库 Informix, Syase 等
主流非关系型数据库介绍
Memcached
memcached 是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访次数,以提高动态 Web 应用的速度、提高可扩展性。
其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写
由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。
不适合应用的场景:
1、缓存的数据量比较小。
2、缓存的数据需要持久化。
memcached通常部署在业务逻辑层(前台应用)和存储层(主指数据库)之间,作为数据库和前台应用的数据缓冲,因此可以快速的响应前端的请求,减少对数据库的访问。
Redis
所用语言:C/C++
适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。
MongoDB
所用语言:C++
最佳应用场景:适用于需要动态查询支持;需要使用索引而不是 map/reduce功能;需要对大数据库有性能要求;需要使用 CouchDB但因为数据改变太频繁而占满内存的应用程序。
高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。
HBase
Hbase的名字的来源是Hadoop database,即hadoop数据库。
是一个分布式的、面向列的开源数据库
HBase是Apache的Hadoop项目的子项目。
其他不常用非关系型数据库MemacheDB、 BerkeleyDB、 Tokyo Cabinet
非关系型数据库对比
Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的多种数据类型
数据库原理
mysql原理
MySQL架构
- 连接池:最上层负责和客户端进行连接,比如jdbc,odbj这样的数据库连接的API,在这一层有连接池的概念,类似于线程池,连接池可以同时处理很多个数据库请求。同时这一层有SSL的安全概念,可以确保连接是安全的。
- SQL接口:当SQL语句进入MySQL后,会先到SQL接口中,这一层是封装层,将传过来的SQL语句拆散,将底层的结果封装成SQL的数据格式。
- 解析器:这一层负责将SQL语句进行拆分,验证,如果语句有问题那么就返回错误,如果没问题就继续向下执行。
- 优化器:对SQL查询的结果优化处理,产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果。比如select a,b from c where d。在这里会先查询c表中符合d的数据并将他们的ab项进行投影,返回结果,并不会直接把整张表查出来。
- 缓存:对要查询的SQL语句进行hash后缓存,如果下一次是相同的查询语句,则在SQL接口之后直接返回结果。
- 存储引擎:MySQL有很多种存储引擎,每一种存储引擎有不同的特性,他们负责组织文件的存放形式,位置,访问文件的方法等等。比较常用的有innoDB,MyISAM,MAMORY等。
- 文件系统:存放数据的文件。

浙公网安备 33010602011771号