首页 > 数据库 >数据库架构设计——数据库选型

数据库架构设计——数据库选型

时间:2023-02-09 14:36:05浏览次数:42  
标签:架构设计 存储 海量 数据库 支持 选型 hbase


摘要

架构师在工作中经常会遇到数据库存储选型的问题,而市面上数据库产品众多,往往会无从下手,甚至有时候从业务开发到上线运维过程中会多次更换底层数据库,给整个研发中心带来不必要的额外工作。结合业务场景做数据库存储选型的时候,可以综合以下几个维度去考虑:

一、技术选型维度

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

 

标签:架构设计,存储,海量,数据库,支持,选型,hbase
From: https://blog.51cto.com/u_13643065/6046966

相关文章

  • 分布式数据库设计——超大规模数据存储
    摘要随着互联网时代,特别是移动互联网的到来,形形色色的企业都在将自己的系统平台快速升级迭代,以此作为向互联网转型的一部分。在此背景下,这类应用平台所依赖的数据库系统就需......
  • 分布式数据库设计——数据复制方案设计
    摘要分片技术,它主要的目的是提高数据容量和性能。复制的主要目的是在几个不同的数据库节点上保留相同数据的副本,从而提供一种数据冗余。这份冗余的数据可以提高数据查询性能......
  • flask web 项目5 连接数据库
    连接数据库pymysql、Flask_sqlalchemy #在app.config中设置好连接数据库的信息#然后使用SQLAlchemy(app)创建一个db对象#SQLAlchemy会自动读取app.config中连接数据......
  • Python爬虫爬取html中div下的多个class标签并存入数据库
    使用python爬虫爬取html页面div中的多个class标签,获取后将数据存成列表,然后存入数据库importmysql.connectorimportpymysqlimportrequestsfrombs4importBeautif......
  • delphi "数据库有数据,设计时也有数据,但是运行时没有数据"
    今天遇到个问题,设计时,[审核人]字段是有数据的 数据库里的[审核人]字段也是有数据的   但是偏偏运行时没有数据  首先排除字段绑定问题,因为设计阶......
  • 数据库事务
    什么是事务?转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:1.将A账户的......
  • 主流数据库产品高可用性对比
    1.openGauss主备HA主备复制采用WAL日志复制技术,支持级联备库,目前支持一主八备规模,支持同步复制、异步复制,支持最大可用模式,支持switchover、failover操作。Switchover:主......
  • mysql数据库修改密码的几种方法
    目录MYSQL修改用户密码updatesetgrantmysqladmin在日常使用mysql数据库的时候,我们有修改mysql数据库密码的需求。以下介绍四种修改mysql数据库密码的方法。MYSQL修改用......
  • Mybatis数据库批量操作
     1:新增首先,Mysql插入一条记录返回主键对Mybatis版本要求低,而批量插入返回带主键的,需要升级到3.3.1以及以上的版本。 ​1.1:Mysql上图需要注意加入useGenerate......
  • Avalonia中使用EF增删改查DM数据库
    达梦客户端下载地址选择X86平台#下载文件dm8_20220714_x86_win_64_ent.zipdocker方式安装数据库服务dm-docker安装大小写问题#下载文件dm8_20220822_rev166351_......