首页 > 技术文章 > MySQLStudy——数据库分类

tingguoguoyo 2019-06-17 15:54 原文

为啥使用数据库?

1、程序所有的组件就不可能运行在一台机器上

#因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。

#于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

2、数据安全问题

#根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。

#于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

3、并发 

根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

#1.远程连接(支持并发)
#2.打开文件
#3.读写(加锁)
#4.关闭文件

数据库的分类

关系型数据库

1. 有约束
2. 基于硬盘的存储 (就是将数据存储到硬盘上, 持久化 === 落地)

典型代表:

MySQL

百度词条:https://baike.baidu.com/item/mySQL/471251

 

Oracle

百度词条:https://baike.baidu.com/item/Oracle%E6%95%B0%E6%8D%AE%E5%BA%93

Microsoft SQL Server

 

百度词条:https://baike.baidu.com/item/Microsoft%20SQL%20Server?fromtitle=sql+server&fromid=245994

SQL Lite

 

百度词条:https://baike.baidu.com/item/SQLite/375020?fr=aladdin

db2

 

百度百科:https://baike.baidu.com/item/DB2/7034285?fr=aladdin

非关系型数据

1. 没有约束 (key--->value)
2. 基于内存存储 (将数据放入到内存中) 断电数据就消失

典型代表:

MemCache

百度词条:https://baike.baidu.com/item/MemCache/8250931?fr=aladdin

 

Redis

百度词条:https://baike.baidu.com/item/Redis/6549233?fr=aladdin

 

MongoDB

百度词条:https://baike.baidu.com/item/mongodb/60411?fr=aladdin

 

 

 

 

MySQL的架构

 

客户端
    socket客户端, 连接服务端, 发送指令 (SQL语句)
服务端
    socket服务端, 接收客户端的指令, 并将结果返回给客户端

 

推荐阅读