終於要準備介紹db的主要強項Query了。
在介紹Query前,要先了解你想達成的目標,
再透過目標的特性選擇適合的工具與方法,
因此,我們必須先了解什麼是OLTP,OLAP,HTAP所解決的問題,
下次遇到比較特別的Query方法時,就可以依照需求一一克服!
優先考慮資料寫入操作
重點在於read和write會在同一table上處理tx,
並且強調強一致性的事務,
做write操作時會加上lock等機制,犧牲了部分讀寫效能。
資料讀取操作優先於資料寫入操作
重點在於query的table基本上不需要處理tx或write的操作,
而是透過同步或cronjob方式建立資料,以供查詢,
因不是透過tx來做處理,所以必須接受資料軟狀態。
又因write操作已經不是在同一張table上了,
所以query時必須容忍write操作同步到query table的時間差
以上方案將會在後面的單元介紹,與簡單實做,
但僅僅點到為止,因為這些CRUD難的不是建立環境與架構,
而是那些架構所帶來的優缺點與解決方案與帶來的問題,
才是CRUD仔該克服的項目,將會在下集介紹
基本上這些DB都會符合一個特性就是可以具scalability,
其實就是分散式DB,
寫時使用其中一個DB,讀時使用其他DB,所以符合OLAP。
而如果要維持強一致性,在同一個DB讀寫,達到讀己所寫的效果,也可設定,所以也符合OLTP。
其實我們可以當作是一種架構的演進:
Citus將會再後續單元介紹。
這裡一個不小心埋了太多坑QQ
不過沒有關西,大家先有基本的認識或知道是什麼東西,目的是什麼就可以了。
主要希望提醒大家,不要再拿OLAP該做的事情,放到OLTP的系統中硬生生地使用。
因為實在太多案例,
如資料科學家希望使用到大量資料,query時會特別慢。
而DBA就叫資料科學家不要這樣query等等,因此大吵一架。
這時其實可以建議DBA做個簡單的讀寫分離,
特別留一個READ的db拿來做資料分析,一天又和平的落幕了。