数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发,详细解读了数据库的主要类别和基本特点,并就大模型时代备受瞩目的数据库类型------向量数据库进行了深度剖析,供大家在了解数据库领域的基本概念时起到一点参考作用。
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. 数据库的特点
· 实现数据共享
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
· 减少数据的冗余度
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
· 数据的独立性
数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。
· 数据实现集中控制
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
· 数据一致性和可维护性,以确保数据的安全性和可靠性
· 安全性控制:以防止数据丢失、错误更新和越权使用;
· 完整性控制:保证数据的正确性、有效性和相容性;
· 并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。
· 故障恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。