"数据库"与"缓存"的基本概念
数据库与缓存是服务端开发人员的必学知识点.
数据库
"数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数据存取容器.
在对容器进行数据存取的时候, 我们会为每一层打上一个标签表示一种分类项. 而这种在数据库
中划分子分类形成了表
的概念. 这就是我们通常所说的结构化数据库
.
由于通常数据表之间可能会存在依赖关系, 某一(或者多)层通常可能会用于同一种用途. 这种用途将一层划分为索引表, 二层划分为分类表, 三层划分为数据表.
实现这种功能与依赖关系的数据库, 我们称之为: 关系型数据库
. 它可以定义一套规范并且建立数据存取模型, 这样方便维护一整套结构化的数据信息.
每当我们需要对数据进行结构化操作(查询、增加、删除、修改)的时候, 需要在计算机中用一种通俗易懂的语言表达方式
来进行助记. 这种结构化查询语言称之为SQL
.
缓存
我们通常将数据存储完毕后, 能通过指定或特定的一(多)种方式对数据进行操作. 在项目开发的初期, 这并没有太大的问题.
但是随着数据量的不断增大, 在数据库的内存中已经放不下这么多数据. 我们的数据逐渐无法被加载到内存中: 只会在使用的时候才会进行(随机)读取. 而这会加大磁盘I/O.
我们知道通常磁盘的读写速度基本上会比内存读写慢几个数量级(即使是SSD), 大量请求可能瞬间将磁盘IO占满并出现数据库的CPU利用率低、内存频繁进行修改/置换等问题.
为了解决这些问题, 出现了很多解决方案: 读、写分离、分表分库等等. 虽然有了这些方案, 但是也同样回引来新的问题: 主从同步、分布式事务等问题.
"缓存"则是近十年兴起的概念, 它的本质是一份数据结构化存储在内存中的副本. 高级的缓存
我们也可以将其称之为内存数据库
或NOSQL
(非关系型)数据库.
"缓存"也是一种"另类"解决数据库问题点一种手段! 它通过丰富的数据结构扩展了数据模型的组合能力, 通过简单的使用方法与高效的连接方式提供更好数据操作方式.
"缓存"将查询、更新较为频繁的热
数据组成一个集合加载进内存中, 较少使用的冷
数据序列化到磁盘内部. 高效利用内存的同时, 根据变化的情况合理更新、删除缓存.
这样的方式配合数据库都读、写分离与数据分区将数据合理的从一个数据集副本分散到多个数据集副本, 有效的减少性能问题点产生并且提升了整个业务系统的横向扩展能.
DB库
DB库是cf框架封装自MySQL 4.1协议实现的客户端连接库, 提供MySQL断线重连、SQL重试、连接池等高级特性.
Cache
Cache库是cf封装自Redis 2