关系型数据库与非关系型数据库的区别

1️⃣ 关系型数据库(Relational Database,RDBMS)

核心概念

  • 数据以 表(Table) 形式存储
  • 表由 行(Row) 和 列(Column) 组成
  • 表与表之间可以通过 外键(Foreign Key) 建立关系
  • 数据结构固定,需要定义 Schema
  • 支持 ACID 事务(原子性、一致性、隔离性、持久性)

典型代表

  • MySQL
  • PostgreSQL
  • Oracle
  • SQL Server

特点

特性 描述

数据结构 表格形式,严格 schema

查询语言 SQL

事务 完整支持 ACID

关系 表与表可以 join

优势 数据一致性高,适合核心业务系统

缺点 扩展性差(水平扩展困难),大规模海量数据性能可能受限

示例

复制代码
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

INSERT INTO users (id, name, age) VALUES (1, '张三', 20);
SELECT * FROM users WHERE name='张三';

2️⃣ 非关系型数据库(NoSQL)

核心概念

  • 不用固定表结构(Schema-less),数据形式多样
  • 主要存储模式:
    1. 文档型(Document) → JSON 文档
      • 例如:Elasticsearch、MongoDB
    2. 键值型(Key-Value) → Redis、Riak
      • 通过 key 直接获取 value
    3. 列族型(Column-Family) → HBase、Cassandra
      • 类似关系型表,但列可以动态添加
    4. 图数据库 → Neo4j
      • 存储节点和边,适合社交网络、推荐系统
  • 支持高并发、分布式、水平扩展
  • 事务支持弱,有些只支持文档级事务或最终一致性

特点

特性 描述

数据结构 灵活,JSON、键值、列族或图

查询语言 DSL、API 或专有查询语言

事务 弱事务(部分支持最终一致性)

关系 数据间关系弱或用嵌套结构表示

优势 扩展性好,适合大数据、搜索、缓存、日志分析

缺点 数据一致性和完整性不如关系型数据库

示例(文档型 MongoDB)

复制代码
db.animals.insert({
    "_id": 1,
    "name": "猫",
    "age": 2,
    "description": "可爱的小动物"
});

db.animals.find({ "name": "猫" });

3️⃣ 核心区别总结

特性 关系型数据库 RDBMS 非关系型数据库 NoSQL

数据结构 表格、固定 schema 文档/键值/列族/图,灵活 schema

查询语言 SQL API 或 DSL,不一定用 SQL

事务 完整 ACID 弱事务/最终一致性

扩展性 垂直扩展为主 水平扩展方便

适用场景 核心业务系统(银行、ERP) 大数据、搜索、缓存、日志分析

示例 MySQL, Oracle Elasticsearch, MongoDB, Redis


💡 小结:

  • RDBMS → 注重数据一致性、关系型、适合传统业务系统
  • NoSQL → 注重性能、可扩展性、适合大数据、搜索、缓存、日志分析等场景
相关推荐
Highcharts.js11 小时前
Highcharts Grid 中文站正式上线:表格数据处理的全新选择
前端·javascript·数据库·表格数据·highcharts·可视化图表·企业级图表
Elastic 中国社区官方博客14 小时前
Elasticsearch:使用 Agent Builder 的 A2A 实现 - 开发者的圣诞颂歌
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
2301_8166602114 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
qq_3721542315 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
_下雨天.16 小时前
NoSQL之Redis配置与优化
数据库·redis·nosql
LiAo_1996_Y16 小时前
CSS如何实现文字渐变效果_通过background-clip实现艺术字
jvm·数据库·python
2401_8877245016 小时前
CSS如何让表单在手机端友好展示_利用Flexbox实现堆叠排版
jvm·数据库·python
数据库小组16 小时前
MySQL 删库后怎么恢复?binlog2sql 之外,NineData 还能做什么
数据库·sql·mysql·安全·数据·ninedata·删库
zhangchaoxies16 小时前
Layui轮播图(carousel)怎么设置自动播放间隔
jvm·数据库·python
切糕师学AI17 小时前
HBase:一文搞懂分布式宽列数据库(原理 + 架构 + 实战)
数据库·分布式·nosql·hbase·分布式宽列数据库·wide column db