我正在通过Firebase构建应用,我对数据库节点的可扩展性有疑问。我分散了我的数据,但是当我尝试对帖子进行排名时(基于#like),我似乎无法找到一个好的解决方案。我有一个页面,其中包含过去30天内最受欢迎的10首歌曲,但如果该应用扩展,我对此查询有一些担忧。在这一点上,发布了几百到几千首歌曲,但如果该节点包含几百万首呢?
结构是这样的:
"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'),但如果有400万上传呢?我考虑每隔30天生成一个新节点(例如totalSongs2,totalSongs3),以便在该时间范围内有一个由上传组成的节点,但这看起来有些奇怪。 Firebase查询此类节点有多难,我该如何以不同的方式执行此操作?
答案 0 :(得分:0)
这取决于您希望如何组织JSON结构。我建议在对应日期的情况下实现它,当您展开子节点时,您有唯一的标识符,列出在该时间段内上传的歌曲总数。
任何更复杂的更多子节点都会使代码变得混乱。 Firebase查询任何内容并不困难,问题可能是您的并发连接的任务性能有多大?免费套餐有限,但购买套餐无限制。
JSON不需要太多磁盘使用,但如果你在免费软件包中安装了10个数据库,Firebase结构可以更好地用于scabability。