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

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

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.mzph.cn/news/136611.shtml

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

相关文章

讲解机器学习中的 K-均值聚类算法及其优缺点。

K-均值聚类算法是一种无监督学习算法,常用于对数据进行聚类分析。其主要步骤如下: 首先随机选择K个中心点(质心)作为初始聚类中心。 对于每一个样本,计算其与每一个中心点的距离,将其归到距离最近的中心点…

kafka分区数和log.segment.bytes引发的kafka主题数据总字节数的疑问

突然想到一个问题, ①kafka broker的log.segment.bytes配置指定触发日志片段关闭的最大字节总数,当日志片段大小该值时,当前日志片段会被关闭,新的日志片段会被打开。 ②kafka的主题分区数是固定的,一个分区对应一个日…

计算机视觉驾驶行为识别应用简述

一、什么是计算机视觉识别? 计算机视觉识别是一种基于图像处理和机器学习的人工智能应用技术,可以用于多个场景。常见应用场景包括人脸识别、场景识别、OCR识别以及商品识别等。今天以咱们国产系统豌豆云为例,为大家梳理一下在车辆驾驶行为中…

Kafka -- 架构、分区、副本

1、Kafka的架构: 1、producer:消息的生产者 2、consumer:消息的消费者 3、broker:kafka集群的服务者,一个broker就是一个节点,主要是负责处理消息的读、写的请求和存储消息。在kafka cluster中包含很多的br…

什么是Java虚拟机(JVM),它的作用是什么?

什么是Java虚拟机(JVM) Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分,它是一种在不同操作系统上运行Java程序的虚拟计算机。 JVM的作用是执行Java字节码(Java bytecode&#…

雷达波形之一——LFM线性调频波形

文章目录 前言一、线性调频信号的形式1、原理2、时域表达式3、频域表达式 二、MATLAB 仿真1、涅菲尔积分①、MATLAB 源码②、仿真结果 2、LFM①、MATLAB 源码②、仿真结果1) 典型 LFM 波形,实部2) 典型 LFM 波形,虚部3) LFM 波形的典型谱 前言 线性调频…

亚马逊云科技海外服务器初体验

目录 前言亚马逊云科技海外服务器概述注册使用流程实例创建性能表现用户体验服务支持初体验总结 前言 随着云原生技术的飞速发展,越来越多的企业和开发者选择云服务器来作为自己的使用工具,云原生技术的发展也促进了云服务厂商的产品发展,所…

Java自学第6课:电商项目(2)

1 创建工具类并连接数据库 在工程src右键单击new,新建util包 再创建DBUtil类 数据库交互需要有数据库支持的包,这是官方给出的类库。 先声明1个代码块 // 静态代码块 只加载1次static{try {Class.forName("com.mysql.jdbc.Driver");} catch (…

华为gre带验证key案例

配置FW_A。 a.配置接口的IP地址,并将接口加入安全区域。 system-view [sysname] sysname FW_A [FW_A] interface GigabitEthernet 1/0/1 [FW_A-GigabitEthernet1/0/1] ip address 1.1.1.1 24 [FW_A-GigabitEthernet1/0/1] quit [FW_A] interface GigabitEthernet 1/…

NAT协议

目录 NAT 前言 NAT地址转换表 NAT分类 前言 静态NAT 192.168.1.2访问200.1.1.2执行过程 动态NAT 192.168.1.2访问200.1.1.2执行过程 NAPT 192.168.1.2的5000端口访问200.1.1.2的80端口执行过程 基本命令 配置动态NAPT转换 定义内外网接口 配置NAPT 静态NAPT配置…

利用SSH将本地仓库文件推送至远程仓库(GitHub)

使用以下命令创建公钥: ssh-keygen -t rsa -C "xxxxx.com"填写自己的邮箱,无需设置密码,一路回车即可。 使用以下命令查看 SSH 秘钥: cd ~/.ssh.ssh 目录存放在用户主目录下,里面存放了 id_rsa 和 id_rsa…

简述SVM

概述 SVM,即支持向量机(Support Vector Machine),是一种常见的监督学习算法,用于分类和回归问题。它是一种基于统计学习理论和结构风险最小化原则的机器学习方法。 SVM的主要思想是在特征空间中找到一个最优的超平面…

linux rsyslog安装配置

syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/rsyslog.conf文件。syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点。syslog使用UDP 514/TCP 514端口。 1.环境信息 环境信息 HostnameIpAddressOS versionModuleNoterh…

【Shell脚本8】Shell printf 命令

Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化…

Elasticsearch 集群状态详解

cluster state 返回结果详解 GET /_cluster/statehttps://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html详细信息如下: {"cluster_name": "business-log","cluster_uuid": "ArYy-qmCTbCQTDUI8o…

conda清华源安装cuda12.1的pytorch

使用pytorch官方提供的conda command奇慢无比,根本装不下来(科学的情况下也这样) 配置一下清华源使用清华源装就好了 清华源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 配置方法:conda config --…

strtok函数详解:字符串【分割】的利器

目录 一,strtok函数简介 二,strtok函数的用法 三,strtok函数的注意事项 一,strtok函数简介 strtok函数可以帮助我们将一个字符串按照指定的分隔符进行分割,从而得到我们想要的子字符串。 🍂函数头文件&am…

腾讯待办是不是停了?怎么用其它提醒软件查看导出的ics文件

腾讯待办是腾讯企业旗下的业务产品,其主要以微信小程序的形式使用,定位于待办事项和日程管理工具,支持罗列日程待办清单、设定定时提醒,帮助大家规划日常事务和进行时间管理,成功创建待办事项后可在对应的公众号和绑定…

Python教程之字典(Dictionary)操作详解

文章目录 前言一、创建字典二、访问字典里的值三、访问字典里的值四、删除字典元素五、字典键的特性六、字典内置函数&方法七、字典练习代码关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Py…

tqdm学习

from tqdm import tqdmepochs 10 epoch_bar tqdm(range(epochs)) count 0 for _ in epoch_bar:count count1print("count {}".format(count))print(_)每次就是一个epoch