选项1:为所有用户内容创建一个单独的表。该表中的一列将是groupID,指定发布内容所在的群组。使用groupID创建索引,以便快速搜索特定群组内的内容。所有内容读取/写入都将命中此单个表。
选项2:每当用户创建新群组时,我们动态创建一个新表。类似于group_content_{groupName}。所有内容读取/写入将路由到特定于群组的动态创建表。
选项1的优点:
- 使用单个简单查询操作单个表更容易跨多个群组搜索内容。
- 由于内容表是静态且定义明确的,因此更容易构建简单的跨表查询。
- 由于只有一个表需要维护,因此更容易实现模式更改和索引/触发器等更改。
- 所有读取和写入将分布在众多表中,从而避免了大量流量命中单个表可能导致的任何瓶颈(尽管所有这些表仍在单个DB中)。
- 每个表的大小都要小得多,可以更快地进行查找、模式更改、索引等操作。
- 如果将来想要分片数据库,则如果所有数据已经在不同的表中“分片”,则过渡将更容易。