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功能
字元集和定序
字元集:UTF-8
定序:二進位定序
操作符
支援算術運算子、關係運算子、邏輯運算子等SQL操作符。更多資訊,請參見SQL操作符。
存量表綁定
通過CREATE TABLE語句,您可以為存量表建立映射關係。建立映射關係時,請確保主鍵和存量表的主鍵一致,屬性列和存量表的屬性列類型以及預定義列類型一致。關於資料類型映射關係的更多資訊,請參見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(張家口)、華北6(烏蘭察布)、華南1(深圳)、西南1(成都)、中國香港、日本(東京)、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)、沙特(利雅得)。
使用限制
更多資訊,請參見SQL使用限制。
使用流程
寬表模型與時序模型的使用步驟的實現存在差異,請根據實際情況查詢相應步驟資訊。
寬表模型使用步驟說明
步驟 | 操作 | 說明 |
1 | 為表建立映射關係 | 使用SQL查詢資料前,您需要手動建立表的映射關係。具體操作,請參見建立表的映射關係, 如果已為資料表建立多元索引,您還可以選擇為多元索引建立映射關係來實現通過指定多元索引查詢資料。具體操作,請參見建立多元索引的映射關係。 |
2 | 使用SQL查詢資料 | 通過表的映射關係查詢表中資料。您可以通過SQL查詢實現如下功能:
|
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與多元索引功能對比
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 |