繁体   English   中英

在数百万行上具有大深度的 Postgres 递归查询的性能如何? 我应该改用图形数据库吗?

[英]What is the performance of a Postgres recursive query with a large depth on millions of rows? Should I use a graph database instead?

我正在尝试决定是否应该使用图形数据库或关系数据库。 我对 SQL 还很陌生,所以我不确定如何测试它,因为我还没有数百万行数据,但我认为这可能会成为一个问题,所以我正在寻找人们的一些轶事经验,如果可能的。

有谁知道每个表中有数百万行的 Postgres 数据库的递归查询的性能? 性能通常是否足够好,能够通过 web api 在 100-200 毫秒内查询数据库中的数据,并且深度可能很大,比如说 30? 深度是未知的,它可能是 1 或一直到 30 甚至更大的东西。

我的数据目前很好地映射到关系数据 model,因为它本质上是关系的,因此我倾向于 Postgres,但我想执行一个特定的递归查询,这让我倾向于图形数据库。 这些表(比如 5-6 个)在生产中很可能是数百万行,并且查询的深度基本上是未知的。 这种查询的一个例子是:

Depth 1: 

EntityA transacts with -> EntityB

Depth 2:

EntityB transacts with -> EntityC
EntityB transacts with -> EntityD

...

Depth n:

until the last entities (leaves) don't transact with any other entities. At each depth, the entities can transact with many entities and the depth is unknown.

我应该仅仅因为这 1 个特定查询而使用图形数据库,还是 Postgres 可以使用它的 RECURSIVE 命令在合理的时间内处理这个问题?

每当您在 SQL 系统中处理递归 JOIN 时,您实际上是在处理图表并试图弄清楚如何使用 SQL 导航图表。

在这种情况下,使用图形数据库是更好的选择。

有关更完整的答案 - 请参阅相关问题的其他答案。 使用 Neo4j 的任意查询的性能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM