Android 如何为instagram等按日期排序的帖子提要构建firestore数据库?
我的应用程序允许用户销售和购买其他用户发布的产品 我有一个通用的最新帖子片段,在这里我显示了所有用户的最新帖子,不管你是否关注他们。 因此,使用这个aproach(下表),由于firestore中的索引,按时间戳排序的最后30篇文章非常快Android 如何为instagram等按日期排序的帖子提要构建firestore数据库?,android,google-cloud-firestore,Android,Google Cloud Firestore,我的应用程序允许用户销售和购买其他用户发布的产品 我有一个通用的最新帖子片段,在这里我显示了所有用户的最新帖子,不管你是否关注他们。 因此,使用这个aproach(下表),由于firestore中的索引,按时间戳排序的最后30篇文章非常快 users(collection){ user1(document){ username: rocky following:[user2,user3....] // or subcollection with users
users(collection){
user1(document){
username: rocky
following:[user2,user3....] // or subcollection with users as documents
}
user2(document){
username: paul
following:[user2,user5....] // or subcollection with users as documents
}
}
posts(collection){
post1(document){
author:user1
timestamp:...
imageurl:...
...
}
post2(document){
author: user55
timestamp:...
imageurl:...
...
}
}
但我也有一个feed片段,它的工作原理与instagram的feed完全相同,它显示了我跟踪的人按日期排序的帖子
我在想,我可以将用户关注的用户存储在一个列表中,或者在每个用户中创建一个子集合,然后当我加载应用程序时,会得到用户ID列表,这就是我不知道如何处理的地方
假设我得到一个5k id的列表,现在我必须搜索所有包含每个id的帖子,获取帖子并按日期排序
我得读5公里,还要读更多的文章。有没有一种有效的方法
我重新研究了一下,发现一个好方法是对数据进行非规范化,并添加一个新集合,如下所示:
feed(collection):{
user1(document){
posts(collection){
post1(document){
//post info
}
post2(document)
//post info
}
}
}
但和instagram一样,该应用程序的主要重点是创建帖子,让人们看到。
因此,大多数用户每天都会创建许多帖子
因此,如果我有100个用户,拥有10000个跟帖者,这100个用户每天创建3篇帖子
我希望有300万篇文章只为那100个用户写,如果他们将来编辑那篇文章的话,还要多写几篇,这听起来很吓人
有更好的方法吗
也许我的想法是错误的,如果我有100名用户和10000名追随者,这意味着我的应用程序非常活跃,所以我应该能够创造收入来弥补这一成本
抱歉发了这么长的邮件。非常感谢您的帮助。我认为这个答案可能会对您有所帮助。如果我以这种方式组织帖子,我需要获得所有用户按日期订购的我的应用程序中最近的100篇帖子(无论作者是谁)。我需要使用组集合查询吗?因为该系统使用了一个索引,我可以按时间戳排序,就像我在顶级集合中的帖子是文档,里面的作者id和日期是字段一样,对吗?是的,我认为这可能行得通。所以首先我查询我跟踪的人的uid,现在我如何查询并告诉数据库:嘿,搜索所有按日期排序的userPost,如果您看到authorId与userFollowing中的任何uid匹配,那么就获取该帖子。我可以像你说的那样,得到我跟踪的每个用户的最后3篇帖子,但是如果一个用户的最后一篇帖子是1年前,我会得到他的最后3篇帖子,但我不会使用它们。该应用程序并不想从我关注的每个用户那里获得相同数量的帖子,它只想让我说一下我关注的所有用户的最后20篇帖子。这是可能的,还是我复制这些帖子更好?