現狀:說下現狀 現有一套學生管理系統為主系統,包括學生資訊,院系資訊,專業資訊,班級資訊,等等。。。。但學校還有其他系統,購買或自研資料庫不在一起 需要讀取剛剛說的這些資訊做關聯統計,或者排序查詢之類的(例:系統B只保存了學生ID要根據專業班級等資訊查詢或排序) 像這種情況我們目前主要是2種方法
1.通過 DBlink操作 但是時間長了 DBlink太混亂了沒辦法管理.
2.還有一種就是備份資料庫第三方系統匯入系統使用,這個解決方案及時性是個很大問題,而且備份和恢復也太消耗人力了.
需求:
1.更合理的解決資料共享問題 1 v N,隨著日益增長的系統 日后可能為更多的系統提供支持服務
2.如何最有效率的為第三方系統提供資料,讀取效率、并發數量、安全性問題、如果考慮到這些是不是就不能排除使用DbLink的方式
3.有沒有通過WebApi提供資料的解決思路,想過但是資料量大關聯查詢、排序沒想到合適的解決方案
現在很苦惱 請各位大神給些思路 小弟不勝感謝、分數不多請大神不要嫌棄
uj5u.com熱心網友回復:
一種是通過dblink訪問其他庫的資料,一種是把其他資料匯入到本地訪問。并沒有其他什么太好的辦法。另外可以把匯入資料做成 自動任務腳本,或者使用一些第三方ETL工具來匯入資料,但是總的來說離不開上面2種辦法。
uj5u.com熱心網友回復:
有沒有用過 webapi 這種做資料支撐的?uj5u.com熱心網友回復:
這就是一個跨庫查詢的問題,我們公司是使用ogg來解決這個問題1.學生管理系統資料庫相關表通過ogg實時同步到 其它需要使用資料的庫
優點:資料實時,只同步需要的表,性能更好
缺點:貴
2.通過ETL工具,定時將資料推送到 其它需要使用資料的庫
優點: 免費,維護方便
缺點: 資料不實時
3.api的方式,寫個存盤程序,接收引數,輸出一個游標結果集給開發,然后開發將自己資料庫的資料去出來了之后,兩個資料集在代碼段,通過集合運算。
通過存盤程序來替代api的功能
uj5u.com熱心網友回復:
web介面的話,要么就是做實時同步把資料拉到本地持久化再查詢,要么就是每次只查想要的資料在記憶體里做關聯。根據情況,作業量會很大uj5u.com熱心網友回復:
目前甲方是通過odi進行傳輸同步的 ogg、etl確實沒接觸過,主要是同步過去的資料就沒法管理了,就脫離了甲方
api想過你說的方法以前有個專案這么干過但是效率太慢
uj5u.com熱心網友回復:
現在就不想用同步方案 目前甲方有些保密性要求 而且使用的系統是其他的第三方公司,同步是最后萬不得已, 記憶體關聯的話有些復雜的查詢怕是滿足不了
uj5u.com熱心網友回復:
你這個是他們既要用這個資料,又不讓他們看到這個資料,擔心安全相關的問題。
既然他們程式可以取到這部分資料,你就只能通過審計來管控了,因為權限這邊已經沒辦法再進行管控了。
etl工具可以同步部分欄位的,好比你的學生資訊表有100列,你只想給他10列,敏感欄位不同步,或者進行md5加密之類的,你就針對性的同步那10列就OK了。
然后單獨在目標庫開一個schema,只給業務schema一個只讀的權限,不允許修改,并把每次的讀取都在oracle里面進行審計。
你說的odi就是一種ETL工具
uj5u.com熱心網友回復:
另外,第三種api的方法,你說試過,很慢。那 那些把應用從Oracle遷移到MySQL的,垂直分庫分表、水平分庫分表,要獲取一張完整的表的資料,涉及N個資料庫
開發人員不一樣是通過中間件也好,其它方式也好,獲取到全部資料,再進行運算和呈現的。
應用端服務器可以上集群,可以加大CPU、記憶體、可以加快取等等,總還有一些解決方案的。
uj5u.com熱心網友回復:
兩種解決方案:一是通過ETL工具將資料統一抽到同一資料庫,缺點是資料無法做到實時,但絕大部分報表對資料實時性要求不高,這是主流的做法;
二是通過報表工具同時連接多個資料庫,在前端頁面進行管理,優點是資料實時獲取,缺點是復雜報表可能存在性能問題,嚴重時有可能導致業務系統資料庫崩潰。
uj5u.com熱心網友回復:
感慨一下,都2020年了,居然還有人想著用dblink和api介面的方式跨系統出報表,太業余了轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/6840.html
標籤:開發
