使用PostgreSQL作為資料倉儲 - narrator

banq發表於2021-05-15

在人工智慧公司Narrator支援許多資料倉儲,包括Postgres。儘管它是為生產系統而設計的,但稍作調整後,Postgres可以非常好地用作資料倉儲。  
總結:
  • 不要使用與生產系統相同的伺服器
  • 升級到pg 12+(或在查詢中避免使用通用表表示式)
  • 去容易對指標-少即是多
  • 考慮分割槽長表
  • 確保您不受I / O約束
  • 批次插入後進行真空分析
  • 探索並行查詢
  • 增加統計抽樣
  • 在經常查詢的表上使用較少的列
  • 大規模考慮專門的倉庫

 

資料倉儲和關聯式資料庫之間的差異

  • 生產查詢OLTP

典型的生產資料庫查詢從潛在的大型資料集中選擇幾行。他們旨在快速回答許多這類問題。
想象一下一個Web應用程式–一次可能有成千上萬的使用者正在查詢:

select * from users where id = 1234

資料庫將被調整為快速(在毫秒內)處理大量此類請求。
為了支援這一點,大多數資料庫(包括Postgres)都按行儲存資料–這樣可以有效地從磁碟載入整個行。他們經常使用索引來快速找到相對較少的行。
  • 分析查詢OLAP

分析查詢通常相反:
  • 查詢將處理許多行(通常佔整個表的很大一部分)
  • 查詢可能需要幾秒鐘到幾分鐘才能完成
  • 查詢將從一個寬(多列)表中的少數列中進行選擇

因此,專用的資料倉儲(如Redshift,BigQuery和Snowflake)使用面向列的儲存,並且沒有索引。
 

這對Po​​stgres意味著什麼
儘管Postgres是面向行的,但它也可以輕鬆地用於分析查詢。它只需要一些調整和一些測量。儘管Postgres是一個不錯的選擇,但請記住,從長遠來看,像Snowflake這樣的基於雲的倉庫將更易於管理和維護。
溫馨提示:請勿將生產中Postgres例項同時用於資料包告/指標。可以進行一些查詢,但是分析的工作負載與典型的生產工作負載相差甚遠,以至於它們會對生產系統產生相當大的效能影響。

詳細點選標題

相關文章