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_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})
'''