真是無語了,第二次提交又被拒絕了,理由是「該內容屬於技術討論,建議就該問題,簡單地談一談你的想法思路,以便更好地和他人做一個技術交流「,要是第一次的是因為排版的原因我也認了,想發個問答貼怎麼就這麼難呢?行吧,就照要求稍微表達一下吧,要是真的沒有思路難道也必須得胡編亂造嗎?相信網站團隊的出發點是好的,但是對於新人來說,很可能會因此棄用。最後一次,再不過就不用這個論壇了,實在是提問好難。
以下是原文,最後將附上部分自己的思路。
初來乍到,第一次應該是自己的排版太亂,導致審核沒有通過,後面還為此特地學些了markdown的語法。廢話不多說,進入正文。
某大型上市國有企業,在各省市都有分公司,為了統一管理全國各地市分公司子公司業務過程及財務數據,統一開發了一個管理平台,再下發給各省市依實際需求進行二次開發,以取代各地市原有的分散的財務系統、業務管理系統等。
前台用angularJs,bootstrap,html,後台用springMVC,MyBatis,資料庫有Oracle有Mysql,rpc框架用dubbo,註冊中心用zookeeper,快取用redis,系統整體架構為分散式集群。整個系統包含了以“專案管理”,“合約管理”,“採購管理”,“銷售管理”,“會計管理” 5個模組為主的多個業務模組。
基於現有業務,做100 張報表。報表模組將有獨立的資料庫及應用。
如何建立大表供所有報表使用?
業務部分理清楚自然是最基本的,但是每個模組之間透過介面來呼叫服務。
如何從分散式的資料庫中抽取大數據量?
每個模組有各自的資料庫,部分使用oracle,部分mysql,資料量等級在千萬以上。
資料的同步方式又應該如何比較合理?以什麼技術實現?
增量同步的難度較大,從業務模組沒有很好的方式能保證不遺漏增量數據;若是全量數據,每次數據的量又實在是太大了。另外報表展示的時候以及資料匯出又如何保證其效能?
第一次做這麼大的項目,實在是有些摸不著頭腦。可能表達的不太清楚,有需要補充的地方歡迎留言。希望論壇裡的各位前輩多多指教,不勝感激。
ps:
markdown好多地方還不太明白,例如有序無序列表嵌套的時候為什麼實心的黑點變成空心的了?
為什麼無序列表換行只有目前行有效,而目前行有效的時候上面已經換過行的又無效了?
有點不懂,難道說不同的編輯器的語法還不一樣?
還有怎麼才能看到人家發布的貼文的markdown怎麼寫的?能看到的話好歹也能學一下.
分析所有報表的統計維度和共同字段,在報表模組新建一個oracle用戶,將所有字段根據模組分錶,作為報表的基礎大表;
要考慮資料的擷取方式,目前我能想到的方式有兩種:
透過各個模組提供接口,取數後插入至報表模組基礎大表;優點:抽取規則好維護;缺點:效能太差;
#透過DBLink將oracle資料庫和Mysql資料庫打通,用預存程序直接將資料插入至基礎大表。優點:性能提升;缺點:規則由他人維護將變得困難。
資料每次全量同步。優點:邏輯簡單;缺點:資料同步量太大,時間太久。
以上是個人的一些拙見,希望各位前輩多多指教。
过去多啦不再A梦2017-06-20 10:07:40
你說的需求基本上算是建造資料倉儲,基本的想法是:
1、資料倉儲和業務系統的資料庫獨立,資料倉儲的建模一般要分層設計,不是簡單的建成大表。
普遍會分為緩衝層、基礎層、聚合層、報表層等,每層的重點不太一樣,基礎層還是以範式模型為主,聚合層就要普遍要做資料冗餘,報表層一般是列很多的寬表設計。
2、資料同步,在資料量大的情況下必須有增量機制,如果沒有需要應用系統改造。
3、同步方法有幾個思路:
a. 用dblink打通数据库,人工写存储过程。
b. 用informatic powercenter 或kettle类似的ETL工具
c. 专用的数据库层同步软件,如oracle的ogg等