SQL查詢
SQL查詢?yōu)楸砀翊鎯Φ亩鄶?shù)據(jù)引擎提供統(tǒng)一的訪問接口,兼容MySQL的查詢語法,適用于在海量數(shù)據(jù)中進(jìn)行在線數(shù)據(jù)訪問類型的場景。您可以通過SQL查詢功能對表格存儲中的數(shù)據(jù)進(jìn)行復(fù)雜的查詢和高效的分析。
背景信息
為了滿足用戶業(yè)務(wù)平滑遷移到表格存儲以及使用SQL方式訪問表格存儲的需求,表格存儲在傳統(tǒng)的NoSQL結(jié)構(gòu)化存儲之上,提供云原生的SQL引擎能力。SQL查詢兼容MySQL的查詢語法,同時提供基礎(chǔ)的SQL DDL建表能力。對于已有數(shù)據(jù)表,通過執(zhí)行CREATE TABLE一鍵自動建立映射關(guān)系后,您可以使用SQL方式訪問表中數(shù)據(jù)。
SQL查詢功能支持通過多元索引來快速查詢滿足查詢條件的數(shù)據(jù)。使用SQL查詢時,系統(tǒng)會根據(jù)SQL語句自動選擇合適的方式來加速SQL訪問。
SQL查詢功能適用于在海量數(shù)據(jù)中進(jìn)行在線數(shù)據(jù)訪問類型的場景,SQL訪問的延時從毫秒、秒到分鐘級別不等,包括基于數(shù)據(jù)表主鍵的Point Query (GetRow操作)、多元索引的精確查詢(TermQuery )等以及通過多元索引的統(tǒng)計聚合能力進(jìn)行查詢,例如數(shù)據(jù)表中滿足某個條件的個數(shù)、某列求和等。
基本概念
SQL的使用會涉及到很多傳統(tǒng)數(shù)據(jù)庫中的概念,此處介紹下相關(guān)概念以及與現(xiàn)有表格存儲概念的映射關(guān)系。
數(shù)據(jù)庫概念 | 表格存儲概念 | 描述 |
數(shù)據(jù)庫 | 實例 | 按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。一個數(shù)據(jù)庫中可以包含一個或者多個表。 |
表 | 表 | 由行和列組成。 |
索引 | 二級索引、多元索引 | 為加速數(shù)據(jù)查詢而創(chuàng)建的一種存儲結(jié)構(gòu)。 |
功能特性
SQL功能
支持單次請求單條SQL。
支持基礎(chǔ)的DDL語句,主要包括創(chuàng)建表的映射關(guān)系、創(chuàng)建多元索引的映射關(guān)系、更新映射表屬性列、刪除映射關(guān)系和查詢表的描述信息。
支持DQL操作,主要包括查詢數(shù)據(jù),可實現(xiàn)基礎(chǔ)數(shù)據(jù)查詢、統(tǒng)計聚合、條件過濾、分頁查詢等功能。
支持通過多元索引實現(xiàn)全文檢索、多元索引數(shù)組類型、多元索引嵌套類型、多元索引虛擬列等查詢功能。
支持使用JOIN功能將兩個表或多個表進(jìn)行連接,并返回符合連接條件和查詢條件的數(shù)據(jù)。更多信息,請參見Join。
支持JSON函數(shù)
->>
、JSON_UNQUOTE和JSON_EXTRACT。更多信息,請參見JSON函數(shù)。
字符集和排序規(guī)則
字符集:UTF-8
排序規(guī)則:二進(jìn)制排序規(guī)則
操作符
支持算術(shù)運算符、關(guān)系運算符、邏輯運算符等SQL操作符。更多信息,請參見SQL操作符。
存量表綁定
通過CREATE TABLE語句,您可以為存量表創(chuàng)建映射關(guān)系。創(chuàng)建映射關(guān)系時,請確保主鍵和存量表的主鍵一致,屬性列和存量表的屬性列類型以及預(yù)定義列類型一致。關(guān)于數(shù)據(jù)類型映射關(guān)系的更多信息,請參見SQL數(shù)據(jù)類型映射。
注意事項
在使用SQL查詢時,不支持事務(wù)功能。
表格存儲將SQL語句中的關(guān)鍵字作為保留字。如果在命名表或者列時需要使用關(guān)鍵字,則請?zhí)砑?span data-tag="ph" id="codeph-9iq-qxf-jdl" class="ph">
``
符號對關(guān)鍵字進(jìn)行轉(zhuǎn)義。關(guān)鍵字不區(qū)分大小寫。 更多信息,請參見保留字與關(guān)鍵字。表格存儲的SQL引擎遵循通用的SQL規(guī)范,對列名大小寫不敏感,例如操作
SELECT Aa FROM exampletable;
語句與SELECT aa FROM exampletable;
語句是等價的。由于表格存儲中原始表的列名大小寫敏感,當(dāng)使用SQL時,原始表的列名會統(tǒng)一轉(zhuǎn)換為小寫字母進(jìn)行匹配,即如果要操作表格存儲表中的Aa列,在SQL中使用AA、aa、aA、Aa均可,因此表格存儲原始表的列名不能同時為AA、aa、aA和Aa。
目前支持SQL查詢功能的地域包括華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、華南1(深圳)、西南1(成都)、中國香港、日本(東京)、新加坡、馬來西亞(吉隆坡)、印度尼西亞(雅加達(dá))、德國(法蘭克福)、英國(倫敦)、美國(硅谷)、美國(弗吉尼亞)。
使用限制
更多信息,請參見SQL使用限制。
使用流程
寬表模型與時序模型的使用步驟的實現(xiàn)存在差異,請根據(jù)實際情況查詢相應(yīng)步驟信息。
寬表模型使用步驟說明
步驟 | 操作 | 說明 |
1 | 為表創(chuàng)建映射關(guān)系 | 使用SQL查詢數(shù)據(jù)前,您需要手動創(chuàng)建表的映射關(guān)系。具體操作,請參見創(chuàng)建表的映射關(guān)系, 如果已為數(shù)據(jù)表創(chuàng)建多元索引,您還可以選擇為多元索引創(chuàng)建映射關(guān)系來實現(xiàn)通過指定多元索引查詢數(shù)據(jù)。具體操作,請參見創(chuàng)建多元索引的映射關(guān)系。 |
2 | 使用SQL查詢數(shù)據(jù) | 通過表的映射關(guān)系查詢表中數(shù)據(jù)。您可以通過SQL查詢實現(xiàn)如下功能:
|
3 | 使用SQL分析數(shù)據(jù) | 通過表的映射關(guān)系分析表中的數(shù)據(jù)。您可以通過GROUP BY語句對結(jié)果集按照指定條件進(jìn)行分組,并且可以使用聚合函數(shù)進(jìn)行數(shù)據(jù)的統(tǒng)計與計算。更多信息,請參見GROUP BY分組查詢和聚合函數(shù)。 |
時序模型使用步驟說明
步驟 | 操作 | 說明 |
1 | 為表創(chuàng)建映射關(guān)系 | 使用SQL查詢數(shù)據(jù)前,您需要為表創(chuàng)建映射關(guān)系。 您可以為時序表建立單值模型映射關(guān)系、多值模型映射關(guān)系或時間線元數(shù)據(jù)映射關(guān)系三種映射關(guān)系進(jìn)行數(shù)據(jù)查詢。 創(chuàng)建時序表后,系統(tǒng)會自動為表創(chuàng)建單值模型映射關(guān)系和時間線元數(shù)據(jù)映射關(guān)系,無需手動創(chuàng)建。如果要以多值模型查詢時序數(shù)據(jù),您需要手動創(chuàng)建多值模型映射關(guān)系。具體操作,請參見時序表的SQL映射關(guān)系。 |
2 | 使用SQL查詢數(shù)據(jù) | 通過表的映射關(guān)系查詢表中數(shù)據(jù)。您可以使用單值模型或者多值模型查詢時序數(shù)據(jù)以及使用時間線元數(shù)據(jù)映射關(guān)系查詢時間線元數(shù)據(jù)。更多信息,請參見時序模型SQL查詢與分析示例。 |
3 | 使用SQL分析數(shù)據(jù) | 通過表的映射關(guān)系分析表中數(shù)據(jù)。您可以使用tag_value_at擴展函數(shù)提取時間線標(biāo)簽(_tags)中的某個標(biāo)簽(tag)的值以及時間線屬性(_attributes)中的某個屬性值。更多信息,請參見時序模型SQL查詢與分析示例。 |
使用方式
您可以通過表格存儲控制臺、命令行工具、表格存儲SDK、JDBC、Go語言驅(qū)動使用SQL查詢。
計費說明
SQL本身不會有額外的費用,但是使用SQL查詢數(shù)據(jù)過程中涉及到的表掃描、索引查詢等操作會產(chǎn)生費用。更多信息,請參見SQL查詢計量計費。
常見問題
相關(guān)文檔
如果要加速SQL數(shù)據(jù)查詢和計算,您可以通過創(chuàng)建二級索引或者多元索引實現(xiàn)。更多信息,請參見索引選擇策略和計算下推。
您還可以通過MaxCompute、Spark、Hive或者HadoopMR、函數(shù)計算、Flink、PrestoDB等計算引擎實現(xiàn)表中數(shù)據(jù)的計算與分析。具體操作,請參見計算與分析。
您還可以將Tablestore實例接入到DataWorks或DMS,然后使用SQL查詢與分析Tablestore數(shù)據(jù)。更多信息,請參見接入到DataWorks和接入到DMS。
如果要以圖表等形式可視化展示數(shù)據(jù),您可以通過對接Grafana實現(xiàn)。更多信息,請參見對接Grafana。
使用寬表模型可以實現(xiàn)元數(shù)據(jù)、大數(shù)據(jù)等多種場景的解決方案,例如搭建海量智能元數(shù)據(jù)管理系統(tǒng)、億量級訂單管理方案、基于多元索引搭建億量級店鋪搜索系統(tǒng)、表格存儲結(jié)合Spark流批處理實現(xiàn)一體化存儲和計算、表格存儲結(jié)合實時計算Flink進(jìn)行大數(shù)據(jù)分析。更多方案介紹,請參見快速玩轉(zhuǎn)Tablestore入門與實戰(zhàn)。
使用時序模型可以實現(xiàn)設(shè)備時序數(shù)據(jù)開發(fā)等方案。更多方案介紹,請參見快速玩轉(zhuǎn)Tablestore入門與實戰(zhàn)。
表格存儲控制臺提供了電商訂單、共享汽車、快遞軌跡追溯、店鋪搜索、地理圍欄、智能元數(shù)據(jù)等產(chǎn)品應(yīng)用場景的場景Demo。具體樣例請參見場景Demo。
SQL查詢可應(yīng)用在表格存儲物聯(lián)網(wǎng)存儲IoTstore解決方案中作為不同類型數(shù)據(jù)的統(tǒng)一查詢接口。更多信息,請參見物聯(lián)網(wǎng)存儲簡介。
物聯(lián)網(wǎng)存儲IoTstore是表格存儲基于物聯(lián)網(wǎng)場景中多源異構(gòu)數(shù)據(jù)存儲、高并發(fā)吞吐、海量數(shù)據(jù)高性價比存儲、多維度數(shù)據(jù)處理與分析等需求推出的一站式物聯(lián)網(wǎng)解決方案,可為物聯(lián)網(wǎng)設(shè)備元數(shù)據(jù)、消息數(shù)據(jù)、時序軌跡等海量數(shù)據(jù)提供存儲、查詢、檢索、分析、同步等能力。
附錄:SQL與多元索引功能對比
SQL查詢和多元索引均能實現(xiàn)一些數(shù)據(jù)查詢與分析功能,下表展示了兩者的功能對比關(guān)系。
多元索引功能 | SQL函數(shù)/語句 | |
等于(=) | ||
大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、BETWEEN ... AND ... | ||
MustQueries | AND | |
MustNotQueries | != | |
ShouldQueries | OR | |
FieldSort | ORDER BY | |
SetLimit | LIMIT | |
最小值 | MIN() | |
最大值 | MAX() | |
和 | SUM() | |
平均值 | AVG() | |
統(tǒng)計行數(shù) | COUNT() | |
統(tǒng)計去重行數(shù) | COUNT(DISTINCT) | |
獲取統(tǒng)計聚合分組中的行 | ANY_VALUE() | |
字段值分組 | GROUP BY |