資料庫系統架構討論

nana1123發表於2022-04-25

我想開始討論資料庫系統的實現。

我正在為一家擁有在CA生長的資料庫系統的公司工作。過去10年。

讓我試著描述它在做什麼以及它如何實現:

該系統分為3個不同團隊處理的3個主要部分。

  1. 條目:條目團隊負責為系統建立GUI。在後臺是一個巨大的MS SQL資料庫(CA.100表),使用.NET建立GUI。有不同的GUI應用程式,每個應用程式都有許多不同的選項卡來填寫相應的表。如果是。將一個新列新增到資料庫中,此列手動新增到GUI應用程式。

  2. DataFlow:DataFlow團隊的目的是做資料計算並準備報告團隊的資料。這是透過多個級別完成的。讓我嘗試更詳細地解釋這個過程:DataFlow團隊使用來自條目資料庫的資料透過事務複製複製到另一個伺服器和另一個資料庫(此資料包含來自所有客戶端的資訊)。然後每小時一次,一個自我寫入的應用程式正在檢查輸入表中的更改的行(使用換算列),然後使用1-n的輸入表計算新資料的每個輸出表呼叫儲存過程。之後,使用再次使用事務複製將資料複製到另一臺伺服器上的另一個資料庫。這裡呼叫另一個儲存過程以校準額外的新輸出表。使用SQL作業啟動此儲存過程。從那裡,資料被拆分給不同的資料庫,每個資料庫都是特定於客戶端的。使用.NET Bulkcopy命令使用其他自我寫入應用程式(在客戶端上過濾)完成此複製。這些客戶端特定的資料庫透過另一個自我寫入應用程式複製到其他伺服器上的其他客戶端特定的報告資料庫,該應用程式將報告資料庫與客戶端特定資料庫進行比較以計算資料差異。只需複製資料差異(因為報告資料庫在客戶端伺服器上以前執行)。透過另一個自我寫入的應用程式策劃了整個過程來控制例如如果在啟動作業之前完成事務複製以呼叫儲存的過程等... Futhermore也會在此協調不同客戶端之間的同步。該過程可以由一個自我寫入的監視工具以圖形方式顯示,它看起來非常複雜,您可以想象地記錄所有這些元件的狀態,並且可以由另一個自我寫入的應用程式檢視。如果新增新列或表格,則必須手動更改所有這些元件。有關部署安裝說明使用MS Word編寫。 (約10人在這支球隊工作)

  3. Reporting:報告團隊建立了它在.NET中編寫自己的平臺,以允許客戶端透過GUI建立自定義報告。報告可透過網路訪問。

最大的表格有大約100萬行。所以,我希望我沒有忘記任何重要的東西。

好吧,我想討論的是別人如何實現這種情況,我無法想象每個公司都寫了自己的自定義應用程式。實際上是允許在資料庫上快速計算的可能性(使用T-SQL旁邊)。我以某種方式錯過了這裡的連結到了物件導向的程式設計我習慣了來自我的舊公司,但我們從未處理過這麼多的資料,也許是為了快速計算,這是這樣做的方式......或者是可能的使用例如LINQ或BizTalk Server建立演算法和計算,也許甚至以圖形方式?問題只是如何將現有的儀表長儲存過程轉換為新格式......將來我們想要使用資料倉儲,但這需要一段時間,所以也許可以有一個單獨的步驟來簡化流程。

任何評論都得到了讚賞。

謝謝丹尼爾

看答案

為什麼在地球上你想要轉換現有的工作複雜儲存的procs(這可以是績效調整的)到linq(或者我誤解了你)?因為你個人不喜歡t-sql?不是好的原因。他們太慢了嗎?然後他們可以調整(這是你真正不想在Linq上嘗試做的事情)。可以使用SSIS更好地實現過程,但隨著SSIS的複雜是複雜的,並且重寫過程的時間將採取,我不確定你真的會透過這樣做來獲得任何東西。

“我以某種方式錯過了這裡的連結到物件導向的程式設計......”關聯式資料庫不是物件導向的,如果你試影像它們一樣物件而表現。在訪問資料庫時,學會在設定時思考不是物件。你一次從一個使用者的心態到一次插入一個記錄,但這並不是要處理大量資料的轉移的心態。對於這些型別的東西,使用資料庫來處理問題比以物件導向的方式做好事物更好。一旦您有大量的資料和許多報告,人們對效能的更感興趣,而不是在過去的情況下,當您使用某些工具可能對效能如此不好的工具時。無論您是否喜歡T-SQL,它是SQL Server的母語,資料庫是針對它的使用而最佳化的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017124/viewspace-2888674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章