SQL查詢為表格存儲的多數據引擎提供統一的訪問接口,兼容MySQL的查詢語法,適用于在海量數據中進行在線數據訪問類型的場景。您可以通過SQL查詢功能對表格存儲中的數據進行復雜的查詢和高效的分析。
背景信息
為了滿足用戶業務平滑遷移到表格存儲以及使用SQL方式訪問表格存儲的需求,表格存儲在傳統的NoSQL結構化存儲之上,提供云原生的SQL引擎能力。SQL查詢兼容MySQL的查詢語法,同時提供基礎的SQL DDL建表能力。對于已有數據表,通過執行CREATE TABLE一鍵自動建立映射關系后,您可以使用SQL方式訪問表中數據。
SQL查詢功能支持通過多元索引來快速查詢滿足查詢條件的數據。使用SQL查詢時,系統會根據SQL語句自動選擇合適的方式來加速SQL訪問。
SQL查詢功能適用于在海量數據中進行在線數據訪問類型的場景,SQL訪問的延時從毫秒、秒到分鐘級別不等,包括基于數據表主鍵的Point Query (GetRow操作)、多元索引的精確查詢(TermQuery )等以及通過多元索引的統計聚合能力進行查詢,例如數據表中滿足某個條件的個數、某列求和等。
基本概念
SQL的使用會涉及到很多傳統數據庫中的概念,此處介紹下相關概念以及與現有表格存儲概念的映射關系。
數據庫概念 | 表格存儲概念 | 描述 |
數據庫 | 實例 | 按照數據結構來組織、存儲和管理數據的倉庫。一個數據庫中可以包含一個或者多個表。 |
表 | 表 | 由行和列組成。 |
索引 | 二級索引、多元索引 | 為加速數據查詢而創建的一種存儲結構。 |
功能特性
SQL功能
字符集和排序規則
字符集:UTF-8
排序規則:二進制排序規則
操作符
支持算術運算符、關系運算符、邏輯運算符等SQL操作符。更多信息,請參見SQL操作符。
存量表綁定
通過CREATE TABLE語句,您可以為存量表創建映射關系。創建映射關系時,請確保主鍵和存量表的主鍵一致,屬性列和存量表的屬性列類型以及預定義列類型一致。關于數據類型映射關系的更多信息,請參見SQL數據類型映射。
注意事項
在使用SQL查詢時,不支持事務功能。
表格存儲將SQL語句中的關鍵字作為保留字。如果在命名表或者列時需要使用關鍵字,則請添加
``
符號對關鍵字進行轉義。關鍵字不區分大小寫。 更多信息,請參見保留字與關鍵字。表格存儲的SQL引擎遵循通用的SQL規范,對列名大小寫不敏感,例如操作
SELECT Aa FROM exampletable;
語句與SELECT aa FROM exampletable;
語句是等價的。由于表格存儲中原始表的列名大小寫敏感,當使用SQL時,原始表的列名會統一轉換為小寫字母進行匹配,即如果要操作表格存儲表中的Aa列,在SQL中使用AA、aa、aA、Aa均可,因此表格存儲原始表的列名不能同時為AA、aa、aA和Aa。
目前支持使用SQL查詢功能的地域有華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北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查詢與分析示例。 |
使用方式
您可以通過表格存儲控制臺、命令行工具、表格存儲SDK、JDBC、Go語言驅動使用SQL查詢。
計費說明
SQL本身不會有額外的費用,但是使用SQL查詢數據過程中涉及到的表掃描、索引查詢等操作會產生費用。更多信息,請參見SQL查詢計量計費。
常見問題
相關文檔
您還可以通過MaxCompute、Spark、Hive或者HadoopMR、函數計算、Flink、PrestoDB等計算引擎實現表中數據的計算與分析。具體操作,請參見計算與分析。
您還可以將Tablestore實例接入到DataWorks或DMS,然后使用SQL查詢與分析Tablestore數據。更多信息,請參見接入到DataWorks和接入到DMS。
如果要以圖表等形式可視化展示數據,您可以通過對接Grafana實現。更多信息,請參見對接Grafana。
使用寬表模型可以實現元數據、大數據等多種場景的解決方案,例如搭建海量智能元數據管理系統、億量級訂單管理方案、基于多元索引搭建億量級店鋪搜索系統、表格存儲結合Spark流批處理實現一體化存儲和計算、表格存儲結合實時計算Flink進行大數據分析。更多方案介紹,請參見快速玩轉Tablestore入門與實戰。
使用時序模型可以實現設備時序數據開發等方案。更多方案介紹,請參見快速玩轉Tablestore入門與實戰。
表格存儲控制臺提供了電商訂單、共享汽車、快遞軌跡追溯、店鋪搜索、地理圍欄、智能元數據等產品應用場景的場景Demo。具體樣例請參見場景Demo。
SQL查詢可應用在表格存儲物聯網存儲IoTstore解決方案中作為不同類型數據的統一查詢接口。更多信息,請參見物聯網存儲簡介。
物聯網存儲IoTstore是表格存儲基于物聯網場景中多源異構數據存儲、高并發吞吐、海量數據高性價比存儲、多維度數據處理與分析等需求推出的一站式物聯網解決方案,可為物聯網設備元數據、消息數據、時序軌跡等海量數據提供存儲、查詢、檢索、分析、同步等能力。
附錄: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 |