在设计一个数据库系统的时候,我们会根据具体的需要选择不同的硬件和软件,在确定好硬件之后我就要确定用哪种数据库,更为准确点应该是用哪种数据库管理系统(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来处理吗然可以,但是这种情况用图数据库可能会更合适。
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表31982 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!