存储建模

概述

Storage(存储)是 UModel 中数据集底层存储的抽象,定义了数据的实际存储位置和访问方式。通过存储建模,UModel 能够统一对接多种存储后端,为用户提供一致的数据访问体验。

存储的作用和价值

在 UModel 架构中,存储建模承担着关键作用:

  • 存储抽象:统一不同存储系统的访问接口,屏蔽底层差异。

  • 数据定位:精确指定数据集对应的存储位置和访问参数。

  • 查询优化:通过过滤条件和视图配置提升查询性能。

  • 成本控制:通过存储配置优化数据访问成本和效率。

支持的存储类型

目前 UModel 支持以下存储类型:

存储类型

适用数据

主要特性

应用场景

sls_logstore

日志数据

实时检索、全文搜索

应用日志、审计日志、事件数据

sls_metricstore

指标数据

时序存储、聚合查询

监控指标、性能数据、业务指标

sls_entitystore

实体关系数据

图存储、关系查询、实体管理

服务拓扑、资源关系、依赖分析

aliyun_prometheus

Prometheus指标

兼容PromQL

云原生监控、容器指标、集群监控

应用案例

当前应用案例相关素材,请参考:umodel.zip

SLS LogStore 存储

基本配置

SLS LogStore 是面向日志数据的存储类型,提供高性能的日志写入和检索能力。

配置参数

参数名

类型

必填

描述

示例值

kind

string

存储类型标识

固定值:sls_logstore

region

string

SLS 服务区域

cn-hangzhou

project

string

SLS 项目名称

my-project

store

string

LogStore 名称

app-logs

search_filter

string

基础过滤条件,遵循SLS查询语法。

"*"

spl_view

string

SPL 视图定义

| extend status = case(status >= 400, 'error', 'success') | where status = 'error'

配置示例

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 desc

SLS MetricStore 存储

基本配置

SLS MetricStore 专门用于存储时序指标数据,提供高效的指标聚合和查询能力。

配置参数

参数名

类型

必填

描述

示例值

kind

string

存储类型标识

固定值:sls_metricstore

region

string

SLS 服务区域

cn-hangzhou

project

string

SLS 项目名称

my-project

store

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 查询。

配置参数

参数名

类型

必填

描述

示例值

kind

string

存储类型标识

固定值:aliyun_prometheus

region

string

Prometheus 实例区域

cn-hangzhou

instance_id

string

Prometheus 实例 ID

c39a1048921e648ee89ba

sls_project

string

关联的 SLS 项目

k8s-monitoring-project

sls_metricstore

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 数据,无需手动配置。