从天津滨海新区大爆炸、危化品监管聊聊 IT人背负的社会责任感
標簽
PostgreSQL , 天津濱海新區大爆炸 , 危險品 , ?;繁O管 , RDKit , 化學插件 , 社會關系分析 , 毒品分析 , 化學反應 , 機器學習 , 地理位置 , PostGIS
背景
緣分所致,前幾天與一些來自ING行業的企業做了一次深入的交流,有感而發,寫下本文。
其實技術和業務相互依賴,相互推動著各自的發展。哪一個發明不是從自嗨開始的呢,作為IT人不應該故步自封,敞開胸懷,承擔更多的社會責任,一起來推動社會變革吧。
天津濱海大爆炸只是?;肥鹿实钠渲兄?#xff0c;看看事故后的一片狼藉,危化品一旦發生事故,破壞力非常的驚人。
?;返姆N類繁多。包括如常見的易爆、易燃、放射、腐蝕、劇毒、等等。
由于?;返奈:O大,所以監管顯得尤為重要,那么作為IT人,一起來思考一下,能利用哪些技術手段來幫助相關部門對?;返谋O管呢?
如何做到風險可控
要做到風險的可控,需要從?;返纳a源頭、銷售、倉促、運輸、消耗、應急響應等環節入手,形成一個閉環的管理。
生產環節
傳統的手段,除了例行的設備檢查、監督、排放檢查;頒發生產許可等。其實沒有太多的監管手段。
你總不能每個工廠安排幾號公務員連續24小時輪崗監管吧,而且很容易被利益熏心,最后估計也達不到監管效果。
隨著物聯網的發展,生成的設備本身,生成的過程,都有很多的指標,而且這些指標可以被實時的監控。
這些監控的數據實時的傳送到云端或者本地建立的流處理平臺,一旦指標異常,可以立即觸發定義好的響應機制。
比如生產危化品的鍋爐里面,可能就有成千上萬的傳感器,每個傳感器根據監控指標的敏感度,例如每隔幾十毫秒上報一次采集的數據。
假設某個傳感器上傳的 溫度、液位 或其他什么指標異常,會造成安全隱患的話,根據定義好的規則觸發應急機制(例如減少加煤量,或者結合其他的傳感器指標觸發應急機制,等等)
由于傳感器的數量很多(一個工廠通常上萬或者上百萬的傳感器),傳感器上傳數據的頻率高,上傳的數據關聯度高、數據類型繁多(如數字,文本,位置,甚至有聲波、圖感等),所以對流處理產品的要求也非常高。
pipelineDB是一個非常優秀的開源流處理數據庫產品,具有開發效率高,處理高效,功能豐富,擴展能力強,支持的數據類型多,檢索效率高,生態完整諸多的優勢。
細節可以參考如下文章,內有詳細的用法和場景DEMO。
《流計算風云再起 - PostgreSQL攜PipelineDB力挺IoT》
小結一下,將各個原來人工監控的環節數字化,使用 傳感器、流計算、規則(可以設置為動態的規則) 代替人的監管和經驗。
銷售環節
通常?;返纳伞⒅虚g商、以及最終的用戶圈子是很小的,同時由于?;返奈:Υ?#xff0c;容易被不法分子利用。
銷售環節的監管非常重要,可以發現虛假銷售(如騙銀行貸款、騙保險的)、發掘不法分子。
例如
1. 發掘不法分子:
涉及到買賣雙方的背景調查(社會關系學分析),例如不法分子找到一位遠房親戚,代為購買。
通過社會關系學分析,可以找到不法分子,從而降低犯罪率,降低社會危害。
關于社會關系學分析的IT系統構建詳情,可以參考如下文章,在很多場景可以使用
《金融風控、公安刑偵、社會關系、人脈分析等需求分析與數據庫實現 - PostgreSQL圖數據庫場景應用》
2. 虛假交易,騙保、騙貸
訂單生成后的貨物運輸的跟蹤,涉及到貨物、貨車的位置跟蹤。
這一塊除了要用到普通的數據庫功能,還需要用到對地理位置信息處理的數據庫能力,可以使用PostgreSQL的PostGIS插件,這個插件在軍方、民用、科研都有著極為廣泛的應用,也是OSGeo開源組織的默認數據庫組件。
有兩篇文檔可以參考一下
《PostGIS 在 O2O應用中的優勢》
《PostgreSQL 百億地理位置數據 近鄰查詢性能》
http://www.osgeo.org/
http://postgis.net/
小結一下,利用社會關系分析,在銷售環節挖掘不法分子。利用地理位置跟蹤,掌控整個交易的貨物運輸過程。
倉儲環節
?;返奈:Υ?#xff0c;在生產、存儲、運輸、消耗的環節都需要監控。
特別是倉儲,量大,一旦發生事故,危害更大(就比如天津的爆炸事件)。
同樣需要用到傳感器,監控貨物存儲的關鍵指標、位置、屬性、化學反應、應急機制、等。
注意這里引入了對?;繁旧淼膶傩缘谋O管,包括它會和什么發生化學反應,需要什么樣的應急機制。
正如我們購買的很多化工產品,后面可能都會溫馨提示,如不慎進入眼睛、不慎喝下,需要怎么處理。
?;穫}儲需要哪些手段進行監管呢?
1. 傳感器、流計算、(流規則)應急響應機制
2. 危化品本身的成分存儲,會與哪些物質發生化學反應
這里可以用到PostgreSQL的化學插件,它可以存儲化學分子式數據,同時不同的化學分子式的化學反應后的合成物等。
例如我們可以使用PG的排他約束,利用技術手段,做到對一些會發生化學反應的產品強制隔離存儲。
排他約束參考(Exclusion Constraints)
https://www.postgresql.org/docs/9.6/static/ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS
RDKit在化學行業應用非常廣泛。目前阿里云RDS PostgreSQL已經支持了這個插件。
具體可參考
http://www.rdkit.org/docs/Overview.html#functionality-overview
Open source toolkit for cheminformatics Business-friendly BSD license Core data structures and algorithms in C++ Python (2.x and 3.x) wrapper generated using Boost.Python Java and C# wrappers generated with SWIG 2D and 3D molecular operations Descriptor generation for machine learning Molecular database cartridge for PostgreSQL Cheminformatics nodes for KNIME (distributed from the KNIME community site: http://tech.knime.org/community/rdkit)如果你是從上化學行業的,可能會對以下比較感興趣
基本功能
Input/Output: SMILES/SMARTS, SDF, TDT, SLN 1, Corina mol2 1, PDB, sequence notation, FASTA (peptides only), HELM (peptides only) Substructure searching Canonical SMILES Chirality support (i.e. R/S or E/Z labeling) Chemical transformations (e.g. remove matching substructures) Chemical reactions Molecular serialization (e.g. mol <-> text) 2D depiction, including constrained depiction Fingerprinting: Daylight-like, atom pairs, topological torsions, Morgan algorithm, “MACCS keys”, extended reduced graphs, etc. Similarity/diversity picking Gasteiger-Marsili charges Bemis and Murcko scaffold determination Salt stripping Functional-group filters2D功能
2D pharmacophores Hierarchical subgraph/fragment analysis RECAP and BRICS implementations Multi-molecule maximum common substructure Enumeration of molecular resonance structures Molecular descriptor library: Topological (κ3, Balaban J, etc.) Compositional (Number of Rings, Number of Aromatic Heterocycles, etc.) Electrotopological state (Estate) clogP, MR (Wildman and Crippen approach) “MOE like” VSA descriptors MQN Similarity Maps Machine Learning: Clustering (hierarchical, Butina) Information theory (Shannon entropy, information gain, etc.) Tight integration with the Jupyter notebook (formerly the IPython notebook) and Pandas.3D功能
2D->3D conversion/conformational analysis via distance geometry, including optional use of experimental torsion angle potentials UFF and MMFF94/MMFF94S implementations for cleaning up structures Pharmacophore embedding (generate a pose of a molecule that matches a 3D pharmacophore) Feature maps Shape-based similarity RMSD-based molecule-molecule alignment Shape-based alignment (subshape alignment) Unsupervised molecule-molecule alignment using the Open3DAlign algorithm Integration with PyMOL for 3D visualization Molecular descriptor library: Moments-of-inertia based descriptors: PMI, NPR, PBF, etc. Feature-map vectors Torsion Fingerprint Differences for comparing conformations一些SQL例子
chembl_14=# select * from rdk.mols where m @> 'NC(=O)[C@@H]1CCCN1C=O' limit 10;molregno | m ----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1295889 | COc1ccc(C[C@@H](C(=O)NCC(N)=O)N(C)C(=O)[C@@H]2CCCN2C(=O)[C@H](CC(C)C)NC(=O)C(C)NC(=O)OCc2ccccc2)cc11293815 | CN1C(=O)C23CC4=CC=CC(O)C4N2C(=O)C1(CO)SS31293919 | CNC(=O)CNC(=O)C(NC(=O)CNC(=O)C1CCCN1C(=O)C(C)NC(=O)C(NC(=O)OC(C)(C)C)C(C)C)C(C)C1011887 | COC(=O)C(C)NC(=O)C1CCCN1C(=O)CNC(=O)OCc1ccccc11293021 | CCC(C)C1NC(=O)C(NC(=O)C(CC(C)C)N(C)C(=O)[C@@H]2CC(O)CN2C(=O)[C@H](C)O)C(C)OC(=O)[C@H](Cc2ccc(OC)cc2)N(C)C(=O)[C@@H]2CCCN2C(=O)[C@H](CC(C)C)NC(=O)C(C)C(=O)[C@H](C(C)C)OC(=O)CC1O1287353 | CCC(C)C1NC(=O)C(NC(=O)C(CC(C)C)N(C)C(=O)C2CCCN2C(=O)C(C)O)C(C)OC(=O)C(Cc2ccc(OC)cc2)N(C)C(=O)C2CCCN2C(=O)C(CC(C)C)NC(=O)[C@H](C)C(=O)[C@H](C(C)C)OC(=O)CC1O1293647 | CCC(C)[C@@H]1NC(=O)[C@@H]2CCCN2C(=O)C(CC(O)CCl)OC(=O)CCNC(=O)[C@H](C)N(C)C(=O)[C@H](C(C)C)N(C)C1=O1290320 | C=CCOC(=O)[C@@H]1C[C@@H](OC(C)(C)C)CN1C(=O)[C@@H]1[C@H]2OC(C)(C)O[C@H]2CN1C(=O)OCC1c2ccccc2-c2ccccc211281392 | COC1=CC2C(=O)N(C)[C@@H](C)C(=O)N3NCCC[C@@H]3C(=O)N3[C@@H](C[C@@]4(O)c5ccc(Cl)cc5N[C@@H]34)C(=O)N[C@H](C(C)C)C(=O)N3NCCC[C@@H]3C(=O)N2N=C11014237 | CC(C)COC(=O)N1CC(O)CC1C(=O)Nc1ccc2c(c1)OCO2 (10 rows) Time: 9.447 msNew Types mol : an rdkit molecule. Can be created from a SMILES via direct type conversion, for example: ‘c1ccccc1’::mol creates a molecule from the SMILES ‘c1ccccc1’ qmol : an rdkit molecule containing query features (i.e. constructed from SMARTS). Can be created from a SMARTS via direct type conversion, for example: ‘c1cccc[c,n]1’::qmol creates a query molecule from the SMARTS ‘c1cccc[c,n]1’ sfp : a sparse count vector fingerprint (SparseIntVect in C++ and Python) bfp : a bit vector fingerprint (ExplicitBitVect in C++ and Python)Similarity search% : operator used for similarity searches using Tanimoto similarity. Returns whether or not the Tanimoto similarity between two fingerprints (either two sfp or two bfp values) exceeds rdkit.tanimoto_threshold. # : operator used for similarity searches using Dice similarity. Returns whether or not the Dice similarity between two fingerprints (either two sfp or two bfp values) exceeds rdkit.dice_threshold. <%> : used for Tanimoto KNN searches (to return ordered lists of neighbors). <#> : used for Dice KNN searches (to return ordered lists of neighbors). Substructure and exact structure search@> : substructure search operator. Returns whether or not the mol or qmol on the right is a substructure of the mol on the left. <@ : substructure search operator. Returns whether or not the mol or qmol on the left is a substructure of the mol on the right. @= : returns whether or not two molecules are the same. Molecule comparison< : returns whether or not the left mol is less than the right mol > : returns whether or not the left mol is greater than the right mol = : returns whether or not the left mol is equal to the right mol <= : returns whether or not the left mol is less than or equal to the right mol >= : returns whether or not the left mol is greater than or equal to the right molhttp://www.rdkit.org/docs/Cartridge.html小結一下,倉儲環節依舊使用傳感器、流計算、應急機制對倉管的產品進行實時的監管,而對于?;繁旧?#xff0c;我們已經不能使用普通的數據類型來存儲,很幸運的是在PostgreSQL的生態圈中,有專門支持化學行業的RDKit支持,支持存儲化合物類型,以及基于化合物類型的數據處理(包括化學反應,分解等等)。
運輸環節
運輸環節的風險系數也是非常大的,包括司機的經驗、運輸過程的風險、汽車的安全狀況、道路的安全、天氣的影響等等。
依次進行分析,看看如何應用IT手段來解決這些安全隱患。
司機的管理
G20大家應該很清楚吧,G20的司機、安保,據說都是三代以內所有關系網的背景干凈的,目的就是防止正面人物的跳反。
對于?;愤\輸行業也一樣,司機的背景很重要,除了在招聘時需要調查,平時也可以動態的分析司機們的關系網絡,從而降低司機層面的安全隱患。
用到的技術也是社會關系學分析,可以參考
《金融風控、公安刑偵、社會關系、人脈分析等需求分析與數據庫實現 - PostgreSQL圖數據庫場景應用》
運輸過程中的?;繁O管
在集裝箱、貨車本身都有相應的傳感器。
比如貨車的 速度、地理位置、胎壓、輪胎溫度、剩余燃料、集裝箱本身針對危化品的各項指標數據(如液位、溫度、壓力、等)
這里涉及的同樣也是傳感器、流式計算、應急機制(流規則)技術。以及地理位置信息的處理。
參考
《流計算風云再起 - PostgreSQL攜PipelineDB力挺IoT》
《PostGIS 在 O2O應用中的優勢》
《PostgreSQL 百億地理位置數據 近鄰查詢性能》
http://www.osgeo.org/
http://postgis.net/
路徑管理
?;返倪\輸其實是受到嚴格的監管的,比如 不能進城,不能走某些禁行路段或橋梁等 ,又比如繞過道路擁堵等。
這里涉及到的功能和導航的功能類似,只不過導航沒有針對?;愤\輸的版本,它不會告訴你哪些是危化品禁行的路段。
所以針對?;愤\輸,可能需要自建導航,那么自建導航還需要考慮什么呢,
比如動態路徑規劃,開高速的朋友一定對堵車,車禍很懼怕,動態規劃包括躲避擁堵,躲避禁行路段,提前對惡劣天氣進行播報、接收交管部門的公告等。轉換為動態的路徑規劃,實時的改變行程。
用什么產品才能支持這些功能呢?還是PostGIS,如下文檔可以作為參考
《聊一聊雙十一背后的技術 - 物流、動態路徑規劃》
http://pgrouting.org/
應急響應
如果?;愤\輸過程中出現了泄露、或者貨車出現了事故,需要根據出事地點,快速的調配附近的應急救助資源(如交警、消防中隊、醫院、120)。
同時需要根據?;返膶傩?#xff0c;選擇合理處理方案(絕對不要再出現天津爆炸類似的事件了),要達到這個目的,我們需要實時的追蹤貨車的位置,同時貨車承載的貨物屬性需要被集中的監管。
前面提到的開源流計算產品pipelineDB可以幫助對貨車上傳的數據進行流式處理,比如實時的聚合(生成軌跡等);比如創建TRANSFORM,創建事件響應規則;
小結一下,在?;返倪\輸環節,使用傳感器對貨車、集裝箱內的?;返闹笜诉M行實時的監控,使用流式數據庫pipelineDB流式的處理傳感器實時上報的數據;使用PostgreSQL+PostGIS+pgrouting 對于貨車的形式路徑進行管理,繞開禁行路段、擁堵路段。
當出現事故時,使用PostgreSQL的GIS索引,快速的找出附近的應急救助資源(如交警、消防中隊、醫院、120)。
同時對?;返呢浳锎鎯?#xff0c;使用化學物類型存儲,可以對這些類型進行更多的約束和模擬的合成,例如可以發現化學反應,防止出現類似天津爆炸事件。
消耗環節
危化品最終用戶,需要將?;废牡?#xff0c;與倉管差不多的監管手段,同時我們可以增加剩余量的監控,在閉環中起到很好的作用,達到供需平衡,避免供不應求,或者供過于求的事情發生。
?;坟浳锏膭討B數據監控
指揮中心dashboard
以往我們可能只能看到一張靜態的圖
在給生產、倉庫、物流配送、消耗環節添加了終端、傳感器后,就建立了一個全面的?;繁O管數據平臺。
我們可以在構建實時的監管全圖。
類似我們常用的DD打車,可以看到那里存放了什么,危化品的車輛在什么地方?。。。。等等
擴展思考
公共場所危化品攜帶監管
?;吩牧媳O管
緝毒、化學合成、監管
比如?;返脑牧?#xff0c;可能有不法分子有作坊可以買原材料加工成危化品,如炸彈。
那么就需要對源頭進行監管,還記得G20前,買菜刀都要登記身份證。其實道理類似,就是怕不法分子趁機搞事嘛。
但是這種手段成本太高,而且效果不好,有什么好的手段呢?
我們可以登記所有的買家信息,同時利用關系學分析,找到不法分子。(前面講招聘?;坟涇囁緳C時有講到)
另一方面,對于原材料的數據存儲,如果都是化學物質的話,我們需要一種可以存儲并處理化學物質的數據庫,這一方面我們可以使用RDKit + PostgreSQL來實現。
比如對購買了原材料的人進行關系推導,找出N級范圍內同樣購買了其他原材料的人,使用RDKit進行模擬化學反應,合成后看看是不是?;?#xff1f;
小結
1. 生產環節
將各個原來人工監控的環節數字化,使用 傳感器、流計算、規則(可以設置為動態的規則) 代替人的監管和經驗。
2. 銷售環節
利用社會關系分析,在銷售環節挖掘不法分子,挖掘騙貸、騙保的虛假交易。利用地理位置跟蹤,掌控整個交易的貨物運輸過程。
3. 倉儲環節
倉儲環節依舊使用傳感器、流計算、應急機制對倉管的產品進行實時的監管,而對于?;繁旧?#xff0c;我們已經不能使用普通的數據類型來存儲,很幸運的是在PostgreSQL的生態圈中,有專門支持化學行業的RDKit支持,支持存儲化合物類型,以及基于化合物類型的數據處理(包括化學反應,分解等等)。
4. 運輸環節
小結一下,在?;返倪\輸環節,使用傳感器對貨車、集裝箱內的危化品的指標進行實時的監控,使用流式數據庫pipelineDB流式的處理傳感器實時上報的數據;使用PostgreSQL+PostGIS+pgrouting 對于貨車的形式路徑進行管理,繞開禁行路段、擁堵路段。
當出現事故時,使用PostgreSQL的GIS索引,快速的找出附近的應急救助資源(如交警、消防中隊、醫院、120)。
同時對?;返呢浳锎鎯?#xff0c;使用化學物類型存儲,可以對這些類型進行更多的約束和模擬的合成,例如可以發現化學反應,防止出現類似天津爆炸事件。
5. 消耗環節
增加剩余量的監控,在閉環中起到很好的作用,達到供需平衡,避免供不應求,或者供過于求的事情發生。
6. 動態指揮中心
在給生產、倉庫、物流配送、消耗環節添加了終端、傳感器后,就建立了一個全面的危化品監管數據平臺。 構建實時的監管全圖。
7. 緝毒、發現不法分子等
通過社會關系學分析,結合RDKit,在數據庫中存儲了人的信息,存儲了人與化學物的關系(比如購買過),然后,根據社會關系學分析,將一堆的化合物(原材料)結合起來,看看會不會發生反應,生成毒品或危化品。
從而發現不法分子。
參考文檔
有愛心的數據庫登場,PostgreSQL是一個 "很有愛" 的數據庫,用心學習它,用心回報社會吧。
《一場IT民工 與 人販子 之間的戰爭 - 只要人人都獻出一點愛》
《"物聯網"流式處理應用 - 用PostgreSQL實時處理(萬億每天)》
《為了部落 - 如何通過PostgreSQL基因配對,產生優良下一代》
《流計算風云再起 - PostgreSQL攜PipelineDB力挺IoT》
《分析加速引擎黑科技 - LLVM、列存、多核并行、算子復用 大聯姻 - 一起來開啟PostgreSQL的百寶箱》
《金融風控、公安刑偵、社會關系、人脈分析等需求分析與數據庫實現 - PostgreSQL圖數據庫場景應用》
《實時數據交換平臺 - BottledWater-pg with confluent》
《PostgreSQL 在視頻、圖片去重,圖像搜索業務中的應用》
《基于 阿里云 RDS PostgreSQL 打造實時用戶畫像推薦系統》
《PostgreSQL 與 12306 搶火車票的思考》
《門禁廣告銷售系統需求剖析 與 PostgreSQL數據庫實現》
《聊一聊雙十一背后的技術 - 物流、動態路徑規劃》
《聊一聊雙十一背后的技術 - 分詞和搜索》
《聊一聊雙十一背后的技術 - 不一樣的秒殺技術, 裸秒》
《聊一聊雙十一背后的技術 - 毫秒分詞算啥, 試試正則和相似度》
《PostgreSQL 9.6 引領開源數據庫攻克多核并行計算難題》
《PostgreSQL 前世今生》
《如何建立GIS測試環境 - 將openstreetmap的樣本數據導入PostgreSQL PostGIS庫》
《PostgreSQL 9.6 單元化,sharding (based on postgres_fdw) - 內核層支持前傳》
《PostgreSQL 9.6 sharding + 單元化 (based on postgres_fdw) 最佳實踐 - 通用水平分庫場景設計與實踐》
《PostgreSQL 9.6 sharding based on FDW & pg_pathman》
《PostgreSQL 9.5+ 高效分區表實現 - pg_pathman》
《PostgreSQL 數據庫安全指南》
《PostgreSQL 9.6 黑科技 bloom 算法索引,一個索引支撐任意列組合查詢》
《PostgreSQL 使用遞歸SQL 找出數據庫對象之間的依賴關系》
《用PostgreSQL描繪人生的高潮、尿點、低谷 - 窗口/幀 or 斜率/導數/曲率/微積分?》
《用PostgreSQL找回618秒逝去的青春 - 遞歸收斂優化》
《PostGIS 在 O2O應用中的優勢》
《PostgreSQL 百億地理位置數據 近鄰查詢性能》
總結
以上是生活随笔為你收集整理的从天津滨海新区大爆炸、危化品监管聊聊 IT人背负的社会责任感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java mongodb gridfs_
- 下一篇: idea配置阿里云镜像失败解决