生活随笔
收集整理的這篇文章主要介紹了
数据库架构设计——数据库选型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要
架構師在工作中經常會遇到數據庫存儲選型的問題,而市面上數據庫產品眾多,往往會無從下手,甚至有時候從業務開發到上線運維過程中會多次更換底層數據庫,給整個研發中心帶來不必要的額外工作。結合業務場景做數據庫存儲選型的時候,可以綜合以下幾個維度去考慮:
一、技術選型維度
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 存儲復雜數據模型?
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 運維角度
?
總結
以上是生活随笔為你收集整理的数据库架构设计——数据库选型的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。