資料存放區方案評估標準RDBMS or KV,評估標準rdbms
作者:zhanhailiang 日期:2014-12-11
本文主要介紹常見的資料存放區方案及相應選型的評估標準的介紹。
Guideline:針對不同應用情境,針對性選擇儲存方式。
1. 資料存放區方案
SQL:
MySQL 5.5/5.6/MariaDB(對於Dev絕大多數情境下透明);Oracle|MS SQL暫不考慮;
NoSQL:
Memcached 1.4.21;Redis 2.8;MongoDB 2.6.6;Hbase 0.96/0.98;
2. 評估標準
RDBMS:(MySQL):
- 要求資料持久化儲存;使用者提交資料就不能丟失;
- 要求事務保證;
- 應用複雜,資料結構複雜,資料一致性要求高;
- 分布式實現時複雜度高,分庫分表代價較大。
- 適合需要嚴格事務保證的OLTP類系統和MIS類系統;
典型情境:
以電商網站為例,所有後端子系統(比如ERP,物流,財務,倉儲,人事,VIS等);網站核心資料存放區(比如使用者,商品,庫存,購物車,訂單);
KV(Memcache/Redis):
- 資料結構簡單;只是按照簡單的Key來查詢和update記錄;
- 資料不需要持久化儲存(persistent on disk), 是secondary data;一般不是使用者直接寫入;(比如由後端job產生,可以由應用實現雙寫)
- 不需要transaction事務支援;
- 可能有很高的QPS/TPS(for example, 10k+ query/transaction per second);
- 有非常高的響應速度要求(<1ms typically),以redis為例,同機房操作一般都是幾十微秒層級;
典型情境:
各類計數器;各類cache層(商品列表頁,各類配置資訊,商品描述資訊等);
Analytics Platform:
Hadoop:ETL;科學分析;GP:BI分析;各類報表;Hbase:線上系統;OLAP分析;DocDB:應用相對簡單,資料結構相對複雜,支援快速開發,非事務類處理的資訊處理系統。如知識問答、社區等;
3. 效能最佳化
已有系統碰到效能瓶頸時,最佳化次序依次為:
- 容量評估
- 效能最佳化(系統最佳化,代碼邏輯最佳化,SQL最佳化)
- 硬體升級(從低端硬體到高端硬體,從低端儲存到高端儲存)
- 垂直分割(按照不同的模組拆分資料庫)
- 水平分割(對某個模組,在系統裡面再也跑不動,就需要對該模組按照主鍵或者其他邏輯拆分)
附錄
開始嘗試使用github.com issues工具寫部落格,挺爽的!
對應github.com連結:#4