- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 通常用传统的关系数据库,假如数据量大要分表,对事务性、全都性、完整性等要求不高的话也可以用 NoSQLOLAP 通常用 NoSQL,数据量不大的话也可以用传统的关系数据库
关系型数据库 Oracle、SQL Server、MySQL、PostgreSQL、SQLite
Oracle:甲骨文开发的商业数据库,不开源,支持全部主流平台,
您可能关注的文档
最近下载
- 专题22.27 待定系数法求二次函数解析式(专项练习)-2021-2022学年九年级数学上册基础知识专项讲练(人教版).docx VIP
- 元宵节英语介绍PPT.pptx VIP
- 云南省市政工程消耗量定额说明.pdf VIP
- 乡村振兴战略背景下农村生态文明建设路径研究.docx VIP
- 优衣库2025年供应链与消费者需求变化研究报告.docx
- 全过程工程咨询.pptx VIP
- 13J104 蒸压加气混凝土砌块、板材构造(OCR).pdf VIP
- 人教版八年级上册英语试卷 Unit 3单元测试卷.docx VIP
- Office高效办公知到智慧树期末考试答案题库2025年西安欧亚学院.docx VIP
- h5开发合同模板(3篇).docx VIP
文档评论(0)