我正在重構我當前的模式,這對我來說太抽象了。重構我的數據庫模式
我用自制的監控軟件監控我的服務器。該軟件將HTTP請求發送到Rails Web服務器,並提供大約10個不同字段的信息,以便我可以快速瀏覽所有內容。
我目前的執行情況:
server [id, name, created_date, edited_date, ..., etc ]
status_update [id, server_id, field1, field2, field3, created_date, edited_date, ..., etc]
我把服務器爲用戶和狀態更新爲鳴叫。我刪除了比第十個更早的server_id上的任何status_update,以防止增長到無窮大。
雖然我開始遇到一些併發症。我需要顯示索引頁上最新status_update的信息,我需要根據status_update信息對服務器進行排序,我需要存儲某些status_updates中的信息,該信息可能會比10個status_updates舊。我似乎也開始需要將status_updates中的信息存儲在服務器和status_update中,這會在插入時多次觸發數據庫。因此,我期待重構。
我的需求: 我只需要顯示來自最新更新的信息。 接下來的9個status_updates有助於調試系統是否脫機。 我需要能夠根據最近status_update的一些信息進行排序。 我需要數據庫保持小型(Heroku免費)。 理想的性能,除非必要,否則IE不會超過一次。 非複雜的數據庫結構,所以我可以傳遞它。
編輯:額外信息 =>我期待最終監測大約150-200個服務器(很多是業餘愛好,但我很便宜)。除非出現問題,每個監控服務每五分鐘發佈一次。所以,最壞的情況是我每四個小時達到最大容量。
我在想,跟蹤上一次發生X事件的時間以及結果是什麼會很好。因此,跟蹤這些信息將不得不被移到server
模型本身,因爲我正在清除舊記錄,並在一小時左右後丟失信息。雖然回想起來,我可以使用監控服務將這些信息保存在內存中,並且每5分鐘發送一次,或者每次更改時只發送一次。我也可以簡單地修改這些信息,以便處理每個請求的更少信息。哼!
在我看來,你想要做的一切都可以用你目前的結構完成。我沒有看到一個令人信服的理由來重構。什麼是你在這裏看到的最嚴重的問題? –
@ MikeSherrill'CatRecall'查詢非常複雜,我需要訪問數據VIA SQL而不是Active Record。雖然這不是世界末日,但我更願意能夠在Rails中使用AR over SQL。我還需要存儲一些比我保存的'update_status'記錄更長的數據,所以我懷疑我必須將它保存在'server'模型的字段中。我只是覺得在服務器的單個帖子中打兩次DB是低效的。我只是想太多了嗎? – user1870954