【系统架构设计 每日一问】四 如何对关系型数据库及NoSql数据库选型

根据不同的业务需求和场景,选择适合的数据库类型至关重要。以下是一个优化后的表格展示,涵盖了管理型系统、大流量系统、日志型系统、搜索型系统、事务型系统、离线计算和实时计算七大类业务系统的数据库选型建议。先明确下NoSQL的分类

NoSQL数据库分类

在这里插入图片描述

场景分析及选型

系统类型 场景 数据量 并发量 实时性 一致性要求 读写分布和类型 安全性 运维性 数据库选型
管理型系统 运营类管理 中等 中等 中等 读写均衡 关系型数据库(如MySQL、PostgreSQL)
大流量系统 电商单品页服务 高(后台) 读多写少(前台) 后台:关系型数据库(如MySQL、PostgreSQL)
前台:K-V数据库(如Redis、Memcached)
日志型系统 日志收集与分析 写多读少 原始数据:列式数据库(如HBase、Cassandra)
日志搜索:倒排索引数据库(如Elasticsearch)
搜索型系统 站内商品搜索 中等 读多写少 后台:关系型数据库(如MySQL、PostgreSQL)
前台:倒排索引数据库(如Elasticsearch)
事务型系统 金融交易、库存 中等 读写均衡 关系型数据库(如MySQL、PostgreSQL)+ 缓存(如Redis)+ 一致性协议(如Paxos、Raft)或新型关系数据库(如CockroachDB、TiDB)
离线计算 大数据批量分析 读多写少 列式数据库(如Hadoop HDFS、Apache Parquet)
或关系型数据库(如MySQL、PostgreSQL)
实时计算 实时监控、物联网 中高 写多读少 时序数据库(如InfluxDB、TimescaleDB)
或列式数据库(如Druid、ClickHouse)

详细说明

  1. 管理型系统

    • 适用场景:运营类系统、管理信息系统。
    • 数据库选型:关系型数据库(如MySQL、PostgreSQL)因为其高一致性和数据完整性。
  2. 大流量系统

    • 适用场景:电商单品页的某个服务。
    • 数据库选型
      • 后台:关系型数据库(如MySQL、PostgreSQL)以确保数据一致性。
      • 前台:内存型数据库(如Redis、Memcached)以应对高并发和快速响应需求。
  3. 日志型系统

    • 适用场景:日志收集和分析。
    • 数据库选型
      • 原始数据存储:列式数据库(如HBase、Cassandra)以优化大数据写入。
      • 日志搜索:倒排索引数据库(如Elasticsearch)以实现快速查询和搜索。
  4. 搜索型系统

    • 适用场景:站内搜索(如商品搜索)。
    • 数据库选型
      • 后台:关系型数据库(如MySQL、PostgreSQL)用于数据管理。
      • 前台:倒排索引数据库(如Elasticsearch)用于快速搜索和查询。
  5. 事务型系统

    • 适用场景:库存管理、交易系统、记账系统。
    • 数据库选型:关系型数据库(如MySQL、PostgreSQL)+ 缓存(如Redis)+ 一致性协议(如Paxos、Raft),或者使用新型关系数据库(如CockroachDB、TiDB)以确保数据一致性和高并发处理。
  6. 离线计算

    • 适用场景:大数据分析和处理。
    • 数据库选型:列式数据库(如Hadoop HDFS、Apache Parquet)或关系型数据库(如MySQL、PostgreSQL)以应对大量数据的批量处理需求。
  7. 实时计算

    • 适用场景:实时监控和分析。
    • 数据库选型:时序数据库(如InfluxDB、TimescaleDB)或列式数据库(如Druid、ClickHouse)以支持高频数据写入和实时分析。

相关推荐

  1. 关系数据库NoSQL-

    2024-07-22 07:48:03       32 阅读
  2. NoSQL(非关系数据库)之Redis

    2024-07-22 07:48:03       59 阅读
  3. NOSQL(非关系数据库)的优缺点有哪些?

    2024-07-22 07:48:03       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 07:48:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 07:48:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 07:48:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 07:48:03       55 阅读

热门阅读

  1. rabbitmq笔记

    2024-07-22 07:48:03       18 阅读
  2. DFS从入门到精通

    2024-07-22 07:48:03       13 阅读
  3. Robot Operating System——借用内存型消息

    2024-07-22 07:48:03       13 阅读
  4. B树(B-Tree)详解

    2024-07-22 07:48:03       17 阅读
  5. IPython与Pandas:数据分析的动态组

    2024-07-22 07:48:03       17 阅读
  6. SSR和SPA渲染模式

    2024-07-22 07:48:03       14 阅读
  7. 《流程引擎原理与实践》开源电子书

    2024-07-22 07:48:03       16 阅读
  8. 2742. 给墙壁刷油漆

    2024-07-22 07:48:03       15 阅读
  9. longjmp和多线程:读写线程实例

    2024-07-22 07:48:03       18 阅读
  10. 【CF】1216F-WiFi 题解

    2024-07-22 07:48:03       17 阅读
  11. 牛客周赛 Round 52VP(附D的详细证明)

    2024-07-22 07:48:03       17 阅读
  12. Android13 应用代码中修改热点默认密码

    2024-07-22 07:48:03       15 阅读
  13. 【React】事件绑定、React组件、useState、基础样式

    2024-07-22 07:48:03       16 阅读
  14. postman接口测试工具详解

    2024-07-22 07:48:03       17 阅读