2016-04-24 31 views
0

我有一個使用Spring Framework構建的REST API,並且爲了提高我的端點之一的性能,我正在考慮使用內存數據庫來加快檢索速度。內存中的冷啓動

我需要處理2案件

  1. 載入啓動時在內存中的數據庫(冷啓動)

  2. 更新數據

對於第二個,我正在考慮只使用Spring的調度器來定期更新數據。

但是對於冷啓動,我不知道什麼是最好的解決方案,因爲加載所有的初始數據可能是一個漫長的過程。

+0

異步加載。 – SMA

+0

您是否想過一次加載整個數據庫,或者只是在處理請求時訪問每個記錄時懶惰地填充緩存?數據庫總是足夠小以適應內存? –

+0

你想讓數據持久嗎? (即,如果數據在Web應用程序關閉或數據應保存在磁盤上時消失,那麼這樣可以嗎?)。如果是第二個,那麼最好使用內存緩存在磁盤上的數據庫而不是內存數據庫。 – Jesper

回答

0

選擇取決於您的SLA。如果您選擇在API可用之前完成填充,則會選擇犧牲可用性以防止延遲響應。如果您選擇在數據庫異步填充時使您的API可用,那麼在填充數據庫時,您將在前幾個請求中犧牲響應時間。您的SLA中最重要的是哪一個?正常運行時間或響應時間?

如果你將不得不履行請求的服務器集羣,沒有任何優勢,以優化運行時間,因爲當你的服務器將它的時間同步填充數據庫運行的服務器將處理請求,如果你填充它以異步方式,你的客戶如果剛剛啓動的服務器開始接受請求,則會遇到不必要的延遲。

另外考慮一個數據庫是否足夠小以適應內存(爲了討論的緣故,我只知道這是一個假設),它可能不會花費足夠的時間來加載以產生很大的差異。