海量資料的查詢快取問題

lovejdon發表於2012-03-07

現在面臨一張使用者使用記錄表,可能達到千萬級的資料量,使用者在基本操作完成後(插入資料),都會查詢下記錄。使用者本身的使用記錄數不多,而且也能通過時間來控制查詢的條數,但是我們用的是MEMCACHED相對資料進行快取,但是遇到了一個問題。

個人認為快取僅僅作為一種附屬品而存在,是為了提高效能,應該不深入到業務邏輯裡面。快取伺服器的shutdown也不應該影響主業務的執行。

快取的應用在頻繁訪問資料,而且更新不是特別頻繁的資料上才能達到很好的效果。存入庫裡的資料不會出現更新的情況,只有使用者增加和刪除相應使用記錄的情況。

這裡我有個問題:如果當前使用者的查詢已經在快取中存在,但是使用者插入一條記錄,這個時候是要更新快取,或者是將原有快取清除。

1.如果更新快取:這種方式就會存在更新快取失敗的情況,而此時也不能讓庫中資料回滾(干擾業務),但是使用者再次查詢就會到快取中獲取。資料不一致的情況出現。

2.如果將原有快取清除,也會遇到清除失敗的情況,此時也會遇到不一致。

快取有個失效策略和失效時間,但是我們這個專案大量依賴於快取,而且設定為快取設定為不失效。所以才會在很多地方都是來操作快取更新欄位,但是一旦更新快取失敗,資料就永遠也對應不上了。對此我強烈的反對此做法,但是決定不了什麼。

所以請問各位在利用快取處理海量資料問題上有什麼好的方法來做?

相關文章