首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5,用Postgres数组替换连接表

Rails 5,用Postgres数组替换连接表
EN

Stack Overflow用户
提问于 2017-07-13 00:36:32
回答 2查看 569关注 0票数 2

假设我们有一个执行“作业”的系统。这些作业可以连接到我们称为“集成”的序列中,这些序列实际上是一组有序的作业。

经典的解决方案是连接表:

代码语言:javascript
复制
integrations: id, name
jobs: id, name, commands
integrations_jobs: id, integration_id, job_id, integration_order

其中integration_order是该integration_job在集成中的位置。

如果我们只使用postgres数组呢?

代码语言:javascript
复制
integrations: id, name, [job_id1, job_id2, job_id3]
jobs: id, name, commands

使用数组而不是连接表有什么明显的缺点吗?我们在Heroku上使用了Rails 5和Postgres。

EN

回答 2

Stack Overflow用户

发布于 2017-07-13 01:06:43

您可以使用Postgres数组或JSON或枚举字段,但这会影响性能。

Look here

票数 0
EN

Stack Overflow用户

发布于 2017-07-13 13:31:25

第一个缺点是您不能通过查询来查找集成中的作业,例如:

代码语言:javascript
复制
jobs table
id
1
2

integrations table
id, name, job_ids
1, i1, [1,2]
2, i2, [2]

因此,如果您想要查找id为2的作业的集成,则需要扫描集成表并检查job_ids的值是否为2。如果集成表有很多记录,这是一个很大的性能问题。

如果你有一个连接表,这只是一个非常简单的查询,而且速度更快。我不认为使用连接表有什么问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45063274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档