客户端扇出数据结构

时间:2017-04-19 11:18:31

标签: database firebase data-structures firebase-realtime-database

我将在Google的Firebase中实现我的粉丝模型,但我的问题只是理论上的,所以答案并不需要以Firebase术语表示。

我正在创建一个我认为应该具有类似于Tinder的数据结构的应用。这个想法一次只能在您的Feed中显示一个帖子;然后你接受它或拒绝它,另一个弹出,依此类推。我的问题是如何准确地构建数据,以便在应用程序扩展时保持快速。

我现在所拥有的是一个名为" Posts"包含有史以来的每一篇文章。然后,应用程序查询一个帖子,该帖子将根据" ViewedPosts"的用户节点进行检查。因此,如果查询的帖子已经被用户接受/拒绝,则查询另一个帖子,直到找到一个看不见的帖子。这显然不是一个很好的解决方案,因为如果有很多帖子,通过它们的查询将会很慢(特别是如果已经看到很多帖子并且查询必须重复多次)。

我看到了这篇文章:The Firebase Blog: Client-side fan-out for data consistency这让我想到了在每个用户中创建一个节点,这是"看不见的帖子"并且每次有人上传新帖子时,都要将其放入每个用户看不见的文件夹中。这解决了查看器方面的问题,但要上传,必须下载应用程序中所有用户的列表,然后写入每一个用户。

所以问题是,这些之间是否存在中间立场,我可以用它来准确地做到这一点?

谢谢。

编辑:

有人问我的数据结构:

{
"posts": {
    "jkldsahjfkds": {
        "title": "Simple Post",
        "description": "This is my first post",
        "numberOfImages": "2",
        "price": "14.99",
        "timestamp": "51782345",
        "postedBy": "-hjd673bbewi7n",
        "name": "Ryan Jacobs"
    }
    "-nisd7enskwes" : {...}
    "-asdjfhk7385i" : {...}
    "-sdfh49506ndk" : {...}
    }
"users": {
    "user1": {
        "postsViewed": {
            "-nisd7enskwes": 51784645,
            "-sdfh49506ndk": 51782329
        }
        "postsLiked": {
            "-sdfh49506ndk": 51782329
        }
        "userData": {
            "name": "Albert Jones",
            "bio": "Hi! Jow is everyone doing!?",
            "location": "London"
        }
    }
}
}

0 个答案:

没有答案