我在當前項目中使用了由oracle數據庫和memcached支持的Rails。寫密集型功能的體系結構
有一個相當沉重的使用的功能,這依賴於單個數據庫視圖用作數據源,並且該數據源在內部具有內其它數據庫視圖和表。
這是一個虛擬數據庫視圖,能夠從一個地方訪問所有內容,而不是物化數據庫視圖。
用戶大多數時候如果他們正在尋找更新的功能,那麼讓數據保持最新是非常重要的。
當從這一觀點獲得數據,我內連接安全表視圖(安全表不是視圖本身的一部分),它包含了我們用來控制上更細化的級別的數據訪問某些字段。例如,安全表具有user_id, prop_1, prop_2
列,其中prop_1, prop_2
是數據庫視圖上可用的列,user_id
是登錄用戶。有些用戶在安全表中有相同的道具說prop_1 = 1 and prop_2 = 1
,但也可以有prop_1
像其他用戶,但有不同prop_2
像prop_1 = 2 and prop_2 = 1
。 prop_1和prop_2有很多不同的組合,把它們想象成一個FK到另一個表格,這樣可能有很多條目。
現在,檢索應用程序中的記錄的時間差不多是10秒,這很慢。我正在考慮替代方法。
第一件事,我雖然是物化視圖,但由於用戶做頻繁的更新,它可能不是最好的選擇,因爲刷新視圖可能需要一段時間。
我想過的第二件事是緩存,使用prop_1
和prop_2
組合作爲底層數據的組合鍵,因爲許多用戶具有相同的組合,並且具有相同組合的人可以訪問相同的數據。
但是這種方法可能需要更多的代碼重寫和邏輯在片段中從一個位置使用一個查詢保存和檢索數據,而不是像在數據庫視圖。
在你的經驗,你是怎麼處理相同/相似的問題?還是有更好的方法可以嘗試?
對於你們想要問的那些人,你們嘗試了些什麼。我首先想到解決方案,從可靠的資源和更有經驗的人那裏收集信息,然後我會做出明智的決定並開始實施。實施第一,思考第二,事實證明這麼多次是錯誤的
您的問題似乎暗示加入安全表是導致性能下降的原因。沒有那個連接,需要多少時間來檢索相似的記錄? –