2016-06-09 97 views
1

我正在使用Firebase作爲我的應用的後端。我的應用程序將是某種費用跟蹤器。我想我應該重組我的數據,以便我可以輕鬆過濾日期的方式就是這樣。我的firebase數據庫結構會影響加載速度嗎?

UID /費用/分類/年/月/日/唯一鍵/細節

挖到快照會是這樣的

func retrieveData(){ 
    _ = dataRef.observeEventType(.ChildAdded, withBlock: { (snapshotOne) in 

     if let snapshotTwo = snapshotOne.children.allObjects as? [FIRDataSnapshot] { 
      if let snapshotThree = snapshotTwo.children.allObjects as? [FIRDataSnapshot] { 
       if let snapshotFour = snapshotThree.children.allObjects as? [FIRDataSnapshot] { 
        for item in snapshotFour { 
         //retrieve details 
        } 
       } 
      } 
     } 
    } 
} 

我不知道什麼樣的後果是有深入挖掘數據庫以及我的數據庫結構是否正常?任何人都可以建議嗎?

+0

的〔火力地堡文檔建議針對嵌套數據](https://firebase.google.com/docs/database/android/structure-data#avoid_nesting_data),由於各種原因。但像這樣循環快照很好。 '.ChildAdded'加載'snapshotOne','snapshotTwo','snapshotThree'和'snapshotFour'的所有數據。 –

回答

3

任何對數據結構的更改都會影響您的數據庫。

火力地堡寧願展數據 &使用指標來定義複雜的關係:

很多在構建應用程序的時候,這是最好下載列表中的一個子集。如果列表包含數千條或更多的記錄,這尤其常見。當這種關係是靜態的,單向的時候,我們可以使用查詢來獲取數據的一個子集,或者直接在邏輯分組下嵌套條目。

{ 
    "messages": { 
     "john": { 
      "rec1": "Walk the dog", 
      "rec2": "Buy milk", 
      "rec3": "Win a gold medal in the Olympics" 
     } 
    } 
    } 

但是,我們已經知道扁平化數據是一種最佳實踐。所以讓我們來看看爲什麼,通過檢查這個結構在哪裏開始崩潰。如果我們進入更具活力的東西,比如共享聊天室,那麼我們的數據(例如房間列表,消息列表)突然變成雙向關係。 用戶可以屬於一個組,並且組包含用戶列表。解決此數據結構的第一次嘗試可能看起來如下:

{ 
    "users": { 
     "mchen": { "name": "Mary Chen" }, 
     "brinchen": { "name": "Byambyn Rinchen" }, 
     "hmadi": { "name": "Hamadi Madi" } 
    }, 
    "groups": { 
     "alpha": { 
     "name": "Alpha Tango", 
     "members": { 
      "m1": "mchen", 
      "m2": "brinchen", 
      "m3": "hamadi" 
     } 
     }, 
     "bravo": { ... }, 
     "charlie": { ... } 
    } 
    } 

您可以在這裏閱讀更多。

https://www.firebase.com/docs/web/guide/structuring-data.html

數據庫的整體結構是否與您結構來存儲數據。 另請考慮閱讀更多關於安全和規則。

https://www.firebase.com/docs/security/quickstart.html

+0

我確實已經讀過。但我不知道它如何適用於我。所有發佈的費用僅供用戶自己使用。沒有人會訪問它們。 – Chris

+0

所有你需要考慮的是一個或多個關係。 它將直接幫助您加速訪問邏輯組。 –

+0

好吧,這是一對一的關係,我想。因爲你上傳的東西,如果你能看到這一切。所以在這種情況下,我的數據結構應該沒問題?即使由於細節而有很多節點。 – Chris