人生就是不斷學習,調整與更新持續前進。

處理量大資料排程應用思考v1

程式語言: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

分享一段關於設計應用給排程背景程式的資料表的思考。

設計排程背景程式的資料表時,關鍵在於同時考慮效能和可維護性。

經過努力思考與研究後,一個良好設計的排程任務資料表應具備以下核心欄位:

  1. 任務識別碼(Task_ID):唯一識別每個排程任務
  2. 任務名稱(Task_Name):具描述性的名稱
  3. 執行時間(Schedule_Time):設定任務執行時間,支援Cron表達式
  4. 優先級(Priority):決定任務執行順序
  5. 狀態(Status):記錄當前狀態(等待、執行中、完成、失敗)
  6. 最後執行時間(Last_Run):上次執行的時間戳記
  7. 重試次數(Retry_Count):任務失敗後嘗試的次數
  8. 逾時設定(Timeout):任務最長允許執行時間
  9. 參數(Parameters):JSON格式存儲任務參數
  10. 執行結果(Result):執行結果的摘要信息

這樣的設計能夠支援複雜的排程需求,同時提供足夠的監控和追蹤能力。

在實施過程中,建議額外創建相關的日誌表,

以保留詳細的執行歷史記錄,便於後期的問題排查和性能分析。