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 功能

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83156.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83156.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83156.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

爬蟲基礎學習day2

# 爬蟲設計領域 工商:企查查、天眼查短視頻:抖音、快手、西瓜 ---> 飛瓜電商:京東、淘寶、聚美優品、亞馬遜 ---> 分析店鋪經營決策標題、排名航空:抓取所有航空公司價格 ---> 去哪兒自媒體:采集自媒體數據進…

Golang——10、日志處理和正則處理

日志處理和正則處理 1、logx日志處理1.1、logx簡介1.2、日志初始化與配置1.3、常用方法1.4、配合defer捕獲panic 2、正則處理2.1、正則表達式語法大全2.2、基本匹配2.3、常見函數使用2.4、從html提取漢字demo 1、logx日志處理 1.1、logx簡介 logx 是 go-zero 框架中用于日志記…

【LeetCode】3309. 連接二進制表示可形成的最大數值(遞歸|回溯|位運算)

LeetCode 3309. 連接二進制表示可形成的最大數值(中等) 題目描述解題思路Java代碼 題目描述 題目鏈接:LeetCode 3309. 連接二進制表示可形成的最大數值(中等) 給你一個長度為 3 的整數數組 nums。 現以某種順序 連接…

C++八股 —— 單例模式

文章目錄 1. 基本概念2. 設計要點3. 實現方式4. 詳解懶漢模式 1. 基本概念 線程安全(Thread Safety) 線程安全是指在多線程環境下,某個函數、類或代碼片段能夠被多個線程同時調用時,仍能保證數據的一致性和邏輯的正確性&#xf…

軟件工程:如何做好軟件產品

1、什么是產品 從項目到產品 產品:滿足行業共性需求的標準產品。即要能夠做到配置化的開發,用同一款產品最大限度地滿足不同客戶的需求,同時讓產品具有可以快速響應客戶需求變化的能力。 好的產品一定吸收了多個項目的共性,一定是…

Cinnamon修改面板小工具圖標

Cinnamon開始菜單-CSDN博客 設置模塊都是做好的,比GNOME簡單得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…

sqlsugar WhereIF條件的大于等于和等于查出來的坑

一、如下圖所示,當我用 .WhereIF(input.Plancontroltype > 0, u > u.Plancontroltype (DnjqPlancontroltype)input.Plancontroltype) 這里面用等于的時候,返回結果一條數據都沒有。 上圖中生成的SQL如下: SELECT id AS Id ,code AS …

centos 7 部署awstats 網站訪問檢測

一、基礎環境準備(兩種安裝方式都要做) bash # 安裝必要依賴 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 設置 Apache 開機自啟 systemctl start httpd # 啟動 Apache二、安裝 AWStats&#xff0…

React從基礎入門到高級實戰:React 實戰項目 - 項目四:企業級儀表盤

React 實戰項目:企業級儀表盤 歡迎來到 React 開發教程專欄 的第 29 篇!在前 28 篇文章中,我們從 React 的基礎概念逐步深入到高級技巧,涵蓋了組件設計、狀態管理、路由配置、性能優化和實時通信等核心內容。這一次,我…

STM32----IAP遠程升級

一、概述: IAP,全稱是“In-Application Programming”,中文解釋為“在程序中編程”。IAP是一種對通過微控制器的對外接口(如USART,IIC,CAN,USB,以太網接口甚至是無線射頻通道&#…

模擬搭建私網訪問外網、外網訪問服務器服務的實踐操作

目錄 實驗環境 實踐要求 一、準備工作 1、準備四臺虛擬機,分別標號 2、 防火墻額外添加兩塊網卡,自定義網絡連接模式 3、 關閉虛擬機的圖形管理工具 4、關閉防火墻 5、分別配置四臺虛擬機的IP地址,此處舉一個例子(使用的臨…

刪除遠程已經不存在但本地仍然存在的Git分支

1. 獲取遠程分支列表 首先,確保你獲取了遠程倉庫的最新分支信息: git fetch -p -p 參數會自動清理本地倉庫中那些在遠程已經被刪除的分支的引用。 2. 查看本地分支與遠程分支的對比 運行以下命令來查看哪些本地分支沒有對應的遠程分支: …

GIT(AI回答)

在Git中,git push 命令主要用于將本地分支的提交推送到?遠程倉庫?(如GitHub、GitLab等)。如果你希望將本地分支的改動同步到另一個?本地分支?,這不是 git push 的設計目的。以下是正確的替代方法: 方法1&#xff1…

深入剖析AI大模型:大模型時代的 Prompt 工程全解析

今天聊的內容,我認為是AI開發里面非常重要的內容。它在AI開發里無處不在,當你對 AI 助手說 "用李白的風格寫一首關于人工智能的詩",或者讓翻譯模型 "將這段合同翻譯成商務日語" 時,輸入的這句話就是 Prompt。…

React - 組件通信

組件通信 概念:組件通信就是組件之間數據傳遞,根據組件嵌套關系不同,有不同的通信方法 父傳子 —— 基礎實現 實現步驟 父組件傳遞數據 - 在子組件標簽上綁定屬性子組件接收數據 - 子組件通過props參數接收數據 聲明子組件并使用 //聲明子…

RKNN開發環境搭建2-RKNN Model Zoo 環境搭建

目錄 1.簡介2.環境搭建2.1 啟動 docker 環境2.2 安裝依賴工具2.3 下載 RKNN Model Zoo2.4 RKNN模型轉化2.5編譯C++1.簡介 RKNN Model Zoo基于 RKNPU SDK 工具鏈開發, 提供了目前主流算法的部署例程. 例程包含導出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程. ??本…

計算機視覺頂刊《International Journal of Computer Vision》2025年5月前沿熱點可視化分析

追蹤計算機視覺領域的前沿熱點是把握技術發展方向、推動創新落地的關鍵,分析這些熱點,不僅能洞察技術趨勢,更能為科研選題和工程實踐提供重要參考。本文對計算機視覺頂刊《International Journal of Computer Vision》2025年5月前沿熱點進行了…

互聯網大廠Java求職面試:云原生與微服務架構的深度探討

互聯網大廠Java求職面試:云原生與微服務架構的深度探討 第一輪提問 面試官: “鄭薪苦,假設我們要設計一個大規模電商平臺的微服務架構,你會如何設計其訂單服務?” 鄭薪苦: “首先,我會采用…

STM32實戰:數字音頻播放器開發指南

基于STM32的數字音頻播放器/效果器是個很棒的項目!這涉及到多個嵌入式開發的關鍵技術點。下面我為你拆解實現方案和關鍵學習內容: 系統架構概覽 [SD Card] -> [File System (FATFS)] -> [Audio Decoder (WAV/MP3)] -> [DSP Processing (EQ, R…

基于TurtleBot3在Gazebo地圖實現機器人遠程控制

1. TurtleBot3環境配置 # 下載TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…