Sql-Server

在商業智能中使用 N 層

  • March 18, 2012

我已經讀到您也可以根據以下標準為商業智能應用 N 層:*展示文稿

*功能邏輯

*數據

您在使用 N-Tier 時的體驗如何?

// 全金屬男孩

N-Tier 可能是一個虛偽的術語

我認為在商業智能係統的上下文中使用“N 層”一詞是不真實的。在事務系統中,“N-Tier”描述了具有應用伺服器、ESB 或其他網路中間層的分佈式系統。數據倉庫系統的工作方式與此類似,因此該術語可能會引起混淆。

分離數據和功能邏輯

您可以根據盡可能原始的數據建構一個系統,然後在其上放置一個轉換層,然後由報告層使用。轉換層可以採用以下形式:

  • 一系列數據庫視圖。
  • 來自報告工具的元數據層(例如,報告模型或業務對象宇宙)。一類稱為“企業資訊集成”的工具將元數據層的概念擴展為類似於記憶體 ETL 工具的東西,允許報告或功能邏輯層實現複雜的轉換。然而,這種方法實施起來很繁瑣,並且沒有被廣泛使用,除非某些東西妨礙了實施更傳統的 ETL 架構。
  • 一套帶有自己 ETL 的數據集市。

根據您的範例,這將為您提供“數據”、“功能邏輯”和“展示”層。一些數據倉庫系統的實現有點像這樣,儘管它(至少恕我直言)將是一種反模式。將業務邏輯推送到 ETL 下游的一些問題包括:

  • 根據您的功能邏輯介質的功能,可能的轉換功能可能會受到限制,從而導致抽象洩漏,從而限制放置在它們之上的任何臨時報告工具的價值。Ad-hoc 工具需要行為一致的干淨數據,並且數據確實必須採用與該工具良好配合的格式。

如果數據不一致、不干淨且格式不正確,那麼您實際上僅限於定制的數據 SQL 報告或建構補充數據集市以支持臨時設施。依賴數據集市往往會產生大量具有重疊但功能微妙不一致的臨時三級 ETL 流程。這往往會產生協調和數據質量問題,並且無法提供“單一事實來源”。

通常,這種情況會產生大量的維護工作量並削弱使用者社區的信心。

  • 未針對報告進行優化的數據庫架構可能表現不佳。
  • “原始數據”意味著數據以與源相當同構的形式保存,這與任何一致數據的概念互斥。
  • 如果需要審核,“原始數據”通常也可從暫存區和存檔區獲得。你會得到一類“只想要數據”的超級使用者,這些人可能有很大的政治影響力。允許這一點與數據倉庫項目一起繼續進行,這無法實現“單一事實來源”的目標。

如果倉庫具有適當的一致性數據機制(例如操作數據儲存),那麼這應該提供單一來源。處理相互矛盾的定義和堅持使用自己的煙囪式系統的使用者社區本身就是一個完整的話題。

儘管如此,這比預期的要普遍。我認為遇到以這種方式實現的數據倉庫項目的主要原因是,如果您對轉換邏輯的要求很複雜,ETL 工具很難使用。ETL 工具通常具有簡化架構和將邏輯轉移到報告層的效果,這會顯著降低數據倉庫計劃的有效性。中央數據庫的工作量和存在給人一種數據倉庫的錯覺,但幾乎沒有帶來什麼好處。

數據倉庫的另一個 N 層視圖

可以將“數據”、“功能邏輯”和“表示”解釋為組織更完善的數據倉庫系統中的 ETL 和報告過程。在這種情況下,“數據”可以解釋為暫存層,“功能邏輯”在 ETL 中實現,呈現維度數據儲存和/或數據集市套件,“報告”通過報告和即席查詢實現套房。

被認為是有害的

出於這個原因,我認為“N-tier”的概念沒有幫助,甚至有點虛偽。這聽起來很像中間件公司或諮詢公司可能在白皮書中描述的東西——一個有缺陷甚至有些誤導性的理論概念,在紙上聽起來不錯。

引用自:https://dba.stackexchange.com/questions/15140