2016-02-04 21 views
-1

我觀看了很多firebase的非標準化結構,但無法找到像eBay或craigslist這樣的大型網絡應用的正確方法。Firebase結構的ebay或craigslist喜歡的網站

如果您以ebay或craigslist爲例。你將如何建立結構以提高數千/數百萬項目/類別的效率?

這是正確的方法嗎?

"users":{ 
    $userID: { 
    ... 
    } 
}, 
"categories": { 
    $categoryID (01): { 
     "name": "computers" 
     "subcategories": { 
      $subCatID: { 
      "name": "apple" 
      } 
     } 
    }, 
    $categoryID (02): { 
     "name": clothes 
     ... 
    } 
}, 
"items": { 
    $id: { 
     "name": "iMac 27", 
     "category": { 
      $categoryID 
      $subCatID 
      .... 
     }, 
     "seller": $userID, 
     ... 
    } 
} 

什麼,我不明白的是,如果你想獲得一個特定的項目,你需要首先從「項目」樹下載所有的項目?這是否會導致數百萬項目的性能問題?

非常感謝您的幫助。 斯特凡

+1

存儲數百萬個項目是非常有效的操作。閱讀或查詢數百萬項目不是。一切都取決於你想如何訪問數據。請參閱本文以獲取有關模式和注意事項的詳細介紹:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ –

+0

如果您知道要獲取哪個項目,那麼這是一個簡單的讀取:'ref.child('items')。child(itemId')'。 –

+0

交叉帖子:https://groups.google.com/forum/#!topic/firebase-talk/qxF5d7eNFSE –

回答

1

如果你知道要獲取的項目,你可以用一個簡單的讀得到它:

ref.child('items').child(itemId') 

這直接訪問的孩子,不需要數據庫考慮的所有項目,也不需要客戶端下載所有項目。數據庫只是直接從磁盤加載正確的項目,並僅將該項目返回給客戶端。