数据库,我们该如何选型?.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库,我们该如何选型? 2021-11-09 更多内容关注:fullstack888 影响数据库选择的因素 数据量:能否海量数据,单表数据量太大会考验数据库的功能 数据结构:结构化 (每条记录的结构都一样) 还是非结构化的 (不同记录的结构可以不一样) 能否宽表:一条记录是 10 个域,还是成百上千个域 数据属性:是基本数据 (比如用户信息)、业务数据 (比如用户行为)、协助数据 (比如日志)、缓存数据 能否要求事务性:一个事务由多个操作组成,必需全部成功或全部回滚,不允许部分成功 实时性:对写延迟,或读延迟有没有要求,比如有的业务允许写延迟高但要求读延迟低 查询量:比如有的业务要求查询大量记录的少数列,有的要求查询少数记录的全部列 排序要求:比如有的业务是针对时间序列操作的 牢靠性要求:对数据丢失的容忍度 全都性要求:能否要求读到的肯定是最新写入的数据 对增删查改的要求:有的业务要能快速的对单条数据做增删查改 (比如用户信息),有的要求批量导入,有的不需要修改删除单条记录 (比如日志、用户行为),有的要求检索少量数据 (比如日志),有的要求快速读取大量数据 (比如呈现报表),有的要求大量读取并计算数据 (比如分析用户行为) 能否需要支持多表操作 不同的业务对数据库有不同的要求 SQL 数据库 NoSQL 数据库 SQL 数据库就是传统的关系型数据库 行列式表存储 结构化数据 需要预定义数据类型 数据量和查询量都不大,假如数据量大要做分表 对数据全都性、完整性约束、事务性、牢靠性要求比较高 支持多表 Join 操作 支持多表间的完整性,要删除 A 表的某条数据,可能需要先删除 B 表的某些数据 SQL 的增删改查功能强 较为通用,技术比较成熟 大数据量功能不足 高并发功能不足 无法应用于非结构化数据 扩展困难 常用的 SQL 数据库比如 Oracle、MySQL、PostgreSQL、SQLite NoSQL 泛指非关系型数据库 表结构较机警,比如列存储,键值对存储,文档存储,图形存储 支持非结构化数据 有的不需要预定义数据类型,有的甚至不需要预定义表 支持大数据量 多数都支持分布式 扩展性好 基本查询力量,高并发力量比较强 (由于接受非结构化、分布式,并牺牲全都性、完整性、事务性等功能) 对数据全都性要求比较低 通常不支持事务性,或是有限支持 通常不支持完整性,简单业务场景支持较差 通常不支持多表 Join,或是有限支持 非 SQL 查询言语,或类 SQL 查询言语,但功能都比较弱,有的甚至不支持修改删除数据 不是很通用,技术多样,市场变化比较大 常用的 NoSQL 数据库比如 列式:HBase、Cassandra、ClickHouse 键值:Redis、Memcached 文档:MongoDB 时序:InfluxDB、Prometheus 搜索:Elasticsearch SQL 和 NoSQL 是一个互补的关系,应用在不同的场景中 OLTP OLAP OLTP (On-Line Transaction Processing) 次要做实时事务处理 比如处理用户基本信息、处理订单合同、处理银行转账业务、企业的 ERP 系统和 OA 系统,等等 频繁地,对少量数据,甚至是单条数据,做实时的增删改查 数据库经常更新 通常对规范化、实时性、稳定性、事务性、全都性、完整性等有要求 操作较为固定,比如订单业务,可能永久就那几个固定的操作 数据库次要模型是 3NF 或 BCNF 模型 OLAP (On-Line Analytical Processing) 数据仓库,次要做历史数据分析,为商业决策供应支持 比如对大量的用户行为做分析,对设备的形态、使用率、功能做分析 频率较低地,对大量数据,做读取、聚合、计算、分析,实时性要求不高,对吞吐力量要求较高 通常列的数量比较多,但每次分析的时候只取少部分列的数据 通常是批量导入数据 通常数据导入后不会修改,次要是读取操作,写少读多 通常对规范化、事务性、全都性、完整性等要求较低,甚至一个查询操作失败了也不会有什么影响 操作较为机警,比如一个海量用户行为数据表,可以想出很多不同的方法,从不同的角度对用户做分析 数据库次要是星型、雪花模型 不使用高功能的 OLAP 之前,更传统的做法是通过离线业务构建 T+1 的离线数据,比较滞后 OLTP 通常用传统的关系数据库,假如数据量大要分表,对事务性、全都性、完整性等要求不高的话也可以用 NoSQL OLAP 通常用 NoSQL,数据量不大的话也可以用传统的关系数据库 关系型数据库 Oracle、SQL Server、MySQL、PostgreSQL、SQLite Oracle:甲骨文开发的商业数据库,不开源,支持全部主流平台,

文档评论(0)

liuxiyuliuxingyu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档