什么是数据库?数据库有哪些基本分类和主要特点?

数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发,详细解读了数据库的主要类别和基本特点,并就大模型时代备受瞩目的数据库类型——向量数据库进行了深度剖析,供大家在了解数据库领域的基本概念时起到一点参考作用。

1. 什么是数据库?

先来看看维基百科对于数据库的定义:以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间构成。

百度百科对数据库的定义如下:数据库是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据库(Database,英文简称 DB)是一个以某种有组织的方式存储的数据集合。可以理解为是一个存放计算机数据的仓库,这个仓库按照一定的数据结构(即数据的组织形式或数据之间的联系)来对数据进行组织和存储,我们可以通过数据库提供的多种方法来管理其中的数据。

在这里插入图片描述

2. 数据库的分类

根据组织存储数据时所采用的数据模型,数据可分为关系型数据库(Relational Database Management System,简称RDBMS)和非关系型数据库(NoSQL)。

关系型数据库: 以表格形式存储数据,SQL为操作语言,如MySQL、Oracle、SQL Server等。特点是可以对数据进行高度组织、分类、筛选,并能够等值查找。适用于数据维护强一致性,交易量大,结构变化少的应用场景。

非关系型数据库(NoSQL):不使用表格进行数据存储,而是使用文档、列族、键值等不同的数据模型存储数据。优点是能够处理海量数据,高并发读写,扩展性强,但不支持 JOIN 类操作,不适用于需要多表操作且事务要求较高的应用场景。

在这里插入图片描述

Tips:非关系型数据库的诞生历程

· 非关系型数据库也称为 NoSQL 数据库,NoSQL 的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”(没有SQL)的意思。NoSQL 数据库的产生之初并不是要彻底地否定和终结关系型数据库,而是作为传统关系型数据库的一个有效补充。

· 随着互联网 Web2.0、Web3.0 网站的兴起,传统的关系型数据库在应对规模日益扩大的海量数据,超大规模和高并发的动态网站时遇到了很多问题与挑战,例如,传统关系型数据库的 I/O 瓶颈、性能瓶颈等都难以有效突破。

· 于是出现了大批针对特定场景,以高性能、高并发以及使用便利为目的的功能特异化的数据库产品,非关系型数据库就是在这样的情景中诞生并得到非常迅速发展的。在这些特定的场景下,NoSQL 数据库可以发挥出难以想象的高效率和高性能。NoSQL 是非关系型数据库的广义定义,它打破了长久以来关系型数据库与 ACID 理论大一统的局面。

· NoSQL 数据库的数据存储不需要固定的表结构,通常也不存在连接操作,其在大数据存取上具备关系型数据库无法比拟的性能优势,满足了企业应用需要将数据存储在横向且伸缩性上更强的功能需求。

目前NoSQL数据库仍然没有一个统一的标准,现在有四种大的分类:键值数据库、列存储数据库、文档数据库、图数据库。

· 键值(Key-Value)存储数据库

键值(key-value)数据库类似于传统语言中使用的哈希表,可以通过 key 来添加、查询或者删除数据,因为是使用 key 主键访问,所以会获得很高的性能及扩展性。

键值数据库主要使用一个哈希表,表中有一个特定的键和一个指针(指向特定的数据)。对于 IT 系统来说,key/value 模型的优势在于简单、易部署、高并发。

· 列存储数据库

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

· 文档型数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值,在处理网页等复杂数据时,文档型数据库比传统键值数据库的查询效率更高。如:CouchDB, MongoDb.

· 图形(Graph)数据库

图数据库顾名思义,就是一种存储图形关系的数据库,而图模型是图数据库中的重要概念。图模型由两个要素组成:节点和边,每个节点代表一个实体(人、地点、事物等),每条边代表两个节点之间的连接,这种通用结构可以对各种场景进行建模,如社交网络以及由关系定义的任何其他事物。特点是可以处理高密度连接和稀疏数据,支持快速的复杂查询。GraphDB和Neo4j是常用的图形数据库。

此外,随着大模型技术的爆发式增长,作为一种新型数据库,“大模型的海马体”——向量数据库(Vector Database)成为当前最为灼热的技术焦点。

向量数据库:

向量数据库是一种以向量嵌入方式存储和管理向量数据的数据库。在向量数据库中,每个向量都有一个唯一的标识符,并且可以存储在一个连续的向量空间中。

图像、文本和音视频这种非结构化数据都可以通过某种变换或者嵌入学习转化为向量数据存储到向量数据库中,从而实现对图像、文本和音视频的相似性搜索和检索。这意味着可以使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。

向量数据库在处理向量数据方面具有以下特点:

· 高效存储和查询:向量数据库采用特定的存储结构和索引算法,可以高效地存储和查询向量数据,减少数据冗余,提高查询效率。

· 多维查询:向量数据库支持多维查询,可以根据向量的多个属性进行查询,例如相似度查询、范围查询等。

· 向量相似度计算:向量数据库可以对向量进行相似度计算,用于寻找最相似的向量数据,常用于推荐系统、图像搜索等应用。

· 高并发处理:向量数据库具有较强的并发处理能力,可以同时处理大量的向量数据查询请求。

· 支持向量索引:向量数据库支持各种向量索引技术,例如倒排索引、KD-Tree、LSH等,用于加速向量数据的查询。

· 分布式存储:一些向量数据库支持分布式存储和计算,可以横向扩展,适用于处理大规模的向量数据。

向量数据库可以实现高效存储与检索,利用索引技术和向量检索算法实现高维大数据下的快速响应。向量数据库也是非关系型数据库的一种,除了要管理向量数据外,还支持对传统结构化数据的管理。实际使用时,有很多场景会同时对向量字段和结构化字段进行过滤检索,这对向量数据库来说也是一种挑战。

3. 数据库的特点

· 实现数据共享

数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

· 减少数据的冗余度

同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

· 数据的独立性

数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。

· 数据实现集中控制

文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

· 数据一致性和可维护性,以确保数据的安全性和可靠性

· 安全性控制:以防止数据丢失、错误更新和越权使用;

· 完整性控制:保证数据的正确性、有效性和相容性;

· 并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

· 故障恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/186853.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【chat】2:vs2022 连接远程ubuntu服务器远程cmake开发

大神们是使用vs远程连接和调试的:C++搭建集群聊天室(三):配置远程代码编辑神器 VScode我尝试过vs++ 和 clion 都不错。在 Visual Studio 中配置 Linux CMake 项目 比较麻烦的就是要配置CMakeSettings.json ,而且会自动做复制指定远程 Linux 目标,则会将源复制到远程系统 …

19、Flink 的Table API 和 SQL 中的自定义函数及示例(3)

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

如何实现Debian工控电脑USB接口安全管控

Debian 作为工控电脑操作系统具有稳定性、安全性、自定义性和丰富的软件包等优势,适用于要求高度可靠性和安全性的工控应用。 Debian 作为工控电脑操作系统在工业控制领域有很大优势,包括: 稳定性:Debian 的发布版以其稳定性而闻…

小程序多文件上传 Tdesign

众所周知,小程序文件上传还是有点麻烦的,其实主要还是小程序对的接口有诸多的不便,比如说,文件不能批量提交,只能一个个的提交,小程序的上传需要专门的接口。 普通的小程序的页面也比普通的HTML复杂很多 现…

centos中安装的goland配置sdk报错:所选的目录不是Go SDK的有效主路经

选中目录后一直报错: 正确的位置: 原因竟然是使用 解压go1.21.4.linux-amd64.tar.gz 包出来,少了scr和test目录,重新解压后可以正确设定SDK主目录。 有同样问题的可以确认一下。 tar -C /usr/local -zxvf go1.19.2.linux-amd64.…

java项目之高校奖学金管理系统(ssm框架+源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的高校奖学金管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 管理员:首…

NodeJS 入门笔记

文档地址 课程地址 源码 提取码:963h hello wrold console.log(hello, world);node hello.jsnodejs 中不能使用 DOM(document) 和 BOM(window) 的 API: documentwindowhistorynavigatorlocation 但是下面的 API 是相通的: consoletimer…

自动化测试中的失败截图和存log

如果我们在执行自动化测试的时候,希望能在失败的时候保存现场,方便事后分析。 对于UI自动化,我们希望截图在测试报告中。 对于api自动化,我们希望截取出错的log在测试报告中。 我开始自己蛮干,写了两个出错截图的方法。…

试题:最大的矩形(给定直方图里面积最大的矩形)

问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 请找出能放在给定直方图里面积最大的…

ARMday04(开发版简介、LED点灯)

开发版简介 开发板为stm32MP157AAA,附加一个拓展版 硬件相关基础知识 PCB PCB( Printed Circuit Board),中文名称为印制电路板,又称印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子…

什么是自动化测试框架?我们该如何搭建自动化测试框架?

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

uniapp使用vur-cli新建项目并打包

新建项目 npm install -g vue/cli vue create -p dcloudio/uni-preset-vue my-project选择默认模板npm run dev:h5 运行 安装sass和uview &#xff08;npm安装失败&#xff09; bug&#xff1a;使用uni.scss中的变量或样式&#xff0c;<style lang"scss"> 必…

『 Linux 』进程概念

文章目录 &#x1f5de;️ 冯诺依曼体系结构 &#x1f5de;️&#x1f4c3; 为什么在计算机当中需要使用内存充当中间介质而不使CUP与外设直接进行交互?&#x1f4c3; CPU如何读取数据 &#x1f5de;️ 操作系统(Operating system) &#x1f5de;️&#x1f4c3; 操作系统如何…

无人机航拍技术基础入门,无人机拍摄的方法与技巧

一、教程描述 买了无人机&#xff0c;可是我不敢飞怎么办&#xff1f;禁飞区越来越多&#xff0c;到底哪儿才能飞&#xff1f;我的无人机跟你一样&#xff0c;为什么我拍不出大片&#xff1f;厂家的说明书看不进去&#xff0c;有没有一套无人机的课程&#xff0c;可以快速上手…

C++初阶(十)模板初阶

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、泛型编程1、如何实现一个通用的交换函数呢&#xff1f;2、引出模板 二、函数模板1、函数模…

2023 全栈工程师 Node.Js 服务器端 web 框架 Express.js 详细教程(更新中)

Express 框架概述 Express 是一个基于 Node.js 平台的快速、开放、极简的Web开发框架。它本身仅仅提供了 web 开发的基础功能&#xff0c;但是通过中间件的方式集成了外部插件来处理HTTP请求&#xff0c;例如 body-parser 用于解析 HTTP 请求体&#xff0c;compression 用于压…

软件测试/测试开发丨接口测试学习笔记,TcpDump与WireShark

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27859 协议分析工具 网络监听&#xff1a;TcpDump WireShark 代理 Proxy 推荐工具&#xff1a;手工测试charles [全平台]、安全测试burpsuite [全平台 j…

网络安全自学手册

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

QT QSplitter

分裂器QSplitter类提供了一个分裂器部件。和QBoxLayout类似&#xff0c;可以完成布局管理器的功能,但是包含在它里面的部件,默认是可以随着分裂器的大小变化而变化的。 比如一个按钮放在布局管理器中,它的垂直方向默认是不会被拉伸的,但是放到分裂器中就可以被拉伸。还有一点不…

如何在Visual Studio上创建项目并运行【超级详细】

工欲善其事&#xff0c;必先利其器。想要学好编程&#xff0c;首先要把手中的工具利用好&#xff0c;今天小编教一下大家如何在史上最强大的编译器--Visual Studio上创建项目。&#x1f357; 一.打开编译器&#x1f357; 双击你电脑上的vs&#xff0c;(2012,2019,2022)都行。&…