# SQL 和 NoSQL 的选择

数据库需要有那些功能?

  1. 支撑海量数据存储
  2. 高并发请求
  3. 高可用
  4. 高可扩展性

数据库的类型有很多,主要可以分为 结构化数据库(SQL) 和 非结构化数据库(NoSql)

结构化数据库 和 非结构化数据库怎么选择呢?这里来比较一下。

# 总结

有事物处理的需求,采用 关系型数据

# 传统数据库的优缺点

# 1、优点

  1. 通过事务处理保持数据的一致性
  2. 技术成熟
  3. 数据更新的开销很小
  4. 可以进行Join等复杂查询

# 2、缺点

  1. 大数据场景下I/O较高

    因为数据是按行存储,即使只针对其中某一列进行运算,关系型数据库也会将整行数据从存储设备中读入内存,导致I/O较高

  2. 存储的是行记录,无法存储数据结构

  3. 表结构schema扩展不方便

    如要需要修改表结构,需要执行执行DDL(data definition language),语句修改,修改期间会导致锁表,部分服务不可用

  4. 全文搜索功能较弱

    关系型数据库下只能够进行子字符串的匹配查询,当表的数据逐渐变大的时候,like查询的匹配会非常慢,即使在有索引的情况下。况且关系型数据库也不应该对文本字段进行索引

  5. 存储和处理复杂关系型数据功能较弱

    许多应用程序需要了解和导航高度连接数据之间的关系,才能启用社交应用程序、推荐引擎、欺诈检测、知识图谱、生命科学和 IT/网络等用例。然而传统的关系数据库并不善于处理数据点之间的关系。它们的表格数据模型和严格的模式使它们很难添加新的或不同种类的关联信息。

  6. 数据库庞大,价格贵

# 非结构化数据库

# 参考文章

  1. 《NoSQL 还是 SQL ?这一篇讲清楚》
  2. 《关系型与非关系型数据库的优缺点》
Last Updated: 2/17/2020, 6:39:09 PM