1/核心概念

  1. SQL(Structured Query Language)

    • 本意:指 结构化查询语言,是与关系型数据库通信的标准语言。
    • 现在通常指代关系型数据库 本身。它基于关系模型(使用表、行、列),数据模式是预定义且固定的,强调数据的 一致性完整性
  2. NoSQL(Not Only SQL)

    • 本意不仅仅是 SQL
    • 现在通常指代非关系型数据库。它是一个统称,涵盖所有不遵循传统关系模型的数据存储系统。NoSQL 数据库通常为 可扩展性灵活的模式高性能 等特定需求而设计。

2/主要区别

特性SQL(关系型数据库)NoSQL(非关系型数据库)
数据模型结构化。预定义的模式(表结构),数据以行和列的形式存储在表中,表之间通过外键关联。灵活/非结构化。无固定模式。根据类型不同,可以是键值对、文档、图或宽列。
查询语言使用标准化的 SQL 语言进行增删改查。没有统一查询语言。每种数据库有自己的 API 或查询方法(如基于 JSON 的查询)。
扩展性垂直扩展为主。通过增加单台服务器的 CPU、内存、硬盘来提升性能。横向扩展(分库分表)较复杂。水平扩展为主。天然支持通过增加服务器节点(分布式集群)来分担负载,扩展性强。
事务性(ACID)强调 ACID 属性(原子性、一致性、隔离性、持久性),支持复杂事务。通常遵循 BASE 原则(基本可用、软状态、最终一致性),牺牲强一致性以获得高可用和分区容错性。但部分 NoSQL 现在也支持事务。
主要优势数据结构化,数据完整性好,支持复杂查询和多表关联操作,技术成熟。高并发读写性能好,扩展灵活,模式灵活易于迭代,能很好地处理海量数据和非结构化数据。
主要劣势扩展性相对困难,高并发下可能遇到瓶颈,固定的模式在需求频繁变化时不够灵活。不支持复杂的关联查询(Join),事务支持相对较弱(尤其在分布式下),不同产品特性差异大。
适用场景需要复杂查询、强一致性、事务支持的场景。如:金融系统、ERP、CRM、会计系统等。大数据量、高并发、模式多变、数据结构不固定的场景。如:社交网络、内容管理系统、物联网、实时分析、购物车缓存等。

3/各自代表的数据库

SQL(关系型数据库)代表

这些都是 基于表的、支持 SQL 标准 的成熟数据库。

  1. MySQL / MariaDB: 最流行的开源关系数据库,广泛用于Web应用。MariaDB 是 MySQL 的一个分支。
  2. PostgreSQL: 功能强大的开源对象-关系型数据库,支持高级数据类型(如 JSON、GIS)和复杂查询,被誉为“最先进的开源关系数据库”。
  3. Oracle Database: 企业级商业数据库的王者,功能极其全面强大,常用于大型、关键业务系统。
  4. Microsoft SQL Server: 微软推出的商业数据库,与 Windows 生态和 .NET 平台集成紧密。
  5. SQLite: 轻量级的嵌入式数据库,整个数据库就是一个文件,常用于移动端和桌面应用。
NoSQL(非关系型数据库)代表

NoSQL 通常分为以下几大类,每类解决不同问题:

1. 文档型数据库

  • 特点: 数据以类似 JSON/BSON 的文档形式存储,每个文档可以有完全不同的结构。
  • 代表
    • MongoDB: 最流行的文档数据库,查询功能强大,适合内容管理、用户配置等。
    • CouchDB: 使用 HTTP API,支持数据同步。

2. 键值型数据库

  • 特点: 最简单的 NoSQL 模型,数据以 键-值对 形式存储,通过键快速访问值。性能极高。
  • 代表
    • Redis: 数据存储在内存中,速度极快,常用作缓存、消息队列、会话存储。
    • Amazon DynamoDB: AWS 托管的键值/文档混合数据库,提供极高的可扩展性。
    • etcd: 用于分布式系统配置共享和服务发现。

3. 宽列存储数据库

  • 特点: 数据存储在 列族 中,可以动态添加列,非常适合海量数据的存储和查询(特别是读操作)。
  • 代表
    • Apache Cassandra: 高可用、无单点故障的分布式数据库,写性能优异。
    • Apache HBase: 构建在 Hadoop HDFS 之上的分布式数据库,适合大数据分析。
    • Google Bigtable: Cassandra 和 HBase 的设计灵感来源。

4. 图数据库

  • 特点: 专门存储实体(节点)关系(边) 的信息,擅长处理复杂的关系网络。
  • 代表
    • Neo4j: 最著名的图数据库,使用 Cypher 查询语言。
    • Amazon Neptune: AWS 托管的图数据库服务。

4/总结与趋势

  • 不是替代关系,而是互补关系: SQL 和 NoSQL 适用于不同的场景。现代架构中经常 混合使用,例如用 MySQL 存储核心交易数据,用 Redis 做缓存,用 Elasticsearch(一种搜索引擎,常被归为 NoSQL)做全文检索。
  • 融合趋势: 出现了 “NewSQL” 数据库(如 Google Spanner, CockroachDB),试图结合 SQL 的强一致性和 NoSQL 的水平扩展性。同时,许多传统 SQL 数据库(如 PostgreSQL, MySQL)也开始支持 JSON 等非结构化数据,而 NoSQL 数据库(如 MongoDB)也增加了事务支持。
  • 如何选择
    • 如果你的数据结构化、关系复杂、需要强一致性,优先选择 SQL
    • 如果你需要处理海量数据、高并发、模式多变、或数据结构松散,优先考虑 NoSQL
本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com