震精-資料庫還能這樣玩-三十六計(中)
PostgreSQL 三十六計 – 中
13. 金融風控、公安刑偵、社會關係、人脈分析 等業務場景,高效實現圖式資料搜尋。
利用PostgreSQL函式程式設計,非同步訊息,複雜JOIN等手段,解決高效的圖式資料查詢需求。
1. 獵頭挖人
作為IT人士或者獵頭、HR,對Linkedin一定不陌生,領英網實際上就是一個維護人際關係的網站。
通過搜尋你的一度人脈,可以找到與你直接相關的人,搜尋2度人脈,可以搜尋到與你間接相關的人。
當然你還可以繼續搜尋N度人脈,不過那些和你可能就不那麼相關了。
如果你知道和美女范冰冰隔了幾度人脈,是不是有點心動了呢?
其實在古代,就有這種社會關係學,還有這種專門的職業,買官賣官什麼的,其實都是人脈關係網。看過紅樓夢的話,你會發現那家子人怎麼那麼多親戚呢?
2. 公安破案
公安刑偵學也是一類人脈相關的應用,只是現在的關係和行為越來越複雜,這種關係也越來越複雜,原來的人能接觸的範圍基本上就靠2條腿,頂多加匹馬。
現在,手機,電腦,ATM機,超時,攝像頭,汽車等等,都通過公路網、網際網路連線在一起。
一個人的行為,產生的關係會更加的複雜,單靠人肉的關係分析,刑偵難度變得越來越複雜。
3. 金融風控
比如銀行在稽核貸款資格時,通常需要稽核申請人是否有償還能力,是否有虛假訊息,行為習慣,資產,朋友圈等等。 同樣涉及到複雜的人物關係,人的行為關係分析等等。
此類圍繞人為中心,事件為關係牽連的業務催生了圖資料庫的誕生。
目前比較流行的圖資料庫比如neo4j,某些圖資料庫在資料量超過記憶體大小時,效能下降會非常嚴重。
PostgreSQL是一個功能全面的資料庫,其中就有一些圖資料庫產品的後臺是使用PostgreSQL的,例如OpenCog, Cayley等。
除了這些圖資料庫產品,PostgreSQL本身在關係查詢,關係管理方面也非常的成熟,十億量級的關係網資料,3層關係運算僅需毫秒。
還可以用於運算人與人之間的最短關係,窮舉關係等。
主要用到的技術plpgsql服務端程式設計、非同步訊息、陣列、遊標、pgrouting路由演算法等。
14. with recursive遞迴查詢有妙用。
大量資料的求差集、最新資料搜尋, 最新日誌資料與全量資料的差異比對, 遞迴收斂掃描,提升數百倍效能。
15. 資料一致性分享、資料泵
在IoT的場景中,有流式分析的需求,也有儲存歷史資料的需求,同時還有資料探勘的需求,搜尋引擎可能也需要同一份資料,還有一些業務可能也要用到同一份資料。
但是如果把資料統統放到一個地方,這麼多的業務,它們有的要求實時處理,有的要求批量處理,有的可能需要實時的更新資料,有的可能要對大資料進行分析。
10萬級別左右的機器,PostgreSQL 的資料吞吐量可以達到100萬條/s以上,同時資料庫本身具備了嚴格的可靠性和一致性保證。
PostgreSQL為分享資料提供了插槽的概念,每個插槽對應一個目標端,支援斷點續傳,支援多個目標端。用於流式的分享資料是非常好的選擇。
16. ad lock解決高併發更新少量記錄的秒殺問題
秒殺在商品交易中是一個永恆的話題,從雙十一,到一票難求,比的僅僅是手快嗎?
其實對於交易平臺來說,面對的不僅僅是人肉,還有很多指令碼,外掛自動化的搶購系統,壓力可想而知。
秒殺的優化手段很多,就拿資料庫來說,有用排隊機制的,有用非同步訊息的,有用交易合併的。
PostgreSQL提供了一種更極端的秒殺應對方法,裸秒。可以讓使用者盡情的釋放激情,以一臺32核64執行緒的機器為例,每秒可以獲取、探測約130萬次的ad lock。
試想一下,對單條記錄的秒殺操作,達到了單機100萬/s的處理能力後,秒殺算什麼?100臺機器就能處理1億/s的秒殺請求。
17. PostgreSQL 使用bitpack支援實時使用者畫像
使用者畫像在市場營銷的應用重建中非常常見,已經不是什麼新鮮的東西,比較流行的解決方案是給使用者貼標籤,根據標籤的組合,圈出需要的使用者。
通常畫像系統會用到寬表,以及分散式的系統。
寬表的作用是儲存標籤,例如每列代表一個標籤,但是通常資料庫到2000個列基本就是極限了,上萬TAG的話,只能使用多表JOIN來實現,效率較差。
另一方面,使用寬表(甚至列儲存),標籤的篩選效能也比較差(無法達到實時級別)。
以PostgreSQL資料庫為基礎,以BIT來儲存使用者,每行一個TAG的方式,單機支援十萬億user tags體量,毫秒級實時圈人。
18. 路徑動態規劃,助力物流配送、叫車軟體、導航軟體、出行軟體、高速、高鐵等業務場景
物流行業是被電子商務催生的產業之一。
快件的配送和攬件的排程演算法是物流行業一個非常重要的課題,直接關係到配送或攬件的時效,以及物流公司的運作成本。
好的演算法,可以提高時效,降低成本,甚至可以更好的調動社會資源,就像滴滴叫車一樣,也許能全民參與哦。
以後也許上班路途還能順路提供快遞服務呢。
以物流行業為例,PostgreSQL為物流行業應用提供了包括機器學習(madlib)、路徑規劃(pgrouting)、地理位置資訊儲存和處理等基礎服務。
19. 金融級可靠性,事務級可控多副本。
傳統的金融行業高度依賴共享儲存來解決資料庫的高可用,資料0丟失以及異地容災的場景。
共享儲存的解決方案價格昂貴,對廠商的依賴較大。
PostgreSQL基於同步流複製的任意副本解決方案,在解決0丟失,高可用以及容災的問題的同時,還可以提供只讀的功能。相比傳統的儲存解決方案,優勢更加明顯。
允許使用者根據事務的可靠性要求,設定事務所需的副本數。
20. 塊級瘦索引,解決物聯網、金融、日誌、行為軌跡類資料快速匯入與高效查詢的矛盾
在物聯網、金融、日誌型別場景中,資料持續不斷的產生,對於堆儲存來說,有線性相關的特點。
例如,時間欄位往往和物理儲存的順序具有線性相關性。
例如,有一些自增欄位,也和堆儲存的物理順序線性相關。
對與物理儲存線性相關的欄位(時間,自增欄位),PostgreSQL提供了一種BRIN塊級範圍索引,索引中儲存了對應資料塊中的欄位統計資訊(例如最大值,最小值,平均值,記錄數、SUM,空值個數等)
這種索引很小,因為索引的粒度是連續的塊,而不是每條記錄。
通常比BTREE索引小几百倍。
如果欄位的線性相關性很好,進行範圍查詢或者精確檢索時,效率非常高。
對於統計查詢,也可以使用BRIN索引,提高分析統計的效率。
21. 時序資料有失真壓縮
在物聯網、金融、FEED等場景中,往往有大批量的指標資料產生並進入資料庫,通常包含 時間、值 兩個欄位。
這些資料由於量非常龐大,而且就像音訊一樣,實際上是可以對其進行有損的壓縮儲存的。
最為流行的是旋轉門的壓縮演算法,在PostgreSQL中可以使用UDF,方便的實現這個功能。
從而實現流式時序資料的有失真壓縮,例如在UDF中使用旋轉門壓縮演算法,壓縮時序資料。
22. 準確詮釋資料型別,基因工程
PostgreSQL憑藉良好的擴充套件性,不僅僅是一個資料庫,同時也是具備非常強大的資料處理能力的資料平臺。
很多垂直行業的使用者拿它來做各種和業務貼合非常緊密的事情。
例如PostgreSQL在生命科學領域的應用案例 – 基因工程。
通常的思維可能是這樣的,把資料存在資料庫,需要運算的時候,再把資料取出進行運算(例如配對),需要花費非常多的網路傳輸時間。
PostgreSQL提供了基因工程相關的資料型別,操作型別,索引。滿足基因工程業務的需求。
使用者可以直接在資料庫中對基因資料進行處理。
23. 準確詮釋資料型別,化學分子
RDKit是PostgreSQL的化學外掛,支援化學資料型別的高效率存取,檢索,索引。以及操作符,例如化學成分的分解,合成。
對於一個資料庫來說,支援一個資料型別,首先需要支援資料型別的INPUT和OUTPUT,然後還要支援索引高效率的檢索這種型別的資料,需要支援足夠多的OP滿足業務的需求,支援UDF處理對應的資料型別。
如果沒有準確的詮釋,只能儲存為二進位制位元組流,或者字串,運算、檢索、操作、函式處理都不可能。
24. 資料預測、挖掘
PostgreSQL、以及ApsaraDB HybridDB(基於GPDB),等PostgreSQL相關的資料庫,都支援MADlib機器學習庫,這個庫支援機器學習領域常見的演算法(例如聚類、線性迴歸、貝葉斯、文字處理等等)
其中在資料領域用得較多的資料預測,可以使用MADLib的多元迴歸庫,進行對資料的預測。
結合plR語言 或者R + pivotalR 、 python + pythonR外掛,可以自動將Rpython語言的命令轉換為MADlib庫函式,對資料進行分析。
非常適合使用R或者python對資料進行分析的資料科學家使用。
其特點是高效(資料與運算一體,可以使用LLVM向量計算等技術優化,同時不需要傳播資料,節約了傳播的開銷)、易用(支援常見的SQL、r, python等程式設計)。
相關文章
- postMessage 還能這樣玩
- 震驚--Nginx的map指令還能這樣用Nginx
- JavaScript 事件迴圈竟還能這樣玩!JavaScript事件
- 人工智慧下的音訊還能這樣玩!!!!人工智慧音訊
- Java 11 已釋出,String 還能這樣玩!Java
- 這樣也能連線資料庫[zt]資料庫
- Java11已釋出,String還能這樣玩!Java
- iOS 通知還能這麼玩?iOS
- iOS AutoLayout還可以這樣玩iOS
- 原來CSS中的border還可以這樣玩CSS
- CSS 還能這樣玩?奇思妙想漸變的藝術CSS
- Android沉浸式狀態列還能這樣玩—教你玩出新花樣Android
- Java“微服務”還能這麼玩!Java微服務
- 郵件告警還能這麼玩?!
- 震驚! 滑動驗證碼竟然能這樣破解
- Python 中的變數還能這樣理解(白話)Python變數
- 微信和Python之間,還能這樣玩的嘛,漲見識了!Python
- 還能這樣玩?Go 將會增強 Go1 向前相容性Go
- 雙十二來了,你的表格可以這樣玩!這個工具還能提升Excel的效能Excel
- 表中明明沒有這條資料,竟然還能查出來?
- 居然還能這樣——程式設計師加薪的新方法程式設計師
- 換個角度,智慧硬體也能這樣玩
- 金融資料分析還能這樣做?快試試這個BI工具小白也能學會!
- 微信和Python之間,還能這樣玩,你所不知道的騷操作!Python
- 作畫、寫詩、彈曲子,AI還能這麼玩?AI
- 打破你的認知!Java空指標居然還能這樣玩,90%人不知道…Java指標
- Android 仿知乎創意廣告 廣告還能這麼玩?Android
- 從資料庫中拿資料庫總是拿到上一條資料,還能拿到刪除的表的資料資料庫
- 培養幹細胞,原來還能這樣操作
- 原來結構體函式還能這樣用結構體函式
- [譯] 震驚,還可以用這種姿勢學習程式設計程式設計
- 特效材質還可以這樣玩!?3D畫素教程特效3D
- 漲知識!華為備忘錄還能這樣玩,難怪古人說"好記性不如爛筆頭"
- 用資料庫指令碼重建了資料庫,導致資料丟失,還能找回來麼?資料庫指令碼
- SCVNGR遊戲開發“三十六計”(全) - [資料收集]遊戲開發
- 一次打包引發的思考,原來maven還能這麼玩?Maven
- 我們需要更多資料還是精確資料?
- 陪玩系統原始碼中mysql資料庫備份還原的實現程式碼原始碼MySql資料庫