跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

CREATE TTL

CREATE TTL语句根据图元素类型为图元素设置 TTL(存活时间,全称为 Time-to-live)时长。目前,仅支持为图中的边设置 TTL 时长。

可选择以下任意方法来指定图:

  • 在本语句前添加 USE 子句来设定工作图。
  • 提前使用 SESSION SET 设置当前会话的图。

若两种方法均使用,则以 USE 子句中的指定为准。若均未使用,则报错。

悦数图数据库开发版通过 TTL 机制为图元素设置生命周期。在生命周期到期后,这些图元素将无法在查询中被查到,但它们不会立即从 Storage 服务中删除。实际的删除操作将在下一次 COMPACT 作业中执行。

Note

对非默认 Schema 或其中的对象执行操作时,用户既要通过隐式访问规则或显式USAGE授权获得该 Schema 的访问权,也要具备目标操作所需的权限。Schema 访问校验和目标操作所需的权限校验相互独立,满足其中一项不能替代另一项。Schema 访问控制不适用于临时图、内置 Procedure 和内置 Function。更多信息,请参见 Schema 访问控制。

前提条件

  • 已创建图,且图中至少有一个边类型的属性的数据类型为ZONED DATETIME。更多信息,请参见 CREATE GRAPH。
  • 若要设置 TTL 时长,必须是图的所有者,或具备在图上执行ALTER操作的权限,或具备在当前 Schema 执行ALTER ANY GRAPH操作的权限。更多信息,请参见角色与权限。

限制条件

  • TTL 时长只能设置在边类型的属性上,这些属性被称为 TTL 属性。
  • 每个边类型只能指定一个 TTL 属性。
  • TTL 属性的数据类型必须为ZONED DATETIME。
  • TTL 时长只能以天、小时、分钟、秒、毫秒或微秒为单位指定。

语法

create_ttl_statement
CREATE TTL ON EDGE edge_type_name ( property_name ) ttl_duration

create_ttl_statement ::=
    'CREATE' 'TTL' 'ON' 'EDGE' edge_type_name '(' property_name ')' ttl_duration

参数

edge_type_name

待设置 TTL 时长的边类型的名称。

property_name

待设置 TTL 时长的边类型的属性的名称。该属性的数据类型必须为ZONED DATETIME。更多信息,请参见时间点。

如果该属性的值和ttl_duration指定的 TTL 时长相加的时间早于当前时间,则具有此属性的边将被视为已过期,并将在下一次 COMPACT 操作中被删除。

如果属性的值为NULL,则具有此属性的边永不过期。

ttl_duration

指定 TTL 时长的时间段。该时间段取值必须大于 0 并使用函数duration()以天、小时、分钟、秒、毫秒或微秒为单位指定。

示例

以下示例基于示例数据集。

为边类型设置 TTL 时长

'''
// 为边类型 Watch 添加数据类型为 ZONED DATETIME 的属性
ALTER GRAPH TYPE movie_type { 
                            ALTER EDGE TYPE Watch ADD PROPERTIES {ttl_test ZONED DATETIME DEFAULT zoned_datetime("1990-01-01T05:06:07.0890", "%Y-%m-%dT%H:%M:%S") } 
                        }
'''

'''
// 为边类型 Watch 设置 TTL 时长
USE movie CREATE TTL ON EDGE Watch(ttl_test) duration({days:1, hours:2, minutes:3, seconds:4, milliseconds:5, microseconds:6})
'''

更多信息

SHOW TTLS