1

我必须互连不同的数据库,一个关系数据库(postgresql)和一个nosql数据库(mongodb)。

有一些半结构化的实体,然后,我将它们放在 mongoDB 中,并且我有一些关系模式,从逻辑上讲,将其存储到 postgres 中。

问题:我需要在这些实体/文档/任何东西之间绑定一些连接。

架构

  • Postgres 实体[id,name,....]
  • MongoDB 文档[objectid,name,....]

解决方案:

1 - 将 id 作为“外键”:

  • Postgres 实体[id,name, mongo_objectId ....]

  • MongoDB 文档[objectid,name, postgres_entityId ....]

    我不喜欢这些解决方案,因为:

  • 这不友好

  • 我的意思是,如果我将我的 postgres 迁移到另一种模式,ids 可以改变。

2 - 生成友好的字符串键来绑定模式:

  • Postgres 实体[id,name, key ....]

  • MongoDB 文档[objectid,name, key ....]

键将是字符串,唯一且友好的,我的意思是如果名称是“Michàél Knïght”,则键将是“michael-knight”或“michael-knight_{counter}”,如果它已经存在于数据库中。

我的问题

它会导致性能问题吗?我认为整数值更适合索引...

4

1 回答 1

0

MongoDB 中围绕 ObjectId 进行了内部优化,它比等效字符串更紧凑。主键通常是不可变的,所以我认为解决方案 1 不是一个坏主意。

于 2013-11-12T23:42:50.770 回答