跳到主要内容
版本:Nightly

semantic_relationships

semantic_relationships语义图的边集合:实体之间带类型、有时间范围的关系。

这张表是计算出来的,不是存储的。扫描它时,会配对 trace span、根据声明表同一行中的实体身份派生关系,并把结果与 semantic_relationships_declared 的行 union 起来。它是只读的:INSERTCREATEALTERTRUNCATEDROP 都会被拒绝。

SELECT src_id, dst_id, rel_type, provenance, request_count, error_count
FROM greptime_private.semantic_relationships
WHERE observed_at >= now() - INTERVAL '15' MINUTE
ORDER BY dst_id;

四个时间列对派生边和声明边含义不同:

派生边声明边
observed_at观测到该边的 60 秒时间桶边的生效起点与查询窗口下界中较晚的那个
window_start该时间桶的起点valid_from,为 NULL 时取声明时间
window_endwindow_start + 60 秒valid_until,为 NULL 时取查询窗口的上界
fresh_until等于 window_end等于 window_end

也就是说,声明边覆盖的是它的整个有效期,而不是一个 60 秒时间桶,其 window_startwindow_endfresh_until 在读取时计算。semantic_relationships_declared 里这三列写入的值不会被使用。

类型说明
observed_atTimestampMillisecond时间索引,含义见上表。
window_startTimestampMillisecond该行覆盖窗口的起点。
window_endTimestampMillisecond该窗口的终点。
fresh_untilTimestampMillisecond该边被视为有效的截止时间。
src_typeString源端类型。
src_idString源端的规范化 id。
dst_typeString目标端类型。
dst_idString目标端的规范化 id。
rel_typeString关系类型:callsruns_oncontainspart_ofusesinvokesdepends_onowns,或声明边上的自定义值。方向为 srcdst
provenanceString边的来源方式:trace(配对的 span)、attribute(同一行上的两个身份)、declared(人工断言)、agent(agent 推断)。
confidenceFloat64派生的确定程度。配对成功的边为 1.0,虚拟节点边为 0.5;声明边原样保留插入的值,包括 NULL。预期取值范围是 [0, 1],对声明边不做强制校验。它不修正 trace 采样带来的偏差。
request_countInt64窗口内的请求数,仅 calls 边。
unmatched_countInt64该边上没有匹配到 server span 的 client span 数量。声明边恒为 NULL
error_countInt64窗口内的错误请求数。
duration_sumFloat64请求耗时之和,单位为秒。
duration_countInt64参与求和的耗时个数。
duration_maxFloat64duration_sum 同一批样本中最长的单次请求耗时,单位为秒。声明边恒为 NULL
attributesJson边的属性,例如 {"connection_type":"database"}

provenance 是边身份的一部分,因此同一对端点上人工声明的边和派生出的边作为两行共存。

observed_at 谓词决定派生范围。没有谓词时使用最近一小时;没有下界的谓词会报错。见查询窗口

派生以发起查询的用户身份执行。调用者读不到的源表会被排除,由 join 派生的边要求对参与 join 的每张表都有读权限。

semantic_relationships_declared

semantic_relationships_declared 是一张物理表,存放你自己断言的边,它的行会 union 进 semantic_relationships。GreptimeDB 在首次 INSERT 时按规范 schema 创建它,并拒绝用户的 CREATEALTERINSERTDELETEDROP 允许。TTL 为 90 天。

它的列与 semantic_relationships 相同,去掉 unmatched_countduration_max,并增加:

类型说明
valid_fromTimestampMillisecond业务有效期起点。NULL 表示自声明起有效。
valid_untilTimestampMillisecond业务有效期终点。NULL 表示只要行存在就有效。
scopeString边所属的命名空间或环境。属于主键,计算表不暴露该列。
generation_idString自由格式的代次标记。属于主键,计算表不暴露该列。

主键为 (src_type, src_id, rel_type, dst_type, dst_id, provenance, scope, generation_id),时间索引为 observed_at。用相同主键再次插入会存入新版本,读取时保留截至查询窗口上界的最新版本。

window_startwindow_endfresh_until 存在于这张表只是为了与计算表保持 schema 对称。读取时会根据 valid_fromvalid_until 重新计算,写入这三列不产生任何效果。confidence 和 RED 各列则原样透传。

用法见人工声明边