程式語言:Ruby on Rails
設計應用給排程的資料表。
資料表:scheduled_task
create_table :scheduled_tasks do |t|
t.string :name, null: false
t.string :task_class, null: false
t.string :task_method, null: false
t.jsonb :arguments
t.string :status, default: "pending"
t.datetime :scheduled_at, null: false
t.datetime :completed_at
t.jsonb :error_message
t.integer :priority, default: 0
t.timestamps
end
分享一段關於設計應用給排程背景程式的資料表的思考。
設計排程背景程式的資料表時,關鍵在於同時考慮效能和可維護性。
經過努力思考與研究後,一個良好設計的排程任務資料表應具備以下核心欄位:
- 任務識別碼(Task_ID):唯一識別每個排程任務
- 任務名稱(Task_Name):具描述性的名稱
- 執行時間(Schedule_Time):設定任務執行時間,支援Cron表達式
- 優先級(Priority):決定任務執行順序
- 狀態(Status):記錄當前狀態(等待、執行中、完成、失敗)
- 最後執行時間(Last_Run):上次執行的時間戳記
- 重試次數(Retry_Count):任務失敗後嘗試的次數
- 逾時設定(Timeout):任務最長允許執行時間
- 參數(Parameters):JSON格式存儲任務參數
- 執行結果(Result):執行結果的摘要信息
這樣的設計能夠支援複雜的排程需求,同時提供足夠的監控和追蹤能力。
在實施過程中,建議額外創建相關的日誌表,
以保留詳細的執行歷史記錄,便於後期的問題排查和性能分析。