分布式数据库:如何正确选择分片键?
分布式數(shù)據(jù)庫
:如何正確選擇分片鍵?
我們知道分布式數(shù)據(jù)庫是將數(shù)據(jù)打散到不同節(jié)點上存儲 ,從而提升性能與可靠性 。那么今天我們來看看在分布式數(shù)據(jù)庫中,一個非常重要的設計 :正確地把數(shù)據(jù)分片,充分發(fā)揮分布式數(shù)據(jù)庫架構的優(yōu)勢。
選出分片鍵
在對表中的數(shù)據(jù)進行分片時,首先要選出一個分片鍵(Shard Key) ,即用戶可以通過這個字段進行數(shù)據(jù)的水平拆分。
對于我們之前使用的電商業(yè)務的訂單表orders ,其表結構如下所示:
CREATE TABLE `orders` ( `O_ORDERKEY` int NOT NULL, `O_CUSTKEY` int NOT NULL, `O_ORDERSTATUS` char(1) NOT NULL, `O_TOTALPRICE` decimal(15,2) NOT NULL, `O_ORDERDATE` date NOT NULL, `O_ORDERPRIORITY` char(15) NOT NULL, `O_CLERK` char(15) NOT NULL, `O_SHIPPRIORITY` int NOT NULL, `O_COMMENT` varchar(79) NOT NULL, PRIMARY KEY (`O_ORDERKEY`), KEY `idx_custkey_orderdate` (`O_CUSTKEY`,`O_ORDERDATE`), KEY `ORDERS_FK1` (`O_CUSTKEY`), KEY `idx_custkey_orderdate_totalprice` (`O_CUSTKEY`,`O_ORDERDATE`,`O_TOTALPRICE`), KEY `idx_orderdate` (`O_ORDERDATE`), KEY `idx_orderstatus` (`O_ORDERSTATUS`), CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`O_CUSTKEY`) REFERENCES `customer` (`C_CUSTKEY`)) ENGINE=InnoDB對于類似淘寶