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

数据库基础(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.kler.cn/a/378513.html

相关文章:

  • 【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024,11月29-12月1日)
  • CAN总线学习笔记(1、CAN总线定义)
  • 用ChatGPT提升工作效率:从理论到实际应用
  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • C++ 编程基础(4)函数 | 4.1、函数概述
  • 支持 Mermaid 语言预览,用通义灵码画流程图
  • eclipse下载与安装(汉化教程)超详细
  • filebeat+elasticsearch+kibana日志分析
  • java项目之微服务在线教育系统设计与实现(springcloud)
  • Python爬虫的“京东大冒险”:揭秘商品类目信息
  • Golang gRPC
  • Pycharm,2024最新专业版下载安装配置详细教程!
  • uni-app使用movable-area 实现数据的拖拽排序功能
  • 链表逆置相关算法题|原地逆置|轮转链表|循环链表逆置(C)
  • vscode markdown-image 图片粘贴自动上传到本地目录设置
  • 11月3日笔记(根据凭据提权)
  • Manus Metagloves Pro虚拟现实手套
  • java项目之协力服装厂服装生产管理系统的设计与实现(springboot)
  • Spring Boot框架下的信息学科平台系统架构设计
  • AG32的3个ADC可以并联使用吗
  • 【工具变量】“宽带中国”试点城市名单匹配数据集(2000-2023年)
  • 基于海思soc的智能产品开发(产品开发和mpp平台)
  • ️ 数据库迁移过程中可能遇到哪些常见问题?
  • 高频面试题基本总结回顾(含笔试高频算法整理)11
  • 【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】
  • Redis有什么不一样?