天天看點

【重新發現PostgreSQL之美】- 47 為什麼腦容量更大的尼安德特人會被現代智人消滅?

背景

尼安德特人的顱腔很大,這意味着它們有一個大的腦子,甚至比現代人還要大,尼人的腦容量為1200-1750立方厘米,而現代人為1100-1600立方厘米,這說明尼人同樣具有非凡的才智。

尼安德特人滅絕時間與現代智人遷徙時間完全吻合.

為什麼腦容量更大的尼安德特人會被現代智人消滅?

我們知道一個人的密集社交圈是有上限的, 大概是150. 超過就很難維持親密關系. 是以尼安德特人的部落大概人數就是150人.

尼安德特人的腦雖然比智人更大,但負責抽象思維和語言表達的空間比智人小,是以他們在文化藝術方面的表現遜于智人。

智人的想象力更強, 更早的發明了語言代替梳毛, 協作群體突破鄧巴數150. 形成了更大的可協作群體.

https://baike.baidu.com/tashuo/browse/content?id=7a42871d48eeddfd79e93fe1&lemmaId=3348172&fromLemmaModule=pcBottom

資料庫也一樣, 在不同的場合需要的功能也是不一樣的, 例如全文檢索要的是分詞和反向索引, 空間搜尋要的是空間索引. 高并發的點查要的是行存儲, 而大範圍的分析要的是列存儲和并行計算. 并不是說某個功能做到世界第一這個資料庫就一定是最受使用者歡迎的.

視訊回放:

https://www.bilibili.com/video/BV1Hq4y1p7Ai/

場景:

在不同的場合需要的功能也是不一樣的, 例如全文檢索要的是分詞和反向索引, 空間搜尋要的是空間索引, 圖式關系查詢需要遞歸. 高并發的點查要的是行存儲, 而大範圍的分析要的是列存儲和并行計算.

挑戰:

大多數的資料庫都隻做單項冠軍, 綜合能力差.

PG解決方案:

table access method, 可擴充的資料存儲結構.

  • 列存儲, 解決大範圍的分析導緻的IO和計算瓶頸.
  • lsmtree, 解決高速寫入時索引更新增加RT導緻的寫入吞吐瓶頸.
  • heap, 解決高速寫入, 高并發查詢OLTP業務的性能問題.
  • zedstore 行列混合存儲, 解決OLTP OLAP混合場景性能問題.
  • zheap undo多版本控制, 解決高頻率更新導緻的膨脹問題.
  • 索引組織表, 解決PKV搜尋IO多跳瓶頸.

index access method, 可擴充的索引存儲結構.

  • btree
  • hash, 解決大字段點查,btree的空間占用瓶頸或大字段超出btree page1/3的錯誤問題
  • bitmap, 基于标簽的少量條件大量記錄聚合查詢的精準營銷場景性能問題
  • GIN, 提高數組元素搜尋、JSON元素搜尋、全文檢索、模糊查詢性能.
  • SP_GIST、GIST, 提高空間搜尋、range搜尋、JSON查詢性能.
  • BRIN, 時序資料索引, 解決引入的索引空間占用大, RT增加的性能問題
  • BLOOM, 解決分析場景, 任意字段搜尋時的索引空間占用大, RT增加的性能問題

如果以上表或索引的存儲結構還不能滿足你的需求, PG還能自定義的表和索引接口

使用PG可以因時因地置宜的選擇最好的存儲結構、索引結構.

https://github.com/digoal/blog/blob/master/202107/20210728_04.md#postgresql-%E8%AE%B8%E6%84%BF%E9%93%BE%E6%8E%A5 https://github.com/digoal/blog/issues/76