1.SQL和NoSQL

  1. 1.SQL和NoSQL
    1. 1.1 知识点
      1. SQL 和 NoSQL 是什么
      2. 数据模型
        1. SQL
        2. NoSQL
      3. 查询语言
        1. SQL
        2. NoSQL
      4. 事务支持
        1. 什么是事务
        2. SQL
        3. NoSQL
      5. 性能
        1. SQL
        2. NoSQL
      6. 适用场景对比图
      7. 优劣势总结
        1. 优势
        2. 劣势
      8. 总结

1.SQL和NoSQL


1.1 知识点

SQL 和 NoSQL 是什么

SQL 是关系型数据库,NoSQL 是非关系型数据库。

数据模型

SQL

  • SQL 使用表格(tables)存储数据,表由行和列组成,每一行是记录,每一列是字段。
  • 固定的模式(Schema):表的结构需要提前定义(如字段名称、数据类型等),插入数据时必须遵守定义好的模式。
  • 适用场景:结构化数据(如财务、订单系统)。
  • 示例:MySQL、PostgreSQL、SQL Server。
  • 面向行数据库:为了靠近面向对象,大多使用 ORM 框架来开始。如: EF Core。

NoSQL

  • NoSQL 使用多种数据模型,主要包括:
    • 文档型(Document-based):JSON 或 BSON 格式存储数据。
    • 键值型(Key-Value Stores):类似字典,数据以键值对存储。
    • 列族型(Column-family Stores):面向列的存储,适合大规模数据分析。
    • 图数据库(Graph Databases):基于节点和边构建,适合存储和查询关系密集的数据。
  • 动态模式:无需固定的表结构,可随时添加字段,灵活性高。
  • 适用场景:半结构化或非结构化数据(如日志、社交网络、物联网数据)。
  • 示例:MongoDB、Redis、Cassandra、Neo4j。
  • 文档型是最像面向对象的非关系型数据库。

查询语言

SQL

  • 标准化语言:使用结构化查询语言(SQL)操作数据,语法固定、通用性强。
  • 功能强大:支持复杂的查询、事务操作、聚合函数等。

NoSQL

  • 多样化的接口:查询方式根据具体数据库的实现而定,通常是:
    • 文档型:使用 JSON 或特定库的方法(如 MongoDB 的查询)。
    • 键值型:简单的通过键获取值。

事务支持

什么是事务

事务是数据库管理系统(DBMS)中用于处理一组操作的基本单位,这些操作要么全部成功,要么全部失败,确保数据库的完整性和一致性。

事务的四个特性(ACID):

  1. 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不会出现部分成功的情况。

  2. 一致性(Consistency):事务执行前后,数据库的完整性约束未被破坏,确保数据从一个一致性状态转变到另一个一致性状态。

  3. 隔离性(Isolation):并发执行的事务相互独立,一个事务的执行不应受到其他事务的干扰。

  4. 持久性(Durability):一旦事务提交,其对数据库的修改是永久性的,即使系统崩溃也不会丢失。

这些特性共同确保了数据库在处理事务时的可靠性和一致性。

SQL

  • 支持事务:适合场景,如银行系统、电子商务等对数据一致性要求极高的场景。

NoSQL

  • 部分支持事务:适合场景,如社交网络等对实时一致性要求较低,但追求高可用性和性能的场景。

性能

SQL

  • 高性能查询:对于结构化数据,优化好的 SQL 查询速度非常快。
  • 复杂事务支持:在处理多表关联和复杂事务时表现优异。

NoSQL

  • 高并发处理:由于没有复杂事务机制,NoSQL 可以轻松处理大量并发读写请求。
  • 低延迟:适合需要快速读写的场景。

适用场景对比图

优劣势总结

优势

  • SQL
    • 成熟稳定,技术生态完善。
    • 数据一致性和完整性高。
    • 强大的查询能力,适合复杂关系的建模。
  • NoSQL
    • 高扩展性和灵活性。
    • 适应多种数据模型(文档、键值、图形等)。
    • 更快的读写速度,支持分布式存储。

劣势

  • SQL
    • 难以应对海量数据和高并发。
    • 模式固定,灵活性不足。
  • NoSQL
    • 不适合复杂查询和事务。
    • 不提供标准化查询语言,学习成本高。
    • 数据一致性较弱(除部分 NoSQL 数据库外,如支持事务的 MongoDB)。

总结

SQL 和 NoSQL 各有其最佳适用场景。SQL 适用于对一致性和复杂关系建模要求高的场景,而 NoSQL 则更加适合需要高扩展性、灵活性以及处理大规模数据的应用。在实际使用中,可以根据具体需求选择合适的数据库类型,或者结合两者(如采用混合数据库架构)。



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏