Postgres 图与 TypeORM 或更好的东西?

问题描述 投票:0回答:1

我需要存储并构建下一个结构的快速查询:

class Model {
 id: number:

 alias: string;

 schema: Record<string, any>;
}

哪里

schema
它可以是:

{
  someField: '$model_alias',
  otherField: {
    nestedField: '$other_model_alias'
  }
}

示例数据:

{ id: 1, alias: "model_one", schema: { field1: "test", field2: "demo" } }
{ id: 2, alias: "model_second", schema: { someField: "$model_one", otherField: { nestedField: 5 } }
{ id: 3, alias: "model_third", schema: { field5: "$model_second", field6: "$model_one", field7: "$model_fourth" } }
{ id: 4, alias: "model_fourth", schema: { field8: "$model_second" } }

如您所见,json 字段

schema
包含可能引用另一个具有模式的模型的字段。因此,可以有很多嵌套,并且关系可以是多对多。

是否可以使用 Postgres 实现这样的结构,还是应该使用其他替代方案?我需要能够轻松管理结构和非常快速的查询(获取树子节点或获取树父节点)。

mongodb postgresql neo4j structure typeorm
1个回答
0
投票

即使在最好的情况下,选择正确的数据库类型也很棘手。您能否提供有关您要执行哪些类型的查询的更多信息?您的数据集有多大?

如果您的要求是专门获取模型的父级和子级,那么像 postgres 这样的关系数据库就可以做到。如果关系是多对多,您将有一个桥接表(https://dzone.com/articles/how-to-handle-a-many-to-many-relationship-in-datab) ,并且能够对此进行有效的查询。

如果您在关系之间进行大量的多跳遍历,您可能确实需要查看图形数据库以避免昂贵的连接。 Postgres 甚至有一个插件可以实现这一点:https://www.postgresql.org/about/news/announcing-age-a-multi-model-graph-database-extension-for-postgresql-2050/

我不会推荐像这样高度相关的数据的文档存储,因为管理文档之间的关系必须由用户手动处理,而这通常会带来更多麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.