主要為了展示報表資料
1 使用flask(藍圖模式)啟動網路服務當需要從外部灌入資料時,使用pymysql進行資料匯入;在flask提供服務時,則使用sqlalchemy方便的獲取所需的資料。2 使用mysql儲存**資料(通過pymysql和flask sqlalchemy)
1 假設現在我們能獲取一些資料,從這些資料裡需要提煉出彙總資料展示(例如行業資料)從聚合的角度看,從原始資料表中使用維度,對變數進行某種匯聚。2 假設使用者可能上傳資料,我們計算完成後存入資料庫
可以每種報告一張資料表
字段如下:
idname
version
report_id
var_id
valdim1
dim2
…create_time
update_time
記錄id
簡稱,主要是為了sqlalchemy展示
報告版本(可以重新整理)
報告id,不同的報告對應了不同的統計方法
var_id 對應統計的變數,使用id的目的是可以靈活重定義名稱
浮點數值
分類維度1
分類維度2
其他維度,每種報告的維度不一致
建立時間
修改時間 - 如果當期報告有錯誤的話
對應的report_id 和 var_id可以另外起錶儲存。
idname
version
report_id
file_id
user_id
var1
var2
…create_time
update_time
記錄id
簡稱,主要是為了sqlalchemy展示
報告版本(可以重新整理)
報告id,不同的報告對應了不同的統計方法
檔案id,對應某個上傳檔案
使用者id
指標1的值
指標2的值
根據不同報表指標數不固定,最好預留三個
建立時間
修改時間 - 如有錯誤
report_id可以另外起錶儲存,比較特別的是變數對映表。有乙個字段儲存var1, var2的字段和原始欄位名稱對映。
例如,在表中存的不是原始值,而是某個id。然後為這個欄位的id另外建立一張表,這個表就是對映表。
什麼時候需要用對映表?
另外乙個小點是,不要把這些鍵值做外來鍵關聯,萬一要刪表還挺麻煩的(雖然在狗書中資料物件經常這麼關聯)。除非關係非常明確,以後也不打算改了,否則最好不要這麼做。
我的建議是:把對映表作為靜態資源,在伺服器啟動時載入。例如,啟動時將變數的對映表載入,變為字典。(對應的,有可能需要有個檢視函式負責reload,對應靜態表偶爾的變動,又不必重啟服務)
結構化庫由於要「結構化」字段,因此橫表收到的字段規劃限制較多。如果改為豎表可以增加靈活性,但是會讓行數邊的比較誇張,並且提取資料時稍微麻煩一點。據說mysql單錶的上限大約是5000萬條左右,所以要均衡一下。
以分析為主的報表以豎表儲存,以事實為主的報表以橫表儲存。例如行業彙總資料存豎表,方便隨時替換分析。
我覺得應該按照使用的功能和時間兩個維度,拆成多個表。
功能上分表有點類似不把雞蛋放在乙個籃子裡,互不干涉。而時間上分表也是必然,提高響應速度。如果某個表可能來自多個資料來源,應該增加乙個資料來源字段,使用時有可能進行切換和取捨。例如,在某種情況下優先選用x資料來源的資料。不過這部分屬於主資料整合,邏輯上可以認為放在更早的步驟完成。如果業務上有需求,可以建master_a, master_b之類的,在使用時應該是不需要管處理邏輯的。
確認遷移的行和列。首先確認目標列可以相容當前的資料格式。因為是報表,大部分是浮點數值型變數,應該比較容易達到這個要求。
另外要確認關鍵的id指標(用來篩選行),用於辨識行的。
通常哪類報表需要遷移?
與某個使用者或檔案關聯的個性化報表需要遷移。彙總型的大不了重新灌一次資料就可以了。
以上基本是原則和方法,以後有機會我補充例項
Java設計模式菜鳥系列 七 命令模式建模與實現
命令模式 command 將 請求 命令 口令 封裝成乙個物件,以便使用不同的請求 佇列或者日誌來引數化其物件。命令模式也支援撤銷操作。命令模式的目的就是達到命令的發出者和執行者之間解耦,實現請求和執行分開。示例 以咱去餐館吃飯為例,分為3步 1 和小二說,來個宮保雞丁 顧客發出口令 2 小二來了一...
Java設計模式菜鳥系列 九 外觀模式建模與實現
外觀模式 facade 是為了解決類與類之間的依賴關係的,像spring一樣。能夠將類與類之間的關係配置到配置檔案裡,而外觀模式就是將他們的 關係放在乙個facade類中,減少了類與類之間的耦合度,該模式中沒有涉及到介面。演示樣例 外觀模式,也稱門面模式 長處 為了解決類與類之間的依賴關係。減少了類...
Java設計模式菜鳥系列 七 命令模式建模與實現
命令模式 command 將 請求 命令 口令 封裝成乙個物件,以便使用不同的請求 佇列或者日誌來引數化其物件。命令模式也支援撤銷操作。命令模式的目的就是達到命令的發出者和執行者之間解耦,實現請求和執行分開。演示樣例 以咱去餐館吃飯為例,分為3步 1 和小二說,來個宮保雞丁 顧客發出口令 2 小二來...