数据库系列(3):数据库管理系统的分类
在设计一个数据库系统的时候,我们会根据具体的需要选择不同的硬件和软件,在确定好硬件之后我就要确定用哪种数据库,更为准确点应该是用哪种数据库管理系统(DBMS),比如MySQL。
DBMS是什么
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。用户可以通过DBMS访问数据库中的数据,DBMS对数据库进行统一的管理和控制,以保证数据库的安全性、完整性、原子性等。
目前DBMS有几百种,点击这里查看排名,我们看下前20名有哪些
数据模型(data model)
数据模型是数据库结构的基础,它提供了一种描述物理层、逻辑层和视图层数据库设计的方式,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分,分别是数据结构、数据操作和数据约束。
①数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束 。如用树形结构或者二维表描述事物之间的关系。
②数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式,如插入、删除、查询 。
③数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容,如什么情况下可以插入,能否删除。
参考来自百度百科,详细内容点击这里
通俗点就是,在规定范围内,用某种数据结构表示数据之间关系,并提供接口操作这些数据结构。如一个班级下有很多学生,你可以用树形结构来表示实体之间的联系,如果你愿意可以用图的结构来表示,当然你也可以用二维表的形式来表示。同样的数据可以用不同的数据结构来表示,根据数据结构的不同可以分为层次模型(Hierarchical,树)、网状模型(Network,图)、关系模型(Relational,二维表)。
层次模型如图:
(图片来自网络)
网状模型如图:
(图片来自网络)
关系模型如图:
(图片来自网络)
网状和层次数据模型在关系模型之前就出现了,它们提供了比关系模型更低层次的抽象,比如向磁盘存储的数据结构,这些模型和此层的实现联系很紧密,同时数据建模也比较复杂,现在很少被使用了。在关系型模型中已经把这些细节屏蔽掉了,抽象出来物理层,我们专注于自己的业务而不必过多的考虑存这些底层据结构。
非关系型数据库
随着互联网应用的兴起,用户量的增多,越来越多的应用需要7*24小时在线,但是传统的关系型数据库却因为无法支持如此大规模数据和访问量而成为了整个系统的瓶颈。最直接的办法是升级硬件,但是整体的性价比不高。于是NoSQL出现了,NOSQL的原意是“Not-Only-SQL”,而不是“No-SQL”(没有SQL),NoSQL的出现并不是要完全否认关系型数据库,只是做为传统关系型数据库的一个合理补充。
NoSQL大致可以分为四种, 参考来自这里:点击查看原文
分类 |
数据模型 |
优势 |
举例 |
键值数据库(key-value) |
哈希表 |
查询快、易部署、高并发 |
Redis |
列存储数据库 |
列式数据存储 |
查询快,数据压缩率高,不需要额外建立索引 |
HBase |
文档型数据库 |
键值对扩展 |
将数据以文档的形式储存,数据结构不定 |
MongoDB |
图数据库 |
节点和关系组成的图 |
利用图结构的相关算法 |
Neo4j |
(图片来自网络)
列存储数据库
我们知道关系型数据库的以行为单位储存,而列存储数据库是以列为单位存储。对于关系型数据库来说,即使我们需要的一列的数据,也要进行整行扫描,这在某些场景下是很浪费IO效率的。而对于列存储数据库,我们只需查询表中需要的一列或者几列,不需要的列就不会扫描,大大提高了检索的效率。
键值数据库
键值数据库也就是 Key-Value 数据库,数据以键值的形式储存,通常被当做非持久化的内存型数据库缓存来使用。
文档型数据库
文档型数据库与键值数据库是类似的,只不过它将数据用文档的形式储存,数据存储可以是XML、JSON等多种形式。
图数据库
图数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。
对比
关系型数据库,通过行记录的形式来描述一个实体,
列存储数据库,通过列记录的形式描述一个实体,
键值数据库,通过键-值的形式描述一个实体,
文档型数据库,通过文档的形式描述一个实体,
图数据库,通过图的方式描述一个实体。
同样的一个实体,可以用不同的形式表示,我们要根据不同的场景选择不同的方式。比如在一个包含100万人,每个人约有50个朋友的社交网络中找最大深度为5的朋友的朋友,可以用MySQL来处理吗?当然可以,但是这种情况用图数据库可能会更合适。
数据库系列(3):数据库管理系统的分类相关推荐
- 【数据库系列】数据库基本知识点整理
文章目录 一.基本概念 1.数据模型 2.主键与外键 3.事务 4.索引 5.视图 二.SQL语句 1.数据定义 1)CREATE TABLE 2)ALTER TABLE 3)DROP TABLE 2 ...
- MySQL数据库系列之数据库设计原则
MySQL中数据库设计原则: 1.一般情况下,应该尽量使用可以正确存储数据的最小数据类型.数据类型不一样,存储的执行效率也不一样.最好使用适度的整型数据类型,例如int之类的数据,这样在做查询或者字段 ...
- 死磕数据库系列(二十):MySQL 数据库 DDL、DML、DQL、DCL 语言理论与实践(sql 8.0 版)...
点关注公众号,回复"1024"获取2TB学习资源! 今天,民工哥带大家一起来学习一下 MySQL 数据库的 DDL.DML.DQL.DCL 这几种语言的理论知识与实践.如有帮助,请 ...
- 「数据库系列一」为什么要用数据库?
第一个问题:什么是数据库? 数据,现在被誉为工业社会的"石油".数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经 加工的原始素材.数据可以是连续 ...
- MySQL数据库系列
MySQL基础系列 1.SQL语句的分类与MySQL简单查询 2.MySQL条件查询 3.排序与分组函数 4.group by和having 5.连接查询 6.子查询及limit分页 7.MySQL数 ...
- 宾馆客户管理系统数据库java_JAVA连接数据库酒店管理系统.docx
酒店管理系统设计 PAGE \* MERGEFORMAT4页 湖南文理学院芙蓉学院 数据库原理及应用课程设计报告 题目:酒店管理系统 学生姓名:罗杰 学号: 专业班级:网络工程1301班 同组姓名:冷 ...
- 数据库课程实践---仓库管理系统(附代码下载)
数据库课程设计- 仓库管理系统桌面应用程序 数据库:SQLServer 2008R2 开发工具:VS2010 语言:C# , SQL 界面直接拖控件就好了. 请注意,SQL 是针对 SQLServer ...
- 考前复习必备MySQL数据库(关系型数据库管理系统)
大家好,我是魔王哪吒,话不多说,今天带来的是一篇<考前复习必备MySQL数据库(关系型数据库管理系统)>文章,欢迎大家喜欢. 前言 MySQL是一个关系型数据库管理系统,在web应用方面, ...
- mysql数据库实战_mysql数据库实战系列--再入泥坑
开源数据库MySQL DBA运维实战 第2章 SQL1 作者:帽子先生 SQL语言分类 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询 ...
最新文章
- gcc选项-g与-rdynamic的异同
- ScrollView以及TextView和对应链接
- 2020-11-19
- 为什么道理都懂,课执行力差的现象如此普遍?
- deepTools对ChIP-seq数据可视化
- 教你设置技嘉主板bios中文图解
- php论坛源代码,php论坛源代码下载
- 夜间灯光数据dn值_DMSP/OLS和VIIRS/DNB夜间灯光影像的校正及拟合
- SegeX MemDialog:封装好的内存对话框(非资源对话框)说明
- COCOS-BCX|区块链项目介绍
- JVM 相关 - 深入 JVM 的钥匙 WhiteBox API
- OpenCV开发笔记(五十二):红胖子8分钟带你深入了解直方图对比匹配(图文并茂+浅显易懂+程序源码)
- 为什么那么多公司在用快速开发平台开发软件?下表说明了一切
- java 格式化数字(每三位加逗号),保留两位小数。
- strcpy与strncpy的实现
- Java程序员应该如何提升自己呢
- 快速构建Table和Form页面
- 基于SUSAN算法的边缘检测方法研究(Matlab代码实现)
- 34.14. 切换字符集
- 我的世界java旁观者模式_我的世界如何切换到旁观模式