2011-05-24 62 views
0

我有我的應用程序的情況。SQLite vs內存

假設我有6個用戶,每個用戶最多可以有9個分數條目(即在晚上8點分數爲1000分,黃金收集3個,銀色4個等),例如每個階段的分數和9個階段。

所有這些分數都來自API調用,所以它可以以3 +分鐘的間隔更新。

  • 操作我需要在這個數據做的是
    • 找到最近分鐘,從第4階段。
    • 最大記錄和一些操作,例如增加或減去兩個分數等

所有這6個用戶及其得分記錄已經在數據庫中,在API調用後需要更新。

現在我的問題是:

這是對這類數據的一種更好的方式來保留所有的數據都在NSArray中或NSDictionary中存儲的6個用戶,並找到分鐘(這裏得分的數據)和最大值在該數組中最小最大值算法。

OR

應該從數據庫由類似的查詢採取「WHERE得分< = 200」 AND「WHERE得分> = 200」,總之,2數據庫查詢,其返回最接近的最小和最大記錄中的每個,而不是將所有數據保存在內存中。

我們正在關注的是速度和內存使用情況。問題是,數據庫調用是否快速高效地查找最小值和最大值或者搜索來自數據庫的所有記錄的數組中的最小值和最大值。 所有記錄可以是6個用戶* 9分每個= 54. 更新記錄的時間可以是3分鐘以上。 找到某些值的最小最大值的頻率很高。

如果需要更多細節,請詢問。 在此先感謝。

回答

1

您正在處理如此少量的數據,我無法想象它值得擔心。無論採用哪種方法,您的開發過程都是最簡單的!

編輯:

如果我有很多數據(數百個競爭者)我會使用SQLite的。你可以查詢,如下所示:

SELECT MIN(`score`) FROM `T_SCORE` WHERE `stage` = '4'; 

這樣,你可以讓數據庫句柄爲你做計算,所以你從來沒有來獲取所有的結果。

我的SQL福不是最真棒,但我想你也可以這樣做:

SELECT `stage`, MIN(`score`) AS min, MAX(`score`) AS max FROM `T_SCORE` GROUP BY `stage` 

這將做一個單一查詢所有的計算。

+0

Thanx Amorya! 假設我有一個合理的數據量,那麼你會選擇什麼,數據庫或保存在NSArras/NSDictionaries中的數據? – Sohail 2011-05-24 18:48:06

+0

看我的編輯! :) – 2011-05-25 07:40:05

+0

謝謝Amorya! – Sohail 2011-05-25 11:43:55