我必须互连不同的数据库,关系数据库(postgresql)和nosql数据库(mongodb)。
有一些半结构化的实体,然后,我把它们放在mongoDB中,我有一些关系模式,从逻辑上讲,它存储在postgres中。
问题:我需要绑定这些实体/文档/其他的一些连接。
架构:
解决方案:
1 - 将ID设为“外键”:
Postgres实体[id,name, mongo_objectId ....]
MongoDB文档[objectid,name, postgres_entityId ....]
我不喜欢这些解决方案,因为:
这不友好
2 - 生成友好的字符串键以绑定模式:
Postgres实体[id,name, key ....]
MongoDB文件[objectid,name, key ....]
键是字符串,独特和友好,我的意思是如果名称是“MichàélKnïght”,关键是“michael-knight”或“michael-knight_ {counter}”,如果它已经存在于数据库中。
我的问题:
是否会导致性能问题?我认为整数值更适合索引......
答案 0 :(得分:0)
在MongoDB中有围绕ObjectId的内部优化,它比等效字符串更紧凑。主键通常是不可变的,所以我认为解决方案1不是一个坏主意。