#创作者激励#常见数据库类型 原创
【本文正在参加2023年第一期优质创作者激励计划】
坚果,润开鸿技术专家,华为HDE,InfoQ签约作者,OpenHarmony布道师,多个平台的专家博主。
主页:https://ost.51cto.com/person/posts/14830231
今天我要带大家了解的是数据库,本文主要会从数据库的定义,分类,以及在HarmonyOS/OpenHarmony中如何使用数据库来进行数据管理。
数据库现在比较常见,很多应用都会使用数据库来管理储存数据。
什么是数据库
数据库(DataBase,简称DB),是指可以长期存放在计算机内部的、可以进行数据管理的仓库(可以直接理解为储存数据的仓库)。
- 数据库是依据数据结构来构建的,所以我们看到的数据是比较”条理化“的(数据库分为库、表和一条条记录)
- 查找的速度较快
- 数据共享
不过数据库有哪些类型,估计很多人都分不清楚,目前数据库类型大致分为三种
数据库类型有哪些?
数据库共有3种类型,为关系数据库、非关系型数据库和键值数据库。
1、关系数据库
关系型数据库是把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据。常见的关系型数据库有MySQL、Oracle、PostgreSQL、Microsoft Access等等。
关系型数据库是依据关系模型来创建的数据库,所谓的关系模型是指 “一对一、一对多、多对多”,通过关系模型来构建二维表格
- 一对一:身份证号、校园卡
- 一对多:班级-学生、部门-职员
- 多对多:课程-学生、书籍-作者
优点:
- 数据安全(磁盘)、数据一致性
- 二维表结构直观,易理解
- 使用SQL语句操作非常方便,可用于比较复杂的查询
缺点:
- 读写性能较差
- 不擅长处理较复杂的关系
2、非关系型数据库(NoSQL)
相比于关系型数据库,表与表之间是有关系的,利用表与表之间的关系进行各种操作。而NoSQL没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的,因此NoSQL也可以用于分布式系统上。
NoSQL大致可以分为四种:
分类 | 数据模型 | 优势 | 举例 |
---|---|---|---|
键值数据库(key-value) | 哈希表 | 查询快、易部署、高并发 | Redis、Memcached |
列存储数据库 | 列式数据存储 | 查询快,数据压缩率高,不需要额外建立索引 | HBase |
文档型数据库 | 键值对扩展 | 将数据以文档的形式储存,数据结构不定 | MongoDB |
图数据库 | 节点和关系组成的图 | 利用图结构的相关算法 | Neo4j、JanusGraph |
- 键值数据库(key-value)
键值数据库类似于传统语言中使用的哈希表。可以通过key来添加、删除、查询数据,因为使用key主键来访问,所以键值数据库有很高的性能及拓展性。
例如现在很火的Redis,由于其数据是储存于内存,读写速度非常快。Redis在一秒内读写可以超过十万个键值。它虽然是作为数据库来开发的,现在更广泛的应用于缓存、消息队列。另外就是不论在分布式数据服务中,还是首选项中,都是存在KV数据模型。
- 列存储数据库
不同于关系型数据库的以行为单位储存,列存储数据库将数据存储于列族中,一个列族存储经常被一起查询的相关数据。由于它的查询速度快,列式数据库则应该发挥他查询速度方面的优势,主要用于海量数据分析一类的方面。
- 文档型数据库
文档型数据库与键值数据库是类似的,只不过它将数据用文档的形式储存,数据存储可以是XML、JSON等多种形式。
- 图数据库
图数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。因为使用的是灵活的图模型,所以可以拓展到多个服务器上。图数据库一般用于推荐系统、处理社交网络等等。
最后关于OpenHarmony中的数据管理,大家可以阅读这个文档,了解更多细节。