当前位置: 首页 > article >正文

StoreView SQL,让数据分析不受地域限制

作者:章建(处知)

引言

日志服务 SLS 是云原生观测和分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。SLS 提供了多地域支持【1】,方便用户可以根据数据源就近接入 SLS 服务,减少不必要网络延迟以及公网费用。然而,如果需要将不同地域的数据进行联合统筹分析时,该怎么办呢?

SLS 近期推出的 StoreView 功能,可以协助用户便捷地进行跨域、跨 project 的查询和统计分析。StoreView 允许将多个 project 下(支持跨域)的 logstore 数据组合成一个虚拟的 logstore 使用,用户可以像使用一个 logstore 那样,使用 StoreView 进行各种查询分析。

数据准备

下面以 4 个 demo projects 对几个常遇到的场景进行说明,这 4 个 projects 来自不同的地域,信息如下:

其中,每个 project 都包含一个名为 user-queries 的 logstore,包含的核心字段如下:

字段名称类型含义
requestId字符串请求的唯一ID
status整数请求状态,200,400, 500等
latencyMs整数请求延迟
resultRows整数返回的结果行数
prcessedBytes整数处理的原始数据量(字节)
prcessedRows整数处理的原始数据量(行数)
query字符串SQL的具体内容

如何进行全域分析?

主要问题

在支持 StoreView 之前,如果需要对多个地域的 logstore 数据进行整体分析,则需要通过 ETL 任务先将各个地域的 logstore 数据同步到中心化的 logstore下,即需要为上面 4 个 demo project 下的 logstore 按照如下步骤创建同步 logstore 数据的加工任务(具体参考数据加工概述【2】)。

所有加工任务创建成功后,就可以使用中心化的 logstore centralized-user-queries 进行统计分析了。

可以看到,上面的操作非常繁琐,需要为每个 logstore 创建加工任务。另外,这种方式会导致数据存储量放大,即每个 logstore 的存储量会增加一倍,而且还有公网流量,从而导致产生额外费用。因此,通过加工任务的方式将多个地域的数据同步到一个 project 下,不仅费时费力,还费钱。

现在的做法

鉴于通过 ETL 任务将多地域的数据同步到一个 project 下的缺点,SLS 推出了 StoreView 功能,允许将不同地域、不同 project 下的多个 logstore 进行组合,形成一个虚拟的 logstore。用户基于 StoreView 对跨域、跨 project 的多个 logstore 数据进行统筹分析下时,就像对单个 logstore 进行分析一样简单。进入任意一个 project,参考文档数据集(StoreView)概述【3】 ,创建如下 StoreView 定义。

创建好上面的 StoreView 定义后,就可以进入对应的查询分析页面进行操作了。通过下面 SQL 语句,可以在 StoreView 下实现和加工中心化 logstore 查询分析一样的效果。

可以看到,相比于为每个 logstore 创建加工任务,创建 StoreView 非常简单。同时,使用 StoreView 进行数据分析时,不会存在 ETL 任务同步数据延迟的问题,因为它是实时地读取底层每个 logstore 的数据。

StoreView SPL 特性

StoreView 除了能够高效地解决数据因地域隔离导致查询分析不方便的问题外,它还集成了 SPL 句法加工数据的能力(参看 SPL 句法【4】,当前 StoreView 仅支持 extend、project 以及 where 三种指令)。基于 SPL 丰富的函数以及算子,StoreView 可以实现诸多 logstore 本身不具备的能力,下面将从数据可见性控制、查询式 ETL 处理以及异构数据 schema 对齐等方面展开介绍。

数据可见性控制

对于 logstore 中的数据,有时我们想控制数据行级别的可见性,比如对于运维人员,我们想让他们只有权限看到报错的 queries 信息(方便他们监控系统的异常情况),但无权限查看正常的 queries。对于普通 logstore 而言,目前无法做到行级别的可见性控制(当前授权仅支持以 logstore 为粒度),但采用 StoreView 后,却非常容易实现这一点,比如我们可以创建如下图所示的 StoreView。

上面的 StoreView 中额外定义了一个查询过滤,它限定了返回没有匹配 status 为 200 的数据。通过下的 SQL 结果,可以清楚地看到,从 failed_user_queries 这个 StoreView 中只能看到错误的 queries 统计结果,而成功 queries(status 为 200)全部被过滤掉了。

因此,如果有行级别的数据可见性管理需求,StoreView 正好可以派上用场。

查询式 ETL 处理

有时候,logstore 中可能会包含一些敏感信息,我们并不想让团队中普通组员看到(但允许他们查看其他非敏感的字段信息)。比如,对于 user-queries 这个 logstore,我不想让所有人看到 sourceIp 以及 userId 这两个用户敏感信息,那该怎么处理呢?

按照之前的做法,可以通过数据加工任务对原始的 logstore 数据进行脱敏后,保存到另外一个 logstore 中,然后再将这个新的 logstore 开放给普通成员。虽然这样操作也能满足需求,但这不仅操作复杂,而且会增加额外的存储成本。基于 StoreView 的 SPL 能力,很容易满足这个需求,我们可以创建如下一个 StoreView。

通过下面的执行结果可以看到,无论是查询还是 SQL 分析,都看不到 sourceIp 和 userId 的原始内容。

可以看到,通过 StoreView 集成的 SPL 能力,可以非常便捷地对原始数据进行各种加工处理。相对于传统的 ETL 加工任务,StoreView SPL 定义更新更为灵活,修改后立刻对查询分析可见,而加工任务更新后,仅仅会作用于新写入源 logstore 中的数据。

异构数据 schema 对齐

在 SQL 场景下,StoreView 这个虚拟表支持的字段是所有底层 logstore 开启了统计分析字段的超集。对于多个 logstore 中同名但类型不同的分析字段,会归一化到 varchar 类型。但对于名称不同、含义相同的字段,怎么进行统一分析呢?比如,下面的场景中,统计每个 project 下 query 的平均延迟,结果发现 sls-cn-guangzhou-queries 对应的结果为 null,这是为什么呢?

经过分析发现,原来 sls-cn-guangzhou-queries 中的 query 数据并不包含 latencyMs 这个字段,它的数据中对应的字段名称实际上为 latency。针对这种情况,我们仍然可以通过 SPL 的 extend 算子解决这种问题,即为 latency 字段增加一个 alias 字段(当前 SPL 会默认将所有字段作为 varchar 处理,下面 SPL 中进行了类型转换)。

经过上面的操作后,SQL 的执行结果就符合预期了,具体如下所示。

StoreView meta 字段

StoreView SQL 提供了 project 以及 logstore 两个 meta 字段,它们分别表示数据原始所对应的 project 以及 logstore 名称。用户可以基于这两个 meta 字段来识别 StoreView 中结果的来源。比如,我们可以通过以下 SQL 来对比分析每个 project 下一天的处理数据量。

结语

通过上面的实例分析可以看到,SLS StoreView 功能为用户提供了极为便捷的跨 project 查询和分析能力,用户不再需要通过创建加工任务来汇聚数据,节省了用户的使用成本。当前,控制台直接 SQL 分析以及大盘展示已经支持 StoreView(告警目前还不支持,后续也会考虑放开)。当然,因为跨 project 进行查询和分析,会涉及到跨域读取数据,整个处理链路受网络影响可能较大。后期我们会不断完善 StoreView 的易用性、稳定性和性能,让用户基于 StoreView 就能轻松愉悦地查询分析全地域的数据,真正做到数据分析不受地域边界的限制。

【1】多地域支持

https://help.aliyun.com/zh/sls/product-overview/supported-regions

【2】数据加工概述

https://help.aliyun.com/zh/sls/user-guide/data-processing-new-edition-overview?spm=a2c4g.11186623.help-menu-28958.d_2_6_0_0.6f4067a2X0smir

【3】数据集(StoreView)概述

https://help.aliyun.com/zh/sls/user-guide/dataset-storeview-overview?spm=a2c4g.11186623.help-menu-28958.d_2_4_0.25fa2a1cwcy7dW

【4】SPL 句法

https://help.aliyun.com/zh/sls/user-guide/spl-overview/?spm=a2c4g.11186623.help-menu-28958.d_2_13.6778a945BHmS0U&scm=20140722.H_2536529._.OR_help-T_cn~zh-V_1

点击此处,体验日志服务 SLS StoreView 功能

相关文章:

StoreView SQL,让数据分析不受地域限制

作者:章建(处知) 引言 日志服务 SLS 是云原生观测和分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务。SLS 提供了多地域支持【1】,方便用户可以根据数据源就近接入 SLS 服务&#xff0c…...

护网面试题目2025

护网基础试题 一、描述外网打点的流程? 靶标确认、信息收集、漏洞探测、漏洞利用、权限获取。最终的目的是获取靶标的系统权限/关键数据。在这个过程中,信息收集最为重要。掌握靶标情报越多,后续就会有更多的攻击方式去打点。比如&#xff…...

Figma 与 Cursor 深度集成的完整解决方案

以下是 Figma 与 Cursor 深度集成的完整解决方案,实现设计-开发无缝协作: 一、集成架构设计 #mermaid-svg-NdvcKTZAZfX9DiUO {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NdvcKTZAZfX9DiUO…...

UCRT 和 MSVC 的区别(Windows 平台上 C/C++ 开发相关)

UCRT 和 MSVC 是与 Windows 平台上 C/C 开发相关的两个重要概念,它们都属于 Microsoft 的开发工具链的一部分。下面详细解释它们的含义、区别以及用途。 一、UCRT(Universal C Runtime) 1. 含义: UCRT(Universal C …...

rabbitmq Fanout交换机简介

给每个服务创建一个队列,然后每个业务订阅一个队列,进行消费。 如订单服务起个多个服务,代码是一样的,消费的也是同一个队列。加快了队列中的消息的消费速度。 可以看到两个消费者已经在消费了...

【机器学习】集成学习与梯度提升决策树

目录 一、引言 二、自举聚合与随机森林 三、集成学习器 四、提升算法 五、Python代码实现集成学习与梯度提升决策树的实验 六、总结 一、引言 在机器学习的广阔领域中,集成学习(Ensemble Learning)犹如一座闪耀的明星,它通过组合多个基本学习器的力量,创造出…...

Palo Alto Networks Expedition存在命令注入漏洞(CVE-2025-0107)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤

方法一:使用官方二进制包安装 下载.NET Core 8 SDK 二进制包:访问 .NET Core 8 SDK 官方下载页面,根据你的系统架构选择对应的 Linux x64 版本等下载链接,将其下载到本地4. 创建安装目录:在终端中执行以下命令创建用于…...

JAVA-springboot JUnit单元测试

SpringBoot从入门到精通-第9章 JUnit单元测试 一、JUnit与单元测试 JUnit是一个开源的测试框架,虽然可以用于测试大多数编程语言的应用程序,但特别适合用于测试Java语言的应用程序。 软件测试一般分为4个阶段,即单元测试、集成测试、系统测…...

hot100 -- 6.矩阵系列

1.矩阵置零 问题:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 方法:记录行列 置0 # 记录行列,分别置0 def set_zero(matrix):row, col [], []# 统计0元素…...

PyCharm中运行.py脚本程序

1.最近在弄一个python脚本程序,记录下运行过程。 2.编写的python程序如下 # # Copyright 2017 Pixar # # Licensed under the terms set forth in the LICENSE.txt file available at # https://openusd.org/license. # # Check whether this script is being run …...

吴恩达MCP课程(5):research_server_prompt_resource.py

代码 import arxiv import json import os from typing import List from mcp.server.fastmcp import FastMCPPAPER_DIR "papers"# Initialize FastMCP server mcp FastMCP("research")mcp.tool() def search_papers(topic: str, max_results: int 5) …...

[论文阅读] 人工智能+项目管理 | 当 PMBOK 遇见 AI:传统项目管理框架的破局之路

当PMBOK遇见AI:传统项目管理框架的“AI适配指南” 论文信息 arXiv:2506.02214 Is PMBOK Guide the Right Fit for AI? Re-evaluating Project Management in the Face of Artificial Intelligence Projects Alexey Burdakov, Max Jaihyun Ahn Subjects: Software …...

Gateway 搭建

1.创建 moudle 命名为 gateway 2,pom中引入依赖 网关依赖&#xff1b;注册中心依赖等 <!-- 网关依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></d…...

pytorch基本运算-导数和f-string

引言 在前序对机器学习的探究过程中&#xff0c;我们已经深刻体会到人工智能到处都有微分求导运算&#xff0c;相关文章链接包括且不限于&#xff1a; BP神经网络 逻辑回归 对于pytorch张量&#xff0c;求导运算必不可少&#xff0c;所以本次就专门来学习一下。 f-string的用…...

impala中更改公网ip为内网ip

实际有时候需求中需要将公网的impala监听ip改为内网的ip 步骤 1&#xff0c;更改配置文件中的ip 1&#xff0c;更改/etc/default/impala中的ip配置重启服务即可在hive元数据同一个节点上要启动sudo service impala-state-store restartsudo service impala-catalog restart所有…...

5.RV1126-OPENCV 图形计算面积

一.图形面积、弧长计算介绍 前面我们已经把图形轮廓的检测、画框等功能讲解了一遍。这次主要结合轮廓检测的 API 去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的 API 如 contourArea…...

一键净化Excel数据:高性能Python脚本实现多核并行清理

摘要 本文分享两个基于Python的Excel数据净化脚本&#xff0c;通过多进程并行技术清除工作表内不可见字符、批注、单元格样式等冗余内容&#xff0c;利用OpenPyXL实现底层操作&#xff0c;结合tqdm进度条和进程级任务分配&#xff0c;可快速处理百万级单元格数据。适用于数据分…...

【Android基础回顾】一:Binder机制是什么?有什么用?

Android中的Binder机制是Android系统中最核心和最基础的进程间通讯机制。 1 什么是进程间通讯机制(IPC)&#xff1f; 众所周知&#xff0c;Android系统基于Linux开发&#xff0c;Linux系统里面本来就有进程间通讯机制。 1.1 Linux的IPC(Inter-Process Communication)概览 它…...

LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 上

题目&#xff1a;1731. 每位经理的下属员工数量 题解&#xff1a; select employee_id,name,reports_count,average_age from Employees t1,(select reports_to,count(*) reports_count,round(avg(age)) average_agefrom Employeeswhere reports_to is not nullgroup by repor…...

资产智慧管理安全监测中心

在数字经济高速发展的今天&#xff0c;资产管理的智能化已成为企业降本增效的核心竞争力。从智慧园区到古建筑群&#xff0c;从交通枢纽到城市电网&#xff0c;资产智慧管理安全监测中心正以物联网、人工智能、数字孪生等技术为支撑&#xff0c;构建起资产全生命周期的“智慧大…...

从零开始的云计算——番外实战,iptables防火墙项目

目录 一网络规划 二项目要求 三环境准备 1防火墙设置 2PC1设置 3PC2设置 4服务器S1设置 四环境检测 1内网链接 2外网连接 五防火墙配置及测试 1内部网络中的pc1采用SNAT访问外部互联网&#xff0c;但是无法ping到内部网关。 ​编辑​编辑 2内部网络服务器s1通过DN…...

移动网页调试的多元路径:WebDebugX 与其他调试工具的组合使用策略

在移动端网页开发中&#xff0c;仅靠一款工具很难覆盖所有调试场景。不同问题类型需要不同的调试维度——有时是网络请求&#xff0c;有时是 DOM 样式&#xff0c;有时是 JS 状态&#xff0c;有时是性能瓶颈。 本文以“多工具协作”为核心思想&#xff0c;结合多个项目经验&am…...

【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)

目录 方法一&#xff1a; 方法二 1.双击"package”即可进行打包呈jar 2.双击后就会自动打包生成jar了&#xff0c; 生成的jar在这个目录下 3.右击&#xff0c;点击“复制路径/引用”&#xff0c;即可获得“绝对路径”、“根路径”等相关信息 前提&#xff1a; 在pop.…...

【HarmonyOS 5】鸿蒙HarmonyOS —(cordova)研发方案详解

Android、Ios 和 HarmonyOS APP研发分析 Android研发语言Java、Ios研发语言objective-c, HarmonOS研发语言ArkTs和C/C&#xff0c;写了第一句&#xff0c;就会有人反驳&#xff0c;Android和Ios也支持C/C语言&#xff0c;封装成动态库so&#xff0c;然后调用就可以了&#xff0…...

Linux程序运行日志总结

在Linux系统中,程序运行时产生的日志记录主要通过以下几种方式实现,这些日志有助于排查问题、监控系统行为或审计安全事件: 1. 系统日志(System Logs) 存放路径:通常位于 /var/log/ 目录下。常见日志文件: /var/log/syslog 或 /var/log/messages:通用系统日志(取决于发…...

【物联网-TCP/IP】

物联网-TCP/IP ■ TCP/IP■■■ 添加链接描述 ■ TCP/IP ■ ■ ■...

SAP ECC 与 SAP S/4HANA 技术架构全面对比

SAP ECC 是过去几十年众多企业核心业务系统的基石&#xff0c;涵盖财务、物流、制造等关键领域。然而&#xff0c;随着数字化转型的加速和企业需求的增长&#xff0c;其架构日益显现局限。因此&#xff0c;SAP 推出了新一代 ERP 解决方案——SAP S/4HANA。它不仅在功能上做出优…...

Halcon光度立体法

1、光度立体法&#xff0c;可用于将对象的三维形状与其二维纹理&#xff08;例如打印图像&#xff09;分离。需要用不同方向而且已知照明方向的多个光源&#xff0c;拍摄同一物体的至少三张图像。请注意&#xff0c;所有图像的相机视角必须相同。 物体的三维形状主要被计算为三…...

cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能

在使用oops框架的过程中&#xff0c;它的导出数据并生成数据结构的插件oops-plugin-excel-to-json有些小的坑点&#xff0c;为满足我个人习惯&#xff0c;对此部分进行了一个小的修改&#xff0c;有需要的拿去用&#xff0c;记录下供大家参考&#xff1b; 一、配置&#xff1a;…...