小编Ayy*_*ppa的帖子

Postgres 是多对多数据 (M:N) 的理想选择吗?

我有一个用例,其中数据是多对多的,并且需要广泛的查询功能。

参与者和事件

一个用户/参与者可以注册多个事件。每个事件可以有很多参与者。这是一个多对多的关系。

考虑这样的数据集。

  • 每个事件可以有 1000 万用户注册。
  • 每个用户最多可以注册 1000 个事件
  • 有 1000 个活动正在运行

需要以下查询:

  • 查询 1. 获取所有注册活动的参与者
  • 查询 2. 获取参与者注册的所有事件
  • 查询 3. 获取参与者即将发生的所有事件

用于处理查询 1查询 2

EventParticipantTable :(eventId,participantId):1000 x 10M 记录

这需要搜索 1000 x 10M 的记录吗?

数据集可以按 eventId 拆分为块,以使其理想地仅扫描 10M 记录,但不确定如何在 PostgreSQL 中处理。

用于处理查询 3

事件表 + EventParticipantTable 加入

这需要连接两个表,其中我首先获取即将发生的事件的 Events 表(基于开始和结束时间戳),并且对于每个匹配的 eventId 需要查找查询的参与者 ID 是否存在于 EventParticipantTable 中。

这需要搜索 1000 个事件 * (1000 * 10M) 个事件参与者表条目?

在这种情况下,每表 1000 x 10M 记录不是问题吗?

postgresql scalability

6
推荐指数
1
解决办法
226
查看次数

标签 统计

postgresql ×1

scalability ×1