这来自Android上下文。我正在使用亚马逊网络服务的sdk来构建一个具有基本社交媒体功能的Android应用程序。我需要存储用户、他们的帖子、错误数据等……我正在考虑这样构建:
一个名为"用户"的大表将为每个用户包含一个项目。然后,每个用户都有大量的属性,存储他们所有的帖子和杂项数据。
但我很想听听其他人对我应该如何最好地构建这件事的看法。我基本上没有这类事情的经验,所以我忍不住怀疑我做错了。
感谢
您可以通过多种方式进行设计。您应该考虑系统的使用模式,以获得可靠且可扩展的设计。
我不会把帖子和用户信息放在同一张表里。相反,我会有一个用户表,可能由某种标识符标识——它可能是用户的电子邮件地址、唯一的帐户id或其他代理唯一密钥。在这个表中存储有关用户的元数据是可以的。然后我会创建另一个帖子表。帖子可能按用户id进行分区,并按时间戳进行排序。您还可以考虑使用另一个更粗略的时间属性,例如日期,并创建一个GSI来按日期和时间索引帖子,以便能够检索最近的帖子。如果你有很多帖子的话,这个粒度也可以是每小时一次。
你应该开始思考:
- 你希望有多少用户?你会有成百上千、数百万的用户吗
- 你预计每天有多少活跃用户
- 一个典型的用户会发多少条帖子
- 帖子是在一天中传播,还是聚集在一起
- 对你来说最重要的方面是什么?快速消息传递/检索?可靠的消息传递/检索?在线/离线消息传递
- 你是否需要支持群组帖子(即多个用户在同一个线程上协作(
祝你好运!