数据库系统(DateBase System,简称DBS)是指在计算机系统中引入数据库后的系统构成,由计算机硬件,操作系统,DBMS,DB,应用程序和用户以及数据库开发和管理人员等组成。
(一)数据库的4大特点
1、整体数据结构化;
2、数据的共享度高;
3、数据的独立性高;
4、高度的数据控制能力
1.1整体数据结构化
数据库中的任何数据都不属于任何应用,数据是公共的,结构是全面的。在数据库中,数据文件的个数是有限的,固定的,但数据库系统的应用却是无限制的。
好处:整体数据的结构化可减少乃至消除不必要的数据冗余,因此节约了整体数据的存储空间,避免了数据的不一致性和不相容性(数据不符合规定的约束条件)。
1.2数据的共享度高
数据与数据的逻辑结构同时存储在数据库中,显示数据时,可同时显示数据的逻辑结构;整个组织的整体数据被综合考虑,整体数据结构化。因而,DBS的数据共享度较高。
好处:合法用户都可以方便的访问使用数据库中的数据,且不用担心出现数据的不一致性和不相容性。数据库中的数据可适应各种合法用户的合理要求以及各种应用的要求,可以方便的扩充新的应用。
1.3数据的独立性高
数据的独立性是指数据与应用程序之间的关联性。数据与数据的结构是存储在数据库中的(在外存上),由DBMS管理的。应用程序既不存储数据,也不存储数据的逻辑结构。
物理独立性:数据库中数据的世纪存储方式改变时,DBMS可以适当改变转换数据的方式,使用户面对数据的逻辑结构保持不变,从而处理数据的应用程序也保持不变。
逻辑独立性:数据库中数据的逻辑结构发生变化时,DBMS可以适当改变数据的转换方式,用户面对数据的逻辑结构保持不变。
好处:数据与程序相互独立,可以方便的编制各种应用程序,大大减轻应用程序的维护工作。
1.4 高度的数据控制能力
a,较高的安全性
b,较好的数据完整性
c,较强的并发控制能力
d,较强的数据恢复能力
(二)数据库分类
数据库分类有很多种,我们来看看常见的几种类别,比如说关系型数据库、文档数据库等。
2.1关系型数据库
关系型数据库管理系统(RDBMS)是最主流的数据库类型,它们使用关系(表)模型存储数据。表的模式由表名和固定数量的字段组成,一个记录(实体)对应表中的一行,由多个属性值组成。关系实际上就是一组结构统一的记录。
关系型数据库的表结构设计通常使用规范化技术,关系支持的基本操作包括:
-
集合操作(并集、交集、差集);
-
选择操作(基于指定条件选择表中记录的子集);
-
投影操作(选择属性/字段的子集);
-
连接操作(基于多个表的笛卡尔积以及选择和投影操作)。
关系型数据库使用 SQL 执行数据操作,包括表的管理、事务控制以及用户管理等。
经过多年的发展,许多 RDBMS 不仅仅支持关系模型,同时也提供了用户自定义类型、非原子属性(XML、JSON、数组等)、继承等扩展功能。
常见的关系型数据库包括:
-
Oracle
-
MySQL
-
Microsoft SQL Server
-
PostgreSQL
-
IBM Db2
-
Microsoft Access
-
SQLite
-
Snowflake
2.2文档数据库
文档存储(Document stores),也称为面向文档的数据库系统,主要特点在于无模式(schema-free)的数据结构。无模式意味着:
-
集合(表)中的记录(行)不需要定义统一的结构,每个记录可以包含不同的属性(字段);
-
每个记录中的各个字段的数据类型可以不同;
-
一个字段可以包含多个值(数组);
-
记录可以包含嵌套结构。
文档存储通常使用内部注解,可以在应用程序中直接进行处理。最常见的存储方式是 JSON。
常见的文档数据库包括:
-
MongoDB
-
Amazon DynamoDB
-
Databricks
-
Microsoft Azure Cosmos DB
-
Couchbase
2.3时序数据库
时序数据库(Time Series DBMS)是专门为了存储时间序列数据而进行优化的数据库管理系统。时序数据的每一条记录都包含了一个时间戳信息,来源包括物联网中的传感器、智能电表、RFID 等设备,以及股票交易系统中的交易数据。
常见的时序数据库包括:
-
InfluxDB
-
Kdb
-
Prometheus
-
Graphite
-
TimescaleDB
2.4图数据库
图数据库(Graph DBMS),也称为面向图的数据库,以图(节点和边)结构表示数据。它们支持图数据的处理,以及图中具体属性的计算,例如从一个节点到另一个节点的路径。
图数据库通常不会提供所有节点的索引,因此无法直接基于属性访问节点。
常见的图数据库包括:
-
Neo4j
-
Microsoft Azure Cosmos DB
-
Virtuoso
-
OrientDB
-
ArangoDB
-
Amazon Neptune
2.5搜索引擎
搜索引擎是专门用于搜索文本内容的一类 NoSQL 数据库。除了针对搜索应用的通用优化之外,这类系统还提供了一些功能:
-
支持复杂搜索条件
-
全文搜索
-
词干提取
-
搜索结果排名和分组
-
支持高扩展性的分布式搜索
常见的搜索引擎包括:
-
Elasticsearch
-
Splunk
-
Solr
-
OpenSearch
-
Sphinx
2.6对象数据库
对象数据库(Object oriented DBMS),也称为面向对象的数据库,设计目标是在数据库中以面向对象编程语言相同的方式存储对象,从而避免关系型数据库中的转换和分解。另外,对象之间的关系(例如继承)也是在数据库内部进行维护。
对象数据库通常使用类似 SQL 的查询语言操作对象。
由于近年来许多关系型数据库引入了面向对象的功能,例如自定义数据类型和属性;同时开发工具和框架(Hibernate、JPA 等)支持对象和关系之间的转换,对象数据库的应用并不常见。
常见的对象数据库包括:
-
InterSystems IRIS
-
InterSystems Caché
-
Db4o
-
ObjectStore
-
Actian NoSQL Database
2.7RDF存储
RDF(资源描述框架)是一种描述信息的方法论,最初用于描述 IT 资源的元数据,如今应用更加广泛,通常与语义网相结合。
RDF 模型以主-谓-宾的形式将信息表示为三元组,能够存储和处理这种三元组的数据库管理系统被称为 RDF 存储或者三元存储。RDF 存储可以看着图数据库的一个子类,谓词可以解释为主语和宾语之间的联系。但是 RDF 存储提供了一些额外的访问方法,例如类似 SQL 的查询语言 SPARQL。
常见的 RDF 存储数据库包括:
-
MarkLogic
-
Apache Jena - TDB
-
Virtuoso
-
Amazon Neptune
-
GraphDB
2.8宽列存储
宽列存储(Wide column stores),也称为可扩展记录存储,以记录的方式存储数据,支持超大数量的动态字段功能。由于字段名和记录的键不固定、而且记录可以包含数十亿个字段,宽列存储可以被看作二维键值存储。
宽列存储也具有文档数据库的无模式特性,但是实现方式完全不同。
不要将宽列存储和关系型数据库中的面向列的存储混淆,后者是关系型数据库或者数据仓库中为了改进分析性能而实现的存储方式,它们将不同记录的相同列存储在一起,而不是将同一个记录的不同字段存储在一起。
常见的宽列存储数据库包括:
-
Cassandra
-
Microsoft Azure Cosmos DB
-
HBase
-
Google Cloud Bigtable
2.9多值数据库
多值数据库(Multivalue DBMS)与关系型数据库类似,也是以表的形式存储数据。但是,多值数据库可以为记录的一个属性(字段)指定多个值。这种存储类型违反了第一范式,因此它们也被称为非第一范式(NF2)系统。
某些关系型数据库扩展了多值属性(例如数组)功能,例如 PostgreSQL。
常见的多值数据库包括:
-
Adabas
-
UniData,UniVerse
-
jBASE
2.10向量数据库
向量数据库(Vector DBMS)是专门用于高效存储、索引以及查询高维向量数据的软件系统。它们使用特殊的算法和数据结构,支持相似性搜索,通常用于 AI 机器学习、数据挖掘等领域。
常见的向量数据库包括:
-
Kdb
-
Chroma
-
Pinecone
-
Milvus
(三)数据库的作用
可能很多人会问:我的数据就存放在自己电脑的excel表里不就可以了,为什么还要搞个数据库呢?
这是因为数据库比excel有更多的优势。比如数据库可以存放大量的数据,允许很多人同时使用里面的数据。下面我们来看下数据库的三个重要价值:
3.1首先,方便用户存储、访问数据
数据库可以存储大量的数据信息,方便用户进行有效的访问。数据库还可以对数据进行分类保存,并且能够提供快速的查询。例如:我们平时使用谷歌搜索内容时,谷歌也是基于数据库和数据分类技术来达到快速搜索的目的。
3.2帮助我们安全的保存数据
数据库可以满足应用的共享和安全方面的要求,把数据放在数据库中在很多情况下也是出于安全的考虑。例如:如果一个公司把员工所有资料都放在电脑上,资料的保密性就不是很好了。如果把员工的资料存到数据库中,就可以设置一些权限,从而保证数据的安全性。
3.3利用数据库可以进行数据分析,提升数据价值
例如:超市中把物品销售信息保存在数据库中,每个月销售情况的排名决定了下半月的进货数量。数据库查询的结果实际上产生了新的数据信息。