默认值和限制

通过 GDS 库,我们为重复性配置提供便捷与安全保障。具体而言,我们为那些需要在不同过程调用间重复使用的配置项提供了默认配置。此外,我们还提供了限制功能,旨在限制资源使用,防止用户对底层系统造成过载。

一个很好的例子是并发度(concurrency),这是一个适用于许多 GDS 过程的配置参数。您可以设置全局默认值,这样在调用过程时,系统会自动应用该默认值,而非内置的默认值。

此外,假设同一系统上有多个用户,您可能希望限制每个用户的并发度,这样当他们同时工作时,就不会过度消耗系统资源导致运行缓慢。

最后,我们提供全局或基于用户个人的默认值和限制。如果设置冲突,以个人设置为准。

默认配置值

作为 GDS 用户,您经常需要在不同的过程调用中使用相同的通用参数。我们允许您设置默认值,从而避免重复输入。

设置默认值

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

在此,我们将用户 Alicia 的 concurrency 参数默认值设为 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-最近邻 (K-Nearest Neighbors)

如果您省略用户名参数,则该默认值将针对所有用户进行全局设置。

列出默认值

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

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

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

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

表 1. 结果
键 (key)

"concurrency"

12

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

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

"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. 结果
键 (key)

"concurrency"

6

"sudo"

false

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

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

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

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

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

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

  • 只有管理员可以设置限制

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