当前位置: 首页 > news >正文

数据库基础(1) . 关系型数据库

1.数据库 database

1.1.数据持久化

数据持久化(Data Persistence)指的是将程序中的数据保存到某种持久化的存储介质(如硬盘、SSD、磁带等)上的过程,使得即使在程序终止后,数据依然可以被保留下来并在下次启动时重新加载。

数据持久化是现代软件开发中的一个重要概念,特别是在构建需要长期存储数据的应用程序时,如数据库管理系统、配置管理系统、日志记录系统等。

1.1.1.持久化的重要性

  1. 数据保存:确保数据在系统关闭或崩溃后仍然存在。
  2. 数据恢复:在系统重启后可以从持久化存储中恢复数据。
  3. 数据共享:使得不同进程或机器之间可以共享数据。
  4. 数据备份:提供数据备份和恢复机制,防止数据丢失。

1.1.2.持久化技术

数据持久化可以通过多种方式进行,以下是一些常见的技术手段:

  1. 文件系统

    • 文本文件:简单的数据存储方式,适合小规模的数据记录,如配置文件。
    • 二进制文件:更紧凑的数据存储格式,适合大量数据的存储,但不如文本文件易读。
  2. 数据库

    • 关系型数据库(RDBMS):如MySQL、PostgreSQL,用于存储结构化数据。
    • 非关系型数据库(NoSQL):如MongoDB、Cassandra,适合存储非结构化或半结构化数据。
  3. 对象关系映射(ORM)

    • ORM框架(如Hibernate、Entity Framework)可以简化对象到关系数据库的映射,使得对象模型可以直接用于持久化操作。
  4. 内存数据库

    • 虽然主要存储在内存中,但通常会定期将数据刷盘(flush to disk),如Redis。
  5. 日志文件

    • 记录关键操作的日志,以便于审计和恢复。
  6. 配置管理系统

    • 如Git,不仅用于版本控制,也可以作为配置文件的持久化存储。
  7. 状态管理工具

    • 在客户端应用中,如Redux(JavaScript前端应用的状态管理)可以帮助管理应用的状态并持久化。

1.2.关系型数据库

Relational data model

曾经比较流行的数据模型有三种,即层次结构模型网状结构模型, 以及按关系理论建立的关系结构模型

关系模型是由Edgar F. Codd在20世纪70年代提出的,他因此获得了图灵奖。在关系模型中,数据被组织成一张或多张表格的形式,每张表格都有一个唯一的名称,称为关系。每张表由行(tuples)和列(attributes)组成,行代表一个特定的对象实例,而列定义了对象的属性或特征。

关键特性

  1. 表格化数据:数据以二维表格的形式存储,每一行代表一条记录,每一列代表一种属性。

  2. 数据独立性:逻辑结构与物理存储分离,应用程序不依赖于数据的物理存储位置。

  3. 数据完整性:提供了多种机制来保证数据的一致性和准确性,如主键约束、外键约束、唯一性约束等。

  4. 并发控制:允许多个用户或应用程序同时访问数据库而不发生冲突。

  5. 事务处理:支持ACID(原子性、一致性、隔离性、持久性)原则,确保数据的一致性和可靠性。

  6. 支持复杂的查询:SQL语言强大,支持复杂的查询操作。

1.3.数据库管理系统

(Database Management System) DBMS是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。

1.3.1.MySQL

MySQL 是一个开源的关系型数据库管理系统,由MySQL AB公司开发,后来被Sun Microsystems收购,现在属于Oracle公司。MySQL以其高效、稳定和灵活性著称,特别适用于Web应用程序。

  • 特点
    • 开源:免费使用,社区版提供了丰富的功能。
    • 高性能:支持多种存储引擎,如InnoDB、MyISAM等,提供了良好的性能。
    • 跨平台:支持Windows、Linux、Unix等多种操作系统。
    • 易用性:安装和配置相对简单,支持图形化管理工具如phpMyAdmin。
    • 插件式架构:支持多种存储引擎和插件,可以根据需要选择不同的组件。

1.3.2.Oracle Database

Oracle Database 是由Oracle公司开发的企业级关系型数据库管理系统。它是全球最大的企业级数据库之一,以其高可用性、安全性和可扩展性而闻名。

  • 特点
    • 企业级功能:支持高级特性如分区、并行查询等。
    • 高可用性:提供多种高可用解决方案,如Real Application Clusters (RAC) 和Data Guard。
    • 安全性:具备先进的安全措施,支持细粒度的访问控制。
    • 集成性:与其他Oracle产品(如中间件、应用服务器)高度集成。
    • 多模型支持:除了关系型数据,还支持JSON、XML等非关系型数据存储。

1.3.3.Microsoft SQL Server

Microsoft SQL Server 是微软推出的关系型数据库管理系统,主要用于Windows操作系统平台,也支持Linux。

  • 特点
    • 集成开发环境:与Visual Studio和.NET Framework紧密集成。
    • 分析能力:支持OLAP(在线分析处理)和数据仓库功能。
    • 商务智能:提供报表服务、分析服务等功能,方便进行数据分析。
    • 云支持:支持Azure SQL Database,可以部署在云端。
    • 多平台支持:除了Windows,SQL Server 2017及以后版本也支持Linux和Docker容器。

1.3.4.IBM DB2

IBM DB2 是IBM推出的一种高性能的关系型数据库管理系统,广泛应用于大型企业和金融行业。

  • 特点
    • 高性能:优化的查询处理引擎,适用于大规模数据处理。
    • 自动管理:自动索引、自动调优等功能减少管理负担。
    • 多平台支持:支持多种操作系统,包括Windows、Linux、Unix、z/OS等。
    • 多模型支持:除了关系型数据库,DB2还支持NoSQL、JSON、XML等数据类型。
    • 云兼容:支持IBM Cloud和其他公共云平台。

1.3.5.PostgreSQL

PostgreSQL 是一个强大的开源关系型数据库系统,以其稳定性、功能丰富和遵守SQL标准而受到开发者青睐。

  • 特点
    • 标准支持:严格遵循SQL标准,支持SQL:2008标准。
    • 扩展性强:支持多种存储引擎,可以通过插件扩展功能。
    • 多模型支持:除了关系型数据,还支持JSON、XML等非关系型数据存储。
    • 事务处理:支持ACID特性,确保数据一致性。
    • 跨平台:支持多种操作系统,包括Windows、Linux、Unix等。

在这里插入图片描述

1.4.非关系型数据库 NoSQL

NoSQL(Not Only SQL)数据库是一种不同于传统关系型数据库的设计理念和技术体系。

NoSQL数据库主要针对大规模数据分布式存储的需求而设计,尤其适合处理大规模的数据集,并且在分布式环境中提供高性能和高可扩展性。

1.4.1.NoSQL 的特点

  1. 非关系型:与关系型数据库相比,NoSQL数据库通常不强制使用固定的表格模式。
  2. 分布式架构:支持横向扩展,可以在多个服务器上分布存储数据。
  3. 高可用性:通过复制和分区来提高数据的可用性和可靠性。
  4. 灵活性:数据模型可以是文档、键值对、列族或图等。
  5. 高性能:针对特定类型的数据操作进行了优化,通常在读写性能方面优于关系型数据库。

1.4.2.NoSQL 数据库的分类

NoSQL数据库根据其存储数据的方式可以大致分为以下几种类型:

  1. 键值存储(Key-Value Stores)

    • 特点:数据以键值对的形式存储,每个键对应一个值。
    • 用途:适合会话管理、购物车存储等场景。
    • 示例:Redis、Voldemort。
  2. 文档数据库(Document-Oriented Databases)

    • 特点:数据以文档形式存储,常用格式为JSON或BSON。
    • 用途:适合存储和查询复杂结构的数据,如博客文章、用户档案等。
    • 示例:MongoDB、CouchDB。
  3. 列族存储(Column-Family Stores)

    • 特点:数据按列族存储,适合分析型应用。
    • 用途:适合数据挖掘、实时分析等场景。
    • 示例:Apache Cassandra、HBase。
  4. 图数据库(Graph Databases)

    • 特点:数据以图的形式存储,节点和边表示实体及其关系。
    • 用途:适合社交网络分析、推荐系统等。
    • 示例:Neo4j、JanusGraph。
  5. 内存数据库(In-Memory Databases)

    • 特点:数据主要存储在内存中,提供极高的读写性能。
    • 用途:适合需要极高读写速度的应用场景。
    • 示例:Redis(尽管Redis通常是键值存储,但它也有内存数据库的特点)。

1.4.3.常见NoSQL

高并发读写 (key-value) Redis,Tokyo Cabinet,Flare

海量数据的高效存储和访问(面向文档)MongeDB,CouchDB

高可扩展性和高可用性 Cassandra , Voldemort

在这里插入图片描述


http://www.mrgr.cn/news/65138.html

相关文章:

  • Django ORM详解:事务与F、Q函数使用
  • Java Iterator 实现杨辉三角
  • 24/11/4 算法笔记 蛇形卷积
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑时空非均匀的特高压阀侧套管数字孪生模型降阶算法研究 》
  • leetcode-9-回文数
  • 写给粉丝们的信
  • 在 Vision Pro 上打造成功的沉浸式叙述应用:探索极致交互体验
  • VidPanos:从随手拍摄的平移视频生成全景视频
  • mysql报错:Field id doesnt hava a default value
  • 《LoRA-IR》:2024年10月中科院自动所提出了一种用于多种修复图像恶化退化问题的LORA,效果拔群
  • 计算机毕业设计Spark+大模型股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • Node.js:ES6 模块化 Promise
  • Intel nuc x15 重装系统步骤和注意事项(LAPKC71F、LAPKC71E、LAPKC51E)
  • XPath 实例
  • 哪些因素导致了 MySQL 数据库的延时呢?
  • Vuex的基本使用
  • Nginx 在中小企业的初级应用实操指南
  • C语言 | Leetcode 题解之第535题TinyURL的加密与解密
  • Thumb 汇编指令集,Thumb 指令编码方式,编译 Thumb 汇编代码
  • 软件平台系统稳定性规范
  • PHP JSON 教程
  • 国产操作系统重新安装软件商店
  • CSS 计数器:深入解析与高级应用
  • 21.网工入门篇--------介绍下SDN与NFV的概述
  • Spring 函数式端点详解
  • 【Linux 26】应用层协议 - HTTP