2016-02-04 1 views
-1

Я наблюдал за многими денормализационными структурами для firebase, но не могу найти правильный путь для крупных веб-приложений, таких как ebay или craigslist.Структура пожарной базы для 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') 

Это напрямую обращается к ребенку и не требует базы данных, чтобы рассмотреть все детали, а также не требует клиент для загрузки всех предметов. База данных непосредственно загружает правильный элемент с диска и возвращает только этот элемент клиенту.

Смежные вопросы