全部產品
Search
文件中心

Tablestore:SQL查詢介紹

更新時間:Sep 11, 2024

SQL查詢為Table Store的多資料引擎提供統一的提供者,相容MySQL的查詢文法,適用於在海量資料中進行線上資料訪問類型的情境。您可以通過SQL查詢功能對錶格儲存中的資料進行複雜的查詢和高效的分析。

背景資訊

為了滿足使用者業務平滑遷移到Table Store以及使用SQL方式訪問Table Store的需求,Table Store在傳統的NoSQL結構化儲存之上,提供雲原生的SQL引擎能力。SQL查詢相容MySQL的查詢文法,同時提供基礎的SQL DDL建表能力。對於已有資料表,通過執行CREATE TABLE一鍵自動建立映射關係後,您可以使用SQL方式訪問表中資料。

SQL查詢功能支援通過多元索引來快速查詢滿足查詢條件的資料。使用SQL查詢時,系統會根據SQL語句自動選擇合適的方式來加速SQL訪問。

SQL查詢功能適用於在海量資料中進行線上資料訪問類型的情境,SQL訪問的延時從毫秒、秒到分鐘層級不等,包括基於資料表主鍵的Point Query (GetRow操作)、多元索引的精確查詢(TermQuery )等以及通過多元索引的統計彙總能力進行查詢,例如資料表中滿足某個條件的個數、某列求和等。

基本概念

SQL的使用會涉及到很多傳統資料庫中的概念,此處介紹下相關概念以及與現有Table Store概念的映射關係。

資料庫概念

Table Store概念

描述

資料庫

執行個體

按照資料結構來組織、儲存和管理資料的倉庫。一個資料庫中可以包含一個或者多個表。

由行和列組成。

索引

二級索引、多元索引

為加速資料查詢而建立的一種儲存結構。

功能特性

注意事項

  • SQL查詢適用於寬表模型時序模型

  • 在使用SQL查詢時,不支援事務功能。

  • Table Store將SQL語句中的關鍵字作為保留字。如果在命名表或者列時需要使用關鍵字,則請添加``符號對關鍵字進行轉義。關鍵字不區分大小寫。 更多資訊,請參見保留字與關鍵字

  • Table Store的SQL引擎遵循通用的SQL規範,對列名大小寫不敏感,例如操作SELECT Aa FROM exampletable; 語句與SELECT aa FROM exampletable;語句是等價的。

    由於Table Store中原始表的列名大小寫敏感,當使用SQL時,原始表的列名會統一轉換為小寫字母進行匹配,即如果要動作表格儲存表中的Aa列,在SQL中使用AA、aa、aA、Aa均可,因此Table Store原始表的列名不能同時為AA、aa、aA和Aa。

  • 目前支援使用SQL查詢功能的地區有華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、西南1(成都)、中國香港、新加坡、印尼(雅加達)、德國(法蘭克福)、沙特(利雅得)和美國(維吉尼亞)。

使用限制

更多資訊,請參見SQL使用限制

使用流程

寬表模型與時序模型的使用步驟的實現存在差異,請根據實際情況查詢相應步驟資訊。

寬表模型使用步驟說明

步驟

操作

說明

1

為表建立映射關係

使用SQL查詢資料前,您需要手動建立表的映射關係。具體操作,請參見建立表的映射關係

如果已為資料表建立多元索引,您還可以選擇為多元索引建立映射關係來實現通過指定多元索引查詢資料。具體操作,請參見建立多元索引的映射關係

2

使用SQL查詢資料

通過表的映射關係查詢表中資料。您可以通過SQL查詢實現如下功能:

  • 查詢符合指定條件的資料。

  • 通過Join功能實現關聯資料查詢,支援將兩個表或多個表進行串連,並返回符合串連條件和查詢條件的資料。更多資訊,請參見Join

  • 通過JSON函數查詢JSON對象。更多資訊,請參見JSON函數

  • 通過匹配查詢或者短語匹配查詢條件實現全文檢索索引。更多資訊,請參見全文檢索索引

  • 通過ARRAY_EXTRACT(col_name)函數實現多元索引數群組類型的資料查詢。更多資訊,請參見多元索引數群組類型

  • 通過運算子或使用NESTED_QUERY(subcol_column_condition)函數實現多元索引巢狀型別的資料查詢。更多資訊,請參見多元索引巢狀型別

  • 通過虛擬列查詢滿足條件的資料。更多資訊,請參見多元索引虛擬列

3

使用SQL分析資料

通過表的映射關係分析表中的資料。您可以通過GROUP BY語句對結果集按照指定條件進行分組,並且可以使用彙總函式進行資料的統計與計算。更多資訊,請參見GROUP BY分組查詢彙總函式

時序模型使用步驟說明

步驟

操作

說明

1

為表建立映射關係

使用SQL查詢資料前,您需要為表建立映射關係。

您可以為時序表建立單值模型映射關係、多值模型映射關係或時間軸中繼資料映射關係三種映射關係進行資料查詢。

建立時序表後,系統會自動為表建立單值模型映射關係和時間軸中繼資料映射關係,無需手動建立。如果要以多值模型查詢時序資料,您需要手動建立多值模型映射關係。具體操作,請參見時序表的SQL映射關係

2

使用SQL查詢資料

通過表的映射關係查詢表中資料。您可以使用單值模型或者多值模型查詢時序資料以及使用時間線中繼資料映射關係查詢時間軸中繼資料。更多資訊,請參見時序模型SQL查詢與分析樣本

3

使用SQL分析資料

通過表的映射關係分析表中資料。您可以使用tag_value_at擴充函數提取時間軸標籤(_tags)中的某個標籤(tag)的值以及時間軸屬性(_attributes)中的某個屬性值。更多資訊,請參見時序模型SQL查詢與分析樣本

使用方式

您可以通過Table Store控制台、命令列工具、Table StoreSDK、JDBC、Go語言驅動使用SQL查詢。

計費說明

SQL本身不會有額外的費用,但是使用SQL查詢資料過程中涉及到的表掃描、索引查詢等操作會產生費用。更多資訊,請參見SQL查詢計量計費

常見問題

相關文檔

  • 如果要加速SQL資料查詢和計算,您可以通過建立二級索引或者多元索引實現。更多資訊,請參見索引選擇策略計算下推

  • 您還可以通過MaxCompute、Spark、Hive或者HadoopMR、Function Compute、Flink、PrestoDB等計算引擎實現表中資料的計算與分析。具體操作,請參見計算與分析

  • 您還可以將Tablestore執行個體接入到DataWorks或DMS,然後使用SQL查詢與分析Tablestore資料。更多資訊,請參見接入到DataWorks接入到DMS

  • 如果要以圖表等形式可視化展示資料,您可以通過對接Grafana實現。更多資訊,請參見對接Grafana

附錄:SQL與多元索引功能對比

SQL查詢和多元索引均能實現一些資料查詢與分析功能,下表展示了兩者的功能對比關係。

多元索引功能

SQL函數/語句

精確查詢

等於(=)

範圍查詢

大於(>)、小於(<)、大於等於(>=)、小於等於(<=)、BETWEEN ... AND ...

多條件組合查詢

MustQueries

AND

MustNotQueries

!=

ShouldQueries

OR

排序和翻頁

FieldSort

ORDER BY

SetLimit

LIMIT

統計彙總

最小值

MIN()

最大值

MAX()

SUM()

平均值

AVG()

統計行數

COUNT()

統計去重行數

COUNT(DISTINCT)

擷取統計彙總分組中的行

ANY_VALUE()

欄位值分組

GROUP BY