数据库架构设计——数据库选型
摘要
架构师在工作中经常会遇到数据库存储选型的问题,而市面上数据库产品众多,往往会无从下手,甚至有时候从业务开发到上线运维过程中会多次更换底层数据库,给整个研发中心带来不必要的额外工作。结合业务场景做数据库存储选型的时候,可以综合以下几个维度去考虑:
一、技术选型维度
1.1 业务是否需要保证ACID事务?
事务具有4个特征,分别是原子性、一致性、隔离性和持久性
需要ACID | MySQL、pg(PostgreSQL)等 |
不需要ACID | MongoDB、hbase、cassandra等 |
1.2 要求低延迟
对性能要求极致,不担心数据丢失的选择 | memcache |
数据生命周期短,数据量相对小,性能要求高,需要存储灵活的数据结构: | Redis |
一般scylladb>canssdra>hbase |
1.3 是否高并发写入,随机读多于范围读?
需要支持高并发写入,随机读多于范围读? | hbase、cassandra,hbase范围读更优。 |
1.4 海量数据存储,支持水平扩展,分布式容错?
需要支持海量数据存储,支持水平扩展,分布式容错 | NOSQL 如:resis、hbase、Cassandra、mongodb |
1.5 需要全文搜索?
支持全文搜索 | 海量数据用Elasticsearch |
支持全文搜索 | 数据量可控用pg GIST索引。 |
1.6 存储复杂数据模型?
支持存储复杂数据模型 | 文档数据库mongodb |
1.7 OLTP OR OLAP OR离线分析?
OLTP(联机事务处理) | 行存数据库 mysql 、pg |
OLAP(联机分析处理) | 列存数据库高压缩 gp 、clickhouse |
离线分析 | :hbase |
1.8 金融级要求高可用、数据不丢
支持数据不丢 | oceanbase、阿里云mysql金融版、mysql group replication |
1.9 需要事务而且海量数据存储
分库分表 | drds、sharding-jdbc+关系型数据库 |
newsql | TiDB |
1.10 CAP权衡
CAP: 一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。
保证CA | 关系型数据库 |
保证CP | hbase、redis、mongodb |
保证AP | cassandra、riak 、couchdb |
1.11 特殊业务场景
地理信息系统GIS | PG>ES>Mongodb |
时序 | TaosDB>influxdb>opentsdb |
1.12 开发角度,业务迭代快,需要schema free
对开发友好:关系型数据库都行。另外就是MongoDB,不过也有两面性,不如关系型数据库有严格的约束,将任意类型的任意值插入任意集合,有时候会带来负面作用。
1.13 运维角度
易运维 | cassandra>hbase |
数据库架构设计——数据库选型相关推荐
- 数据库架构设计——分布式数据库设计
摘要 现在互联网应用已经普及,数据量不断增大.对淘宝.美团.百度等互联网业务来说,传统单实例数据库很难支撑其性能和存储的要求,所以分布式架构得到了很大发展.一定要认识到数据库技术正在经历一场较大的变革 ...
- 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。
淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 文章目录 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 本文导读 1.分库分表 2.数据冗余 3.异步复制 4.读 ...
- mysql双主架构沈剑_58 沈剑 - 数据库架构师做什么-58同城数据库架构设计思路
1.数据库架构师做什么? 58同城数据库架构设计思路 技术中心-沈剑 shenjian@58.com 2.关亍我-@58沈剑 • 前百度高级工程师 • 58同城技术委员会主席,高级架构师 • 58同城 ...
- 云盘数据库设计mysql_一份最实用的云数据库架构设计与实践指南(内含PPT)
原标题:一份最实用的云数据库架构设计与实践指南(内含PPT) Tips:点击文末[阅读原文]或登陆云盘:http://pan.baidu.com/s/1bo9Ni7l 即可下载5月21日DBAplus ...
- mysql云架构设计_MySQL云数据库架构设计实践 洪斌@爱可生
1. 8 MySQL云数据库架构设计实践 1 0 2 C C T D 洪斌 2. 关于我 洪斌 南区负责人 2010年加入爱可生至今 0 2 C C T D 8 1 上海爱可生致力于为行业客户提供开源 ...
- 典型数据库架构设计与实践 | 架构师之路
转载自微信公众号[架构师之路] 本文,将介绍数据库架构设计中的一些基本概念,常见问题以及对应解决方案,为了便于读者理解,将以"用户中心"数据库为例,讲解数据库架构设计的常见玩法. ...
- 数据库架构设计与优化
数据库架构设计与优化 导航: 数据库架构设计与优化 一. 影响数据库性能的原因 1.1 影响数据库的因素 1.2 影响MYSQL性能的因素有哪些? 1.3 事务 二. 什么影响了MYSQL性能 2.1 ...
- 大数据、分布式、中台、云原生数据库架构设计与实践 | DAMS 2020
5年前,大数据浪潮的来袭唤起了国内企业对数据作为核心资产的新认知,为了推动国内数据管理加速发展,DAMS中国数据智能管理峰会携手产学研各界权威力量开启了对企业数字化转型的探索与助力. 5年后,我们看到 ...
- 数据库架构设计——表结构设计
摘要 如何打造出一个能支撑海量的并发访问的分布式 MySQL 架构,本系列博文将从一下多个方面来分析有关MYSQL系统的架构设计相关原理.实际的业务为案例分析,分析实际业务中表使用的字段类型是如何选型 ...
最新文章
- NEO智能合约反编译工具
- ExtJS之对话框及窗口篇
- POJ3687拓扑排序+贪心
- matlab矩阵分解
- 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS
- Servlet学习笔记(七)—— 自己定义过滤器的编写改进:自己定义实现FilterChain...
- SESSION存储于redis(CI3)
- 错误:”未能加载文件或程序集“System.Web.Mvc, Version=2.0.0.0” 解决方法
- SAP ABAP CI/CD持续集成,持续交付解决方案
- 移动架构-数据库分库和全版本升级
- Restful API 设计
- VS.NET(C#)--1.4项目与解决方案
- 面对 ESM,webpack 还有还手之力吗?
- leetcode-680-Valid Palindrome II
- 深入理解Java8 Lambda表达式
- 第十五周项目3-在OJ上玩指针
- xsd文件规则和语法
- 苹果cms主题模板M3.1版本 苹果CMSv10自适应主题
- 谷歌插件--SuperCopy(解决网页中文字不可复制的问题)
- matlab曼德勃罗集,YaK与您一起欣赏BBC纪录片:''''神秘的混沌理论''''