概述
Storage(存储)是 UModel 中数据集底层存储的抽象,定义了数据的实际存储位置和访问方式。通过存储建模,UModel 能够统一对接多种存储后端,为用户提供一致的数据访问体验。
存储的作用和价值
在 UModel 架构中,存储建模承担着关键作用:
存储抽象:统一不同存储系统的访问接口,屏蔽底层差异。
数据定位:精确指定数据集对应的存储位置和访问参数。
查询优化:通过过滤条件和视图配置提升查询性能。
成本控制:通过存储配置优化数据访问成本和效率。
支持的存储类型
目前 UModel 支持以下存储类型:
存储类型  | 适用数据  | 主要特性  | 应用场景  | 
  | 日志数据  | 实时检索、全文搜索  | 应用日志、审计日志、事件数据  | 
  | 指标数据  | 时序存储、聚合查询  | 监控指标、性能数据、业务指标  | 
  | 实体关系数据  | 图存储、关系查询、实体管理  | 服务拓扑、资源关系、依赖分析  | 
  | Prometheus指标  | 兼容PromQL  | 云原生监控、容器指标、集群监控  | 
SLS LogStore 存储
基本配置
SLS LogStore 是面向日志数据的存储类型,提供高性能的日志写入和检索能力。
配置参数
参数名  | 类型  | 必填  | 描述  | 示例值  | 
  | string  | 是  | 存储类型标识  | 固定值:  | 
  | string  | 是  | SLS 服务区域  | cn-hangzhou  | 
  | string  | 是  | SLS 项目名称  | my-project  | 
  | string  | 是  | LogStore 名称  | app-logs  | 
  | string  | 否  | 基础过滤条件,遵循SLS查询语法。  | 
  | 
  | string  | 否  | SPL 视图定义  | 
  | 
配置示例
kind: sls_logstore
schema:
  url: "umodel.aliyun.com"
  version: "v0.1.0"
metadata:
  name: "app.logs.storage"
  display_name:
    en_us: >
      Application Logs Storage
    zh_cn: >
      应用日志存储
  description:
    en_us: >
      The application logs storage.
    zh_cn: >
      应用日志存储
  domain: app
spec:
  region: "cn-hangzhou" # The region where the logstore is located.
  project: "my-observability-project" # The project name.
  store: "application-logs" # The store name
  search_filter: "level:ERROR OR level:WARN"高级配置说明
search_filter
如果您的Logstore中,只有部分数据和上游的DataSet关联,推荐使用 search_filter 进行过滤 。
关于 search_filter 的语法,请参考 查询语法与功能。
# 基础关键词过滤
search_filter: "error OR exception"
# 字段值过滤
search_filter: "service_name:user-service AND level:ERROR"spl_view
用于创建动态数据视图,支持复杂的数据变换,一般只用于动态实体和动态关系的场景。
关于 spl_view 的语法,请参考 SPL语法。
spl_view: >
  | extend "resource.duration"=cast("resource.duration" as integer),
            "resource.fail"=case when cast("resource.success" as integer)=0 then 1 else 0 end,
            "resource.slow"=case when cast("resource.duration" as integer)>2000 then 1 else 0 end
  | stats
    "service_id" = arbitrary("app.id"),
    "service_type" = arbitrary("app.type"),
    "resource_domain" = arbitrary("resource.domain"),
    "api_name" = arbitrary("resource.name"),
    "resource_method" = arbitrary("resource.method"),
    "request_count" = count(*),
    "view_count" = count(DISTINCT "view.name"),
    "fail_count" = sum("resource.fail"),
    "slow_count" = sum("resource.slow"),
    "trace_count" = count("resource.trace_id"),
    "resource_duration"= avg("resource.duration"),
    "last_time" = max("timestamp")
    by "resource.domain", "resource.name", "resource.method"
  | extend
      last_time = cast("last_time" as varchar),
      request_count = cast("request_count" as varchar),
      view_count = cast("view_count" as varchar),
      fail_count = cast("fail_count" as varchar),
      slow_count = cast("slow_count" as varchar),
      trace_count = cast("trace_count" as varchar),
      resource_duration = cast("resource_duration" as varchar)
  | sort request_count descSLS MetricStore 存储
基本配置
SLS MetricStore 专门用于存储时序指标数据,提供高效的指标聚合和查询能力。
配置参数
参数名  | 类型  | 必填  | 描述  | 示例值  | 
  | string  | 是  | 存储类型标识  | 固定值:  | 
  | string  | 是  | SLS 服务区域  | cn-hangzhou  | 
  | string  | 是  | SLS 项目名称  | my-project  | 
  | string  | 是  | MetricStore 名称  | app-metrics  | 
配置示例
kind: sls_metricstore
schema:
  url: "umodel.aliyun.com"
  version: "v0.1.0"
metadata:
  name: "app.metrics.storage"
  display_name:
    en_us: >
      Application Metrics Storage
    zh_cn: >
      应用指标存储
  description:
    en_us: >
      The application metrics storage.
    zh_cn: >
      应用指标存储
  domain: app
spec:
  region: "cn-hangzhou" # The region where the metricstore is located.
  project: "monitoring-project" # The project name.
  store: "application-metrics" # The store name阿里云 Prometheus 存储
基本配置
阿里云 Prometheus 存储用于对接托管的 Prometheus 服务,支持标准的 PromQL 查询。
配置参数
参数名  | 类型  | 必填  | 描述  | 示例值  | 
  | string  | 是  | 存储类型标识  | 固定值:  | 
  | string  | 是  | Prometheus 实例区域  | cn-hangzhou  | 
  | string  | 是  | Prometheus 实例 ID  | c39a1048921e648ee89ba  | 
  | string  | 否  | 关联的 SLS 项目  | k8s-monitoring-project  | 
  | string  | 否  | 关联的 SLS 时序库  | prometheus-metrics  | 
配置示例
kind: aliyun_prometheus
schema:
  url: "umodel.aliyun.com"
  version: "v0.1.0"
metadata:
  name: "k8s.prometheus.storage"
  display_name:
    en_us: >
      Kubernetes Prometheus Storage
    zh_cn: >
      Kubernetes 集群 Prometheus 监控存储
  description:
    en_us: >
      The Kubernetes cluster Prometheus monitoring storage.
    zh_cn: >
      Kubernetes 集群 Prometheus 监控存储
  domain: k8s
spec:
  region: "cn-hangzhou" # The region where the prometheus instance is located.
  instance_id: "c39a1048921e648ee89ba" # The prometheus instance ID.
  sls_project: "k8s-monitoring-project" # The SLS project name.
  sls_metricstore: "prometheus-metrics" # The SLS metricstore name.EntityStore 存储
注意:在 UModel 系统中,默认会创建 EntityStore 用于存储 EntitySet 和 EntitySetLink 数据,无需手动配置。