2012-04-15 124 views
0

我有一個名爲User的模型,並且一個用戶有一個relatedUsers屬性,它的一般格式是一個整數數組。現在,有些時候我想檢查用戶的relatedUsers數組中是否存在某個數字。我看到這樣的方法有兩種:Google App Engine存儲爲列表vs JSON

  1. 使用與索引值(或者不是)一個標準的Python列表,只需要運行IN詢問,看看是否這個數字在那裏。

  2. 擁有該用戶的密鑰,取回屬性relatedUsers的值,這是一個JSON字符串格式的數組。解碼字符串,並檢查數字是否在那裏。

哪一個更有效?數字1會比選項2花費更多的讀數嗎?第一個數字會比第二個數字寫出更多的成本,因爲索引每個數值需要花費一筆費用。如果我不索引 - 哪種解決方案會更好呢?

+0

你不需要在查詢 - 你只需要一個平等查詢。 – 2012-04-17 07:40:02

回答

4

這是你的成本VS能力,選擇明智的:

  1. 在索引列表把值將是昂貴得多。對於列表中的每個值,您將產生一次寫入的費用,根據您的用戶擁有多少朋友,這可能會爆炸。如果您擁有某些類型的組合索引,則此成本爆炸可能會變得更糟。好的一面是,您可以針對此信息運行查詢:例如,您可以查詢與特定用戶成爲好友的用戶列表。

  2. 這裏沒有額外的索引或寫入成本。問題是你失去了查詢功能。

如果你知道你只打算只在朋友的當前用戶的名單上做檢查,通過各種手段去與選項2。否則你可能在你的設計多了幾分謹慎看。

相關問題