neo4j Postgres图形与TypeORM或更好的东西?

2lpgd968  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(191)

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

  1. class Model {
  2. id: number:
  3. alias: string;
  4. schema: Record<string, any>;
  5. }

其中schema可以是:

  1. {
  2. someField: '$model_alias',
  3. otherField: {
  4. nestedField: '$other_model_alias'
  5. }
  6. }

示例数据:

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

正如你所看到的,json字段schema包含的字段可能会引用另一个带有模式的模型,因此,可能会有很多嵌套,关系可能是多对多的。
有没有可能用Postgres实现这样的结构,或者应该使用一些替代方案?我需要可能的简单管理结构和非常快速的查询(得到树的孩子或得到树的父母)。

  • 谢谢-谢谢
s2j5cfk0

s2j5cfk01#

选择正确的数据库类型在最好的情况下也是很棘手的。你能提供更多关于你要做什么类型的查询的信息吗?你的数据集有多大?
如果您的需求是独占地获取模型的父模型和子模型,那么关系数据库(如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/
我不建议使用文档存储来存储像这样关系很大的数据,因为管理文档之间的关系必须由用户手动处理,而这通常会带来更多的麻烦。

相关问题