您好,登錄后才能下訂單哦!
集成手機(jī)平臺(tái)待辦數(shù)據(jù)失敗問題跟蹤和處理
Mongodb 、 Oracle 、 SQLServer
場景:
公司的集成手機(jī)平臺(tái)后臺(tái)的核心數(shù)據(jù)庫采用的Mongodb 讀寫分離架構(gòu),所有異構(gòu)系統(tǒng)平臺(tái) ( 財(cái)務(wù)、ERP 、計(jì)劃 ......)( 對應(yīng)的數(shù)據(jù)庫ORACLE 、 SQLServer 、 Mysql ......) 流程待辦會(huì)實(shí)時(shí)推送到Mongodb 庫里,實(shí)現(xiàn)所有系統(tǒng)手機(jī)端移動(dòng)審批。
問題:
各個(gè)系統(tǒng)供應(yīng)商對接集成手機(jī)平臺(tái)系統(tǒng)水平參差不齊,經(jīng)常出現(xiàn)個(gè)別系統(tǒng)待辦未推到集成手機(jī)平臺(tái)或待辦轉(zhuǎn)已辦失敗的問題;
解決方案:
各個(gè)系統(tǒng)供應(yīng)商優(yōu)化接口周期長,在優(yōu)化完成之前,需要有手動(dòng)處理機(jī)制,即出現(xiàn)待辦未推送或待辦轉(zhuǎn)已辦失敗問題,可以及時(shí)知道并及時(shí)手動(dòng)處理。
一:待辦出現(xiàn)問題時(shí),第一時(shí)間向相關(guān)系統(tǒng)管理員發(fā)送預(yù)警郵件,及時(shí)手動(dòng)干預(yù),避免問題升級;
二:監(jiān)控大屏實(shí)時(shí)展示失敗的待辦信息;
三:當(dāng)失敗的待辦數(shù)量很龐大,批量修復(fù)并定期集中處理歷史失敗的待辦;
一:待辦出現(xiàn)問題時(shí),第一時(shí)間向相關(guān)系統(tǒng)管理員發(fā)送預(yù)警郵件,及時(shí)手動(dòng)干預(yù),避免問題升級;
由于待辦出現(xiàn)問題時(shí)會(huì)在相應(yīng)系統(tǒng)數(shù)據(jù)庫里生成一條日志記錄,可以通過觸發(fā)器實(shí)現(xiàn)郵件預(yù)警,以SQLServer 數(shù)據(jù)庫為例:
二:監(jiān)控大屏實(shí)時(shí)展示失敗的待辦信息
通過Grafana 監(jiān)控平臺(tái),可以添加 SQLServer 等數(shù)據(jù)源,實(shí)時(shí)展現(xiàn)失敗待辦信息;
三:當(dāng)失敗的待辦數(shù)量很龐大,批量修復(fù)或定期處理歷史失敗的待辦
可以通過集成手機(jī)平臺(tái)數(shù)據(jù)庫(Mongodb) 的待辦表和各個(gè)系統(tǒng)數(shù)據(jù)庫 (ORACLE 、 SQLServer 、 Mysql) 待辦表做對比:
1 集成手機(jī)平臺(tái)數(shù)據(jù)庫 (Mongodb) 的待辦數(shù)據(jù)多于各個(gè)系統(tǒng)數(shù)據(jù)庫待辦數(shù)據(jù),表示待辦轉(zhuǎn)已辦失敗,需要手動(dòng)刪除多余的待辦信息;
2 集成手機(jī)平臺(tái)數(shù)據(jù)庫 (Mongodb) 的待辦數(shù)據(jù)少于各個(gè)系統(tǒng)數(shù)據(jù)庫待辦數(shù)據(jù),表示待辦推送失敗,需要手動(dòng)重推;
那么如何批量查出所有系統(tǒng)待辦轉(zhuǎn)已辦失敗的數(shù)據(jù) 呢 ?
(1) 導(dǎo)出集成手機(jī)平臺(tái)數(shù)據(jù)庫(Mongodb) 的待辦數(shù)據(jù)到 execl
Mongodb 所在服務(wù)器操作系統(tǒng)為 Centos7.5, 可以在自己電腦上安裝一個(gè) Mongodb 客戶端,使用 mongoexport 工具導(dǎo)出數(shù)據(jù);
導(dǎo)出語句:
D:\MongoDB\Server\3.4\bin>
mongoexport.exe --csv --host 192.100.100.100:27017 /d testdb /c TEST_TdUndo /f "_id,userName,account,createTime,content" /q "{"delete": false}" /o C:\Users\Administrator\Desktop\all cjc _Undo1219a.csv
默認(rèn)情況下打開CSV 文件中文是亂碼的:
通過如下方式解決亂碼問題:
--- 打開方式 ( 記事本 )--- 格式 --- 字體 --- 中文 GB2312--- 保存 ----csv 方式打開 --- 調(diào)整格式 --- 另存為 execl 格式文件
( 2 ) 導(dǎo)出各個(gè)系統(tǒng)數(shù)據(jù)庫(ORACLE 、 SQLServer 、 Mysql) 的待辦數(shù)據(jù)到 execl
例如 系統(tǒng)1 :
select Name, Account , Ini Date, content from undoerp
where UnDoStatus=' 待辦 '
and CreateDate>='2019-11- 01 08:00:00.000'
and CreateDate<='2019-12- 01 23:59:00.000';
(3) 對比數(shù)據(jù)
---1 集成手機(jī)平臺(tái)數(shù)據(jù)庫 (Mongodb) 的待辦數(shù)據(jù)多于各個(gè)系統(tǒng)數(shù)據(jù)庫待辦數(shù)據(jù),表示待辦轉(zhuǎn)已辦失敗,需要手動(dòng)刪除;
---2 集成手機(jī)平臺(tái)數(shù)據(jù)庫 (Mongodb) 的待辦數(shù)據(jù)少于各個(gè)系統(tǒng)數(shù)據(jù)庫待辦數(shù)據(jù),表示待辦推送失敗,需要手動(dòng)重推;
數(shù)據(jù)對比有兩種方式:
1 :通過execl 函數(shù)對比各個(gè)系統(tǒng)數(shù)據(jù),找出待辦轉(zhuǎn)已辦失敗的數(shù)據(jù)和待辦未推的數(shù)據(jù);
但是實(shí)際情況可能會(huì)比較復(fù)雜,比如各系統(tǒng)時(shí)間格式不一致、推送待辦有延時(shí)、標(biāo)題不一致等問題,通過execl 很難對比數(shù)據(jù),可以通過 SQL 語句實(shí)現(xiàn)數(shù)據(jù)對比;
2 :將所有系統(tǒng)對應(yīng)的Mongodb 、 Oracle 、 SQLServer 、 Mysql 待辦數(shù)據(jù)導(dǎo)出到execl 中,在將所有系統(tǒng)execl 數(shù)據(jù)通過plsql 全部導(dǎo)入到 oracle 數(shù)據(jù)庫中,通過 sql 對比找出想要的數(shù)據(jù),例如 Mongodb 數(shù)據(jù)表左連接各系統(tǒng)Oracle 、 SQLServer 、 Mysql 數(shù)據(jù)表,匹配不上的數(shù)據(jù),既是待辦轉(zhuǎn)已辦失敗的數(shù)據(jù)。 Oracle 、 SQLServer 、 Mysql 數(shù)據(jù)表左連接 Mongodb 數(shù)據(jù)表,匹配不上的數(shù)據(jù),既是未推待辦的數(shù)據(jù)。
(1)oracle 先創(chuàng)建多張表,并通過plsql 導(dǎo)入各個(gè)系統(tǒng)數(shù)據(jù);
例如:
create table undo cjc (id varchar2(500),userName varchar2(500),account varchar2(100), updateTime varchar2(100),content nvarchar2(2000));
select * from undo cjc for update;
create table undo erp (userName varchar2(500),account varchar2(100), updateTime varchar2(100),content nvarchar2(2000),isstart varchar2(100));
select * from undo erp for update;
……
(2) 通過sql 進(jìn)行數(shù)據(jù)對比
select distinct a.id,a.username cjc 用戶名,
a.account cjc 登錄名,
a.updatetime cjc 到達(dá)時(shí)間,
a.content enanar 標(biāo)題 ,
b.username erp 用戶名 ,
b.account erp 登錄名 ,
b.updatetime erp 到達(dá)時(shí)間 ,
b.content erp 標(biāo)題
from undo cjc a
left JOIN undoerp b
on a.account = b.account
and a.content like '%' || b.content || '%'
where a.content = ‘ xxx 系統(tǒng) ’
order by erp 登錄名 ;
右側(cè)沒有匹配上的數(shù)據(jù),既是待辦轉(zhuǎn)已辦失敗的數(shù)據(jù);
邏輯刪除有問題的待辦:
即通過主鍵ID 唯一定位到有問題的待辦,將 delete 字段值由 false 改成 true ;
單條語句如下:
db.T_ChenUndo.update({"_id":ObjectId("5dd3xxxxx"),"account":"cjc","delete":false},{$set:{delete:true}},{multi:true});
根據(jù)ID 等信息,批量生成刪除錯(cuò)誤待辦的腳本,即可批量修復(fù)待辦轉(zhuǎn)已辦失敗問題;
歡迎關(guān)注我的微信公眾號"IT小Chen",共同學(xué)習(xí),共同成長?。。?/span>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。