默认值和限制

使用 GDS 库,我们为重复配置提供了便利性和安全性。具体来说,我们为那些您希望在不同过程调用之间重复使用的配置项提供了默认配置。并且我们提供限制作为限制资源使用的一种方式,以便用户不会压垮底层系统。

一个很好的例子是并发性,这是一个适用于许多 GDS 过程的配置参数。您可能希望设置一个全局默认值,以便在调用过程时,您会自动获得该配置的默认值,而不是内置值。

此外,假设在同一系统上有多个用户,您可能希望限制每个用户的并发性,以便当他们同时工作时,不会过度压垮并减慢系统速度。

最后,我们全局或按用户提供默认值和限制。通过优先使用个人设置来进行冲突解决。

默认配置值

作为 GDS 的用户,您通常希望在不同的过程调用中使用相同的通用参数。我们允许您设置默认值以避免重复操作。

设置默认值

您可以通过调用 gds.config.defaults.set 过程来设置默认值。您需要提供一个键值对和一个可选的用户名。

在这里,我们将 concurrency 参数设置为用户 Alicia 的默认值为 12;这意味着 Alicia 不需要指定并发参数,除非在特殊情况下。

设置默认值
CALL gds.config.defaults.set('concurrency', 12, 'Alicia')

我们还将 deltaThreshold 设置为 5%。

CALL gds.config.defaults.set('deltaThreshold', 0.05, 'Alicia')

并且 Alicia 始终希望以 sudo 模式运行;她是一位高级用户。

CALL gds.config.defaults.set('sudo', true, 'Alicia')

每次 Alicia 运行使用 concurrencymaxIterationssudo 配置参数的算法时,都会应用这些配置值。例如,请参阅 K-最近邻

如果您省略用户名参数,则默认值将全局设置,适用于所有用户。

列出默认值

您可以通过调用 gds.config.defaults.list 过程来检查默认设置。您可以提供可选的用户名和/或键参数来筛选结果。

以下是一个列出 Alicia 的 concurrency 默认设置的示例。

查询个人默认值并按键过滤
CALL gds.config.defaults.list({ username: 'Alicia', key: 'concurrency' })

假设 Alicia 没有为concurrency设置任何值,如果存在全局设置,我们将列出全局设置。因此,输出的始终是有效设置。

表 1. 结果

"concurrency"

12

我们也可以省略过滤器,查看 Alicia 的所有默认设置

查询个人默认值,不使用过滤器
CALL gds.config.defaults.list({ username: 'Alicia' })
表 2. 结果

"concurrency"

12

"deltaThreshold"

0.05

"sudo"

true

同样,如果省略用户名参数,我们将列出所有用户的全局默认值。

限制

在设置或列出默认值时,我们确保只有管理员才能设置全局默认值。我们还确保只有用户本人或管理员才能设置或列出该用户的个人默认值。

配置值的限制

在具有多个用户的系统中,您需要确保这些用户不会相互干扰,更糟糕的是,不会压垮系统。为了实现这一点,我们对配置值提供了限制。

设置限制

您可以通过调用gds.config.limits.set过程来设置限制。您需要提供一个键值对和一个可选的用户名。

这里我们为用户 Kristian 的concurrency参数设置了 6 的限制;这意味着 Kristian 将永远无法为并发参数指定高于 6 的值

设置限制
CALL gds.config.limits.set('concurrency', 6, 'Kristian')

我们还禁止 Kristian 以sudo模式运行

设置限制
CALL gds.config.limits.set('sudo', false, 'Kristian')

每次 Kristian 运行使用concurrencysudo配置参数的算法时,都会检查这些限制。例如,请参阅Page Rank。他只能使用 6 或更低的concurrency设置,并且永远无法以sudo模式运行。

如果您省略用户名参数,则默认值将全局设置,适用于所有用户。

列出限制

您可以通过调用gds.config.limits.list过程来检查限制设置。您可以提供可选的用户名和/或键参数来过滤结果。

这是一个列出 Kristian 的concurrency限制设置的示例

查询个人限制并按键过滤
CALL gds.config.limits.list({ username: 'Kristian', key: 'concurrency' })
表 3. 结果

"concurrency"

6

"sudo"

false

我们使用上面描述的与默认值相同的约定

  • 默认情况下,我们列出全局限制设置

  • 您可以使用可选的username参数来列出给定用户的有效设置

  • 个人限制优先于全局限制

  • 您可以使用可选的key参数进行过滤

不过,在权限方面我们有一些细微的差别

  • 只有管理员才能设置限制

  • 只有管理员或用户本人才能列出个人限制