PostgreSQL - citus從入門到放棄,不是標題黨

不知道這樣的標題會不會被微軟警告,最近,微軟收購了 ? 年曆史的 CitusData 公司,而我這裏卻要說Citus的不好?其實不是的,Citus確實有它適合的場景,但是,就像之前文章提到的,它也有不適合的場景,而我平時工作的很多需求就在不適合的場景之列。

這裏咱們複習一下Citus是什麼?主要做什麼?適合做什麼,不適合做什麼?

Citus是什麼?主要做什麼?

Citus是PostgreSQL的一個插件,通過citus,你可以讓多個PostgreSQL機器組成一個集羣,利用這個集羣,你可以將一張大數據量的表自動水平分表,而無需擔心分配的邏輯。具體citus可以做如下的事情:

  • 自動分片和分佈數據。你可以選擇一個列,citus依據這個列將大數據表進行分片(sharding),然後將各個分片分配到各個worker節點;
  • 可以實現數據高可用。通過設置"citus.shard_replication_factor"控制每個分片的副本數量,每個分片的副本會被分配到不同的機器,如果包含該分片副本的某個機器宕機,數據還是查詢的到,除非所有包含該副本的機器全部宕機,數據纔會不可用。

而且查詢來了,citus也會對查詢進行處理:

  • 自動分割任務。如果查詢是針對的某條記錄,citus會根據分佈數據時記錄的元數據,只到相應的分片(sharding)去查詢,那麼查詢的數據量就降下來了,查詢速度會快很多;
  • 並行查詢。如果查詢是針對表的大多數記錄或者全部記錄時,

Citus適合做什麼

Citus適合做單表查詢,且該單表數據量越大,Citus的優勢就越明顯。

Citus不適合做什麼

Citus集羣相對於單機PostgreSQL,對SQL有一些支持不完善的地方。

  • 對regregate函數支持不好,要求必須可以分解。實際上PostGIS中很多聚集函數都不支持,例如ST_ClusterWithin,st_extent;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章