2017-02-18 16 views
0

Я создаю приложение через Firebase, и у меня есть вопрос о масштабируемости моего узла базы данных. Я децентрализовал свои данные, но когда я пытаюсь ранжировать сообщения (на основе # нравится), я не могу найти подходящее решение. У меня есть страница с 10 самыми популярными песнями за последние 30 дней, но у меня есть некоторые проблемы по этому запросу, если приложение масштабируется. На данный момент опубликовано несколько сотен до нескольких тысяч песен, но что, если этот узел состоит из нескольких миллионов?Firebase масштабируемые запросы по ранжированию

структура такова:

"totalSongs" : { 
    "-KHjnJcG2av6nyIEP1Wu" : { 
     "author" : "64df19dd-68fb-43cb-ab1b-b8e9f55cf", 
     "date" : 1463238347457, 
     "key" : "KHjnJcG2av6nyIEP1Wu", 
     "likesCount" : 3, 
     "name" : "anna", 
     "reasonUpload" : "-its good mayne", 
     "uploadTitle" : "A tribe called quest - we got the jazz", 
     "uploadUrl" : "cxN4nKk2cfk" 
    }, 
    "-KHkUAJ48h-3k6HIDOri" : { 
     "author" : "64df19dd-68fb-43cb-ab1b-b8e9f51cf", 
     "date" : 1463249843668, 
     "key" : "-KHkUAJ48h-3k6HIDOri", 
     "likesCount" : 6, 
     "name" : "peter", 
     "reasonUpload" : "-summer vibes", 
     "uploadTitle" : "Kool & The Gang", 
     "uploadUrl" : "2SFt7JHwJeg" 
    } 
} 

выше JSON, показывает две загрузки. Я могу ранжировать их через «LikesCount», и это работает (через angularJS, ng-repeat, orderBy: '-likesCount'), но что, если есть 4 миллиона загрузок? Я думал о том, чтобы создать новый узел (например, totalSongs2, totalSongs3) каждые 30 дней, чтобы иметь узел, который состоит из загрузок в этот таймфрейм, но это кажется несколько странным. Насколько сложно Firebase запросить такой узел и как я могу сделать это по-другому?

ответ

0

4 миллиона загрузок? Я предполагаю, что вы на приобретенном пакете Firebase, чтобы сделать эту огромную сумму.

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

Любое дальнейшее осложнение для большего числа дочерних узлов делает ваш код грязным. Для Firebase нетрудно запросить что-нибудь, проблема может заключаться в том, насколько тяжелая производительность задачи будет вашим одновременным соединением? Для бесплатного пакета есть предел, но он неограничен в приобретенном пакете.

JSON не требует большого объема использования диска, но структура Firebase может быть использована для улучшения устойчивости, если вы делаете 10 баз данных в своем бесплатном пакете.

+0

Спасибо за ваш комментарий. 4 миллиона загрузок - это всего лишь гипотеза, но причина моего вопроса заключается в том, что если это приведет к проблемам в будущем, я бы скорее решил их сейчас. И да, через несколько месяцев я буду использовать приобретенный пакет. – Zizazorro

+1

@ Zizazorro 4 миллиона для приобретенного пакета не должно быть проблемой. пакет покупки содержит запросы SQL-запросов BigQuery, поэтому вы переходите ко многим гигабайтам. Я работаю с Big Data, а BigQuery на Firebase, купленном пакетом, может отлично делать миллионы. Масштабируемость не будет проблемой, Firebase получила это для своих потребителей. – user7568042

+0

Ницца, я это рассмотрю! благодаря – Zizazorro