思维导图:数据库选型决策

2024-05-25 08:18

本文主要是介绍思维导图:数据库选型决策,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思维导图:数据库选型决策

MySQL、ElasticSearch、MondoDB、Redis、HBase、Cassandra、ScyllaDB,以及Spark和Flink的简单对比

在这里插入图片描述

文字版:

数据库选型决策作者路飞的纯白世界MySQL引擎种类InnoDB支持事务支持外键聚集索引必须有主键辅助索引绑定在主键索引的叶子索引上根据主键索引查询最快,只需一次检索根据辅助索引查询需要两次检索不记录表的总行数,需要全表扫描才可知总行数最小的锁粒度是行锁MyISAM不支持事务不支持外键非聚集索引主键索引和辅助索引各自独立会记录表的总行数最小的锁粒度是表锁选择默认且推荐使用InnoDB不需要事务的表可考虑MyISAM适用场景严格事务需求优势CAP的CA强一致性可用性局部查询性能优越索引和分区能解决大部分查询性能问题InnoDB对事务支持好性能瓶颈全表扫描性能差多表关联查询性能差原理索引B+树只有叶子节点具有data非叶子节点没有data,一次IO可读出更多的索引值,利于减少IO次数利于范围查询时间复杂度O(log n)B-树所有节点都有data最快一次命中索引ElasticSearch(8)适用场景OLAP全文搜索人类自然语言地理位置搜索和计算通常作为其他数据库的辅助(数据主要存储在其他数据库上)优势天生分布式扩容方便集群自动增删索引或节点强大的聚合和分析能力常见问题冲突问题重要的文档需要并发控制,通常使用version比对的乐观控制机制分页问题from越大,协调节点的整体排序越耗时原理倒排索引通常情况下,是对文档id建索引,要找到关键词所在的文档,需要将每个文档内容都检索一遍而倒排索引是根据关键词建索引,通过关键词直接查询到所在文档以及出现次数分布式检索分片查询阶段分别查询排序、再整体排序分片取回阶段取回完整文档并返回格式类型类json文档型使用方式Restful APIMongoDB(5)适用场景满足1个以上就可以使用,满足越多越适用无事务?需求在变?数据模型不确定?想快速迭代开发?需要2000或更高的QPS?需要TB甚至PB级别的数据存储?快速水平扩展?优势灵活文档类型高可用复制集可扩展分片集群性能极高复杂查询位置查询数据可冷热分离Redis适用场景缓存队列访问统计分布式session分布式锁优势快!纯内存访问数据类型丰富内存优化内存回收策略定时删除惰性删除内存优化缩短键值对象的长度共享对象池字符串优化控制键的数量原理分布式方案集群方案Redis Cluster集群内节点互相通讯支持16384个虚拟槽分区分片方案客户端分片一致性哈希算法中间件分片CodisProxy集群内节点无需相互通讯支持1024个虚拟槽分区TwemProxy数据持久化RDB快照方式恢复快持久化效率高存在数据丢失风险AOF实时追加日志方式实时安全持久化效率低HBase(23)适用场景建立在HDFS上通常由大数据部门维护快速随机读写大数据容量强一致性优势CAP中的CP强一致性和分区容错性Cassandra(11)适用场景轻松运维和扩容快速随机读写更像数据库通常由dba维护高并发读写写多读少为写吞吐做了优化大数据容量优势CAP中的AP可用性和分区容错性可配置为最终一致性对比HBase性能比HBase好,因为直接存取磁盘,而不是通过HDFS文件系统功能比HBase丰富,如CQL、类型Cassandra是无中心架构,没有单点故障线性扩容、运维简单可用率100%HBase是主从架构,主挂了需要重新选举灵活的数据存储结构化半结构化非结构化事务支持原子性一致性隔离持久性快速写入被设计成可在廉价机器上运行存储数百T数据,而不牺牲读取效率ScyllaDB(102)Cassandra的C++版本优势性能是Cassandra的十倍意味着成本也降低了十倍亚毫秒级劣势不稳定重启耗时超长,或启动失败https://www.zhihu.com/question/35956679/answer/418001368数据丢失风险Spark和FlinkSpark适用场景离线批处理简单机器学习优势批处理模拟流处理通过微批模拟内置机器学习库支持丰富的数据源劣势实时性不及Flink窗口支持不及Flink只支持处理时间不支持精确一次故障恢复会重复处理Flink适用场景实时流处理数据管道ETL事件驱动型应用优势实时流处理模拟批处理低延时高吞吐量容错和精确一次计算保证状态快照是异步获取和存储的发生故障时可通过状态快照恢复窗口方式滑动滚动会话窗口优势支持窗口种类多支持时间窗口支持消息数量窗口支持时间种类多事件时间产生这个消息的时间、或者消息的某某时间字段处理时间flink算子处理到这个消息的系统时间注入时间刚进入flink source的时间时间类型优势事件时间事件本身自带的时间能保证结果的准确性和一致性处理时间处理时引擎时钟的时间适合低延时,能容忍近似结果的流处理应用读取时间读取到事件时记录的时间事件时间和自由度极高的定制化窗口逻辑应用场景事件驱动型应用提供的支持有事件时间和自由度极高的定制化窗口逻辑内置ProcessFunction支持细粒度时间控制复杂事件处理库(CEP)savepoint一致性的状态印象完成一次savepoint后,可放心对应用升级或扩容还可启动多个版本进行a/b测试典型事件驱动型场景反欺诈异常检测基于规则的预警业务流程监控web应用数据分析应用类型流式分析批量分析方式提供统一的高级SQL语义也可做更低层的控制flink DataStream apiflink DataSet api典型数据分析场景电信网络质量监控消费者技术中的数据实时即席分析大规模图分析电信故障关联强度分析数据管道应用数据管道和ETL典型数据管道场景实时查询索引构建持续ETL

这篇关于思维导图:数据库选型决策的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000963

相关文章

如何突破底层思维方式的牢笼

我始终认为,牛人和普通人的根本区别在于思维方式的不同,而非知识多少、阅历多少。 在这个世界上总有一帮神一样的人物存在。就像读到的那句话:“人类就像是一条历史长河中的鱼,只有某几条鱼跳出河面,看到世界的法则,但是却无法改变,当那几条鱼中有跳上岸,进化了,改变河道流向,那样才能改变法则。”  最近一段时间一直在不断寻在内心的东西,同时也在不断的去反省和否定自己的一些思维模式,尝试重

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT

雨量传感器的分类和选型建议

物理原理分类 机械降雨量计(雨量桶):最早使用的降雨量传感器,通过漏斗收集雨水并记录。主要用于长期降雨统计,故障率较低。电容式降雨量传感器:基于两个电极之间的电容变化来计算降雨量。当降雨时,水滴堵住电极空间,改变电容值,从而计算降雨量。超声波式降雨量传感器:利用超声波的反射来计算降雨量。适用于大降雨量的场合。激光雷达式降雨量传感器:利用激光技术测量雨滴的速度、大小和形状等参数,并计算降雨量。主

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

SQL Server中,添加数据库到AlwaysOn高可用性组条件

1、将数据添加到AlwaysOn高可用性组,需要满足以下条件: 2、更多具体AlwaysOn设置,参考:https://msdn.microsoft.com/zh-cn/library/windows/apps/ff878487(v=sql.120).aspx 注:上述资源来自MSDN。

SQL Server中,用Restore DataBase把数据库还原到指定的路径

restore database 数据库名 from disk='备份文件路径' with move '数据库文件名' to '数据库文件放置路径', move '日志文件名' to '日志文件存放置路径' Go 如: restore database EaseWe from disk='H:\EaseWe.bak' with move 'Ease