关系型数据库(RDBMS)和非关系型数据库(NoSQL)

关系型数据库擅长处理复杂关系和事务,而非关系型数据库更适合高并发、分布式存储和灵活的非结构化数据场景。

1. 请简单阐述一下关系型数据库和非关系型数据库的定义。
  • 关系型数据库(RDBMS):

    • 是一种基于表结构的数据存储系统,数据以行和列的方式组织,表与表之间通过"关系"进行关联。
    • 通过标准的 SQL(Structured Query Language)进行数据管理。
    • 典型的例子有:MySQL 、PostgreSQL、Oracle、SQL Server
  • 非关系型数据库(NoSQL):

    • 是一种不采用传统表结构的数据存储系统,支持灵活的数据模型,如键值对、文档、列族或图结构。
    • 适用于大数据、高并发、非结构化或半结构化数据存储。
    • 典型的例子有:MongoDB(文档型)、Redis(键值型)、Cassandra(列族型)、Neo4j(图数据库)。
2. 关系型数据库的主要特点是什么?非关系型数据库又有哪些与之不同的关键特性?
  • 关系型数据库的主要特点:

    1. 结构化数据:数据存储在表格中,具有严格的行列结构。
    2. ACID特性:支持事务,确保数据的原子性、一致性、隔离性和持久性。
    3. 强关系支持:通过主键、外键和索引实现表间关系。
    4. 标准化查询:支持标准 SQL 语句。
    5. 适合复杂查询:对关系复杂、需要多表联结的应用表现良好。
  • 非关系型数据库的关键特性:

    1. 灵活数据模型:支持键值对、文档、列族或图等模型,适合非结构化或半结构化数据。
    2. 高性能和高扩展性:支持高并发读写,易于水平扩展。
    3. 无固定模式:数据结构可以动态变化,无需严格定义模式。
    4. 弱一致性:优先保证数据的可用性和分区容错性(CAP 定理)。
    5. 适合特定场景:如实时分析、缓存、大规模数据存储等。
3. 举例说明什么是关系型数据库,什么是非关系型数据库。
  • 关系型数据库示例:

    • 表格结构存储:

      plaintext 复制代码
      - Users Table: 
      +----+---------+-------------+ 
      | ID | Name | Email | 
      +----+---------+-------------+ 
      | 1 | Alice | alice@mail | 
      | 2 | Bob | bob@mail | 
      +----+---------+-------------+

      示例数据库:MySQL、PostgreSQL、Oracle。

  • 非关系型数据库示例:

    • 文档型存储(MongoDB 示例):

      json 复制代码
      { 
          "_id": 1, 
          "name": "Alice", 
          "email": "alice@mail", 
          "orders": [ 
              { "id": 101, "amount": 300 }, 
              { "id": 102, "amount": 150 } 
          ] 
      }
    • 示例数据库:MongoDB、Redis、Cassandra。

4. 请解释一下关系型数据库中的"关系"一词的含义。

在关系型数据库中,"关系"是数学中关系的一个实现形式,指的是表(Relation)。表由若干行(Row)和列(Column)组成,其中:

  • 行表示记录(Record)。
  • 列表示属性(Attribute)。
  • 表与表之间通过外键建立关联,从而构成数据库的关系网络。
5. 对比关系型数据库和非关系型数据库的数据模型,它们在数据存储和组织方式上有哪些根本差异?
方面 关系型数据库 非关系型数据库
数据结构 表格(行与列) 键值对、文档、列族、图结构等
模式(Schema) 固定模式,需先定义表结构 无固定模式,数据结构灵活
关系支持 表间通过主键、外键建立关系 无内置关系支持,需通过应用层实现
查询语言 SQL 多样化,如 JSON 查询、键值操作
扩展性 垂直扩展(Scale-up) 水平扩展(Scale-out)
6. 关系型数据库的表结构和非关系型数据库(如文档型数据库)的文档结构在数据表示上各有什么优劣?
对比维度 关系型数据库的表结构 非关系型数据库的文档结构
数据存储方式 结构化存储,强制定义表的列和类型 半结构化存储,自由定义文档内容
灵活性 低,需提前定义模式;模式变更复杂 高,字段和结构可以动态调整
查询能力 强,支持复杂的联结、多条件查询 灵活,适合嵌套和层级数据,但复杂查询性能可能较低
性能 适合事务和一致性要求高的场景 适合高并发和海量数据存储
开发便捷性 需要严格遵循模式和关系设计 更贴近开发者的思维,易于存储复杂嵌套对象

巧合是上帝默默操控世界的方式。

相关推荐
不羁。。1 小时前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
yangchanghua1113 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance3 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai3 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白3 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务3 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂7 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.8 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚10 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队11 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术