Lindorm泛時(shí)序數(shù)據(jù)一站式分析與洞察
方案總覽
方案概述
泛時(shí)序數(shù)據(jù)廣泛應(yīng)用于車聯(lián)網(wǎng)、工業(yè)物聯(lián)網(wǎng)、金融交易、股票分析等多個(gè)業(yè)務(wù)場(chǎng)景。隨著業(yè)務(wù)規(guī)模的增長(zhǎng),數(shù)據(jù)量急劇增加,如何高效獲取和分析這些數(shù)據(jù)成為業(yè)務(wù)洞察和決策的關(guān)鍵挑戰(zhàn)。以車聯(lián)網(wǎng)場(chǎng)景為例,傳統(tǒng)的數(shù)據(jù)處理通常涉及多個(gè)數(shù)據(jù)組件的整合,運(yùn)維難度高、數(shù)據(jù)存儲(chǔ)及開發(fā)成本高。Lindorm作為阿里云自研的云原生多模數(shù)據(jù)庫,不僅具備低成本存儲(chǔ)、彈性高可用的特點(diǎn),還集數(shù)據(jù)存儲(chǔ)和分析功能于一體,支持存儲(chǔ)車輛行駛軌跡、車輛狀態(tài)、精準(zhǔn)定位等車聯(lián)網(wǎng)關(guān)鍵數(shù)據(jù),并提供實(shí)時(shí)或批量數(shù)據(jù)處理能力。
本方案以車輛網(wǎng)場(chǎng)景為例,引導(dǎo)您使用云原生多模數(shù)據(jù)庫 Lindorm的多種引擎,實(shí)現(xiàn)泛時(shí)序數(shù)據(jù)的高并發(fā)實(shí)時(shí)查詢和寫入,幫助您高效構(gòu)建車機(jī)數(shù)據(jù)上報(bào)、物流軌跡跟蹤、實(shí)時(shí)定位調(diào)度等場(chǎng)景服務(wù)。
方案架構(gòu)
方案優(yōu)勢(shì)
一體化:一體化操作,開發(fā)效率高,多種數(shù)據(jù)一個(gè)入口,統(tǒng)一SQL操作。相比于傳統(tǒng)的多個(gè)產(chǎn)品支撐一個(gè)場(chǎng)景的方案,架構(gòu)更加簡(jiǎn)單,易于開發(fā)。
低成本:低成本存儲(chǔ),支持百PB級(jí)存儲(chǔ),支持自適應(yīng)壓縮和表級(jí)別的冷熱分離,您可以根據(jù)數(shù)據(jù)處理需求自由選擇行存儲(chǔ)或列存儲(chǔ),最多可節(jié)省約50%的成本。
高性能:高并發(fā)讀寫,支持千萬級(jí)并發(fā)和毫秒級(jí)延遲,可滿足車聯(lián)網(wǎng)大規(guī)模數(shù)據(jù)的在線存儲(chǔ)與查詢需求。豐富的檢索能力,通過寬表引擎和搜索引擎組合,使用SQL一鍵在所需數(shù)據(jù)列上建立搜索(倒排)索引,提供在線搜索服務(wù)。搜索引擎支持多維檢索、全文檢索、地理位置檢索等多種高級(jí)檢索能力。
彈性:云原生彈性,靈活擴(kuò)展,Lindorm計(jì)算引擎具備Serverless特性,可按需分配計(jì)算資源,進(jìn)行高效的交互式分析和批處理。
部署流程
適用場(chǎng)景
車聯(lián)網(wǎng):使用Lindorm存儲(chǔ)車聯(lián)網(wǎng)中的行駛軌跡、車輛狀況、精準(zhǔn)定位等重要數(shù)據(jù),提供低成本、彈性、靈活可靠的能力,幫助您構(gòu)建高效的網(wǎng)約車、物流運(yùn)輸、新能源車檢測(cè)等場(chǎng)景服務(wù);集成Ganos時(shí)空數(shù)據(jù)庫引擎,高效支撐車聯(lián)網(wǎng)軌跡數(shù)據(jù)時(shí)空分析與挖掘等相關(guān)應(yīng)用場(chǎng)景。
物聯(lián)網(wǎng):使用Lindorm存儲(chǔ)來自工業(yè)物聯(lián)網(wǎng)場(chǎng)景下的海量異構(gòu)IT&OT數(shù)據(jù),將數(shù)據(jù)進(jìn)行同構(gòu)、匯聚、融合,打破工業(yè)場(chǎng)景IT數(shù)據(jù)和OT數(shù)據(jù)割裂的“信息孤島”;通過Lindorm計(jì)算引擎提供的低成本、高性能、穩(wěn)定可靠的分布式計(jì)算能力,滿足您在數(shù)智化生產(chǎn)、交互式數(shù)據(jù)探索分析、AI/ML數(shù)據(jù)處理和大規(guī)模圖計(jì)算等場(chǎng)景中的計(jì)算需求。
交易賬單:使用Lindorm存儲(chǔ)金融交易中的海量訂單記錄,金融風(fēng)控中的用戶事件、畫像特征、規(guī)則模型、設(shè)備指紋等重要數(shù)據(jù),提供低成本、高并發(fā)、靈活可靠的能力,幫助您構(gòu)建高效的金融交易與風(fēng)控服務(wù)。
部署準(zhǔn)備
開始部署前,請(qǐng)按以下指引完成賬號(hào)申請(qǐng)、賬號(hào)充值、RAM用戶創(chuàng)建和授權(quán)。
費(fèi)用說明
完成本方案的部署及體驗(yàn),預(yù)計(jì)產(chǎn)生費(fèi)用不超過30元。該費(fèi)用僅為購(gòu)買本方案示例的資源規(guī)格,且使用時(shí)長(zhǎng)不超過1小時(shí)的預(yù)估費(fèi)用。如果您調(diào)整了資源規(guī)格,或執(zhí)行了本方案以外的其他操作,可能會(huì)導(dǎo)致費(fèi)用有所變化。請(qǐng)以控制臺(tái)顯示的實(shí)際價(jià)格和最終賬單為準(zhǔn)。
本方案以華東1(杭州)地域?yàn)槔韵聻楸痉桨干婕百Y源的華東1(杭州)地域單價(jià),僅供參考。
產(chǎn)品 | 計(jì)費(fèi)項(xiàng) | 規(guī)格配置 | 預(yù)估費(fèi)用參考 |
云原生多模數(shù)據(jù)庫 Lindorm | 寬表節(jié)點(diǎn)規(guī)格 | 規(guī)格:4核16 GB 寬表節(jié)點(diǎn)數(shù)量:2 | 2.500元/小時(shí) |
搜索節(jié)點(diǎn)規(guī)格 | 規(guī)格:4核16 GB 搜索節(jié)點(diǎn)數(shù)量:2 | 2.500元/小時(shí) | |
LTS節(jié)點(diǎn)規(guī)格 | 規(guī)格:4核8 GB LTS節(jié)點(diǎn)數(shù)量:1 | 1.053元/小時(shí) | |
流節(jié)點(diǎn)規(guī)格 | 規(guī)格:4核16 GB 流節(jié)點(diǎn)數(shù)量:2 | 2.500元/小時(shí) | |
彈性計(jì)算資源 | 不涉及 | 2.436元 | |
存儲(chǔ)空間 | 160 GB | 0.157元/小時(shí) | |
集群固定費(fèi)用 | 不涉及 | 1.875元/小時(shí) | |
云服務(wù)器ECS | 實(shí)例 | 規(guī)格:ecs.e-c1m4.2xlarge | 1.35元/小時(shí) |
系統(tǒng)盤 | 存儲(chǔ)空間:40 GiB(ESSD Entry) | 0.02916元/時(shí) | |
專有網(wǎng)絡(luò)VPC | 免費(fèi) |
步驟一:準(zhǔn)備賬號(hào)
如果您還沒有阿里云賬號(hào),請(qǐng)?jiān)L問阿里云賬號(hào)注冊(cè)頁面,根據(jù)頁面提示完成注冊(cè)。阿里云賬號(hào)是您使用云資源的付費(fèi)實(shí)體,因此是部署方案的必要前提。
為阿里云賬號(hào)充值。本方案默認(rèn)采用按量付費(fèi)的方式創(chuàng)建資源,請(qǐng)確保賬戶余額大于等于100元。
創(chuàng)建用于方案部署的RAM用戶。
創(chuàng)建1個(gè)RAM用戶。具體操作,請(qǐng)參見創(chuàng)建RAM用戶。
為RAM用戶授予以下云服務(wù)的訪問權(quán)限以完成方案部署。具體操作,請(qǐng)參見為RAM用戶授權(quán)。
云服務(wù)
需要的權(quán)限
描述
云原生多模數(shù)據(jù)庫 Lindorm
AliyunLindormFullAccess
管理云原生多模數(shù)據(jù)庫 Lindorm的權(quán)限。
云服務(wù)器ECS
AliyunECSFullAccess
管理云服務(wù)器服務(wù)ECS的權(quán)限。
專有網(wǎng)絡(luò)VPC
AliyunVPCFullAccess
管理專有網(wǎng)絡(luò)VPC的權(quán)限。
步驟二:申請(qǐng)使用權(quán)限
在部署資源之前,請(qǐng)先加入釘釘群(群號(hào):78080001631),申請(qǐng)流引擎購(gòu)買權(quán)限。
部署資源
1. 創(chuàng)建專有網(wǎng)絡(luò)VPC和交換機(jī)
登錄專有網(wǎng)絡(luò)管理控制臺(tái),創(chuàng)建1個(gè)專有網(wǎng)絡(luò)和1臺(tái)交換機(jī)。
填寫相關(guān)配置,具體說明如下:
項(xiàng)目
說明
示例值
專有網(wǎng)絡(luò)
地域
選擇專有網(wǎng)絡(luò)VPC所在地域,請(qǐng)選擇華東1(杭州)地域。
華東1(杭州)
名稱
專有網(wǎng)絡(luò)VPC的名稱。命名規(guī)則:長(zhǎng)度為2~128個(gè)字符,以英文大小字母或中文開頭,可包含數(shù)字、下劃線(_)和短劃線(-)。
vpc_lindormk3uu
IPv4網(wǎng)段
在創(chuàng)建VPC時(shí),您必須按照無類域間路由塊(CIDR block)的格式為您的專有網(wǎng)絡(luò)劃分私網(wǎng)網(wǎng)段。阿里云VPC支持的網(wǎng)段信息請(qǐng)參見專有網(wǎng)絡(luò)組成部分。
在網(wǎng)絡(luò)規(guī)劃時(shí)可以按照管理網(wǎng)段-開發(fā)網(wǎng)段-測(cè)試網(wǎng)段-生產(chǎn)網(wǎng)段等規(guī)則做好規(guī)劃。網(wǎng)段一旦投入使用,調(diào)整過程復(fù)雜,因此規(guī)劃十分重要。
192.168.0.0/16
交換機(jī)
名稱
虛擬交換機(jī)名稱。命名規(guī)則:長(zhǎng)度為2~128個(gè)字符,以英文大小字母或中文開頭,可包含數(shù)字、下劃線(_)和短劃線(-)。
vsw_lindomk3uu
可用區(qū)
在規(guī)劃的地域內(nèi)選擇1個(gè)可用區(qū)。
說明請(qǐng)確保交換機(jī)所屬的可用區(qū)的ECS和Lindorm等資源處于可用狀態(tài)。
可用區(qū) G
2.創(chuàng)建云服務(wù)器ECS
按以下規(guī)劃配置ECS相關(guān)配置項(xiàng)。
配置項(xiàng)
說明
付費(fèi)類型
選擇按量付費(fèi)。
地域
選擇華東1(杭州)。
網(wǎng)絡(luò)及可用區(qū)
選擇之前規(guī)劃的專有網(wǎng)絡(luò)VPC和專有網(wǎng)絡(luò)交換機(jī)。
實(shí)例
選擇規(guī)格ecs.e-c1m4.2xlarge(8 vCPU 32 GiB)。
鏡像
選擇CentOS 7.7 64位。
系統(tǒng)盤
選擇ESSD Entry類型,容量配置為40 GiB。
安全組
選擇已有安全組或根據(jù)頁面提示創(chuàng)建新的安全組。安全組規(guī)則說明請(qǐng)參見安全組規(guī)則。
登錄憑證
選擇自定義密碼,方便后續(xù)登錄機(jī)器安裝服務(wù)環(huán)境。
勾選服務(wù)協(xié)議,單擊確認(rèn)下單。
3.創(chuàng)建云原生多模數(shù)據(jù)庫Lindorm
在購(gòu)買頁面,按以下規(guī)劃配置Lindorm相關(guān)配置項(xiàng)。
1、商品屬性及網(wǎng)絡(luò)配置
選項(xiàng)
說明
商品類型、付費(fèi)方式、部署方案(分別對(duì)應(yīng)圖示①、②、③)
請(qǐng)按照?qǐng)D中選項(xiàng)配置。
地域(對(duì)應(yīng)圖示④)
選擇華東1(杭州)。
網(wǎng)絡(luò)相關(guān)(對(duì)應(yīng)圖示⑤)
選擇之前規(guī)劃的VPC、交換機(jī)及交換區(qū)所在可用區(qū)。
2、數(shù)據(jù)引擎配置
請(qǐng)按照下圖所示進(jìn)行配置。
單擊立即購(gòu)買跳轉(zhuǎn)至訂單頁,勾選服務(wù)協(xié)議并單擊立即開通。
配置資源
配置ECS
請(qǐng)根據(jù)以下步驟在ECS實(shí)例上部署相關(guān)開發(fā)環(huán)境和Lindorm客戶端。
步驟一:部署開發(fā)環(huán)境
流引擎客戶端的運(yùn)行依賴Java,同時(shí),本方案將使用Python腳本文件模擬生成車機(jī)原始數(shù)據(jù),因此您需要在ECS實(shí)例上部署Java和Python環(huán)境。
登錄ECS實(shí)例。
登錄云服務(wù)器ECS管理控制臺(tái),在目標(biāo)實(shí)例的操作列單擊遠(yuǎn)程連接,使用root權(quán)限通過Workbench遠(yuǎn)程登錄。
執(zhí)行以下命令,安裝JDK 1.8和Python環(huán)境。
# 安裝JDK 1.8 yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y # 安裝Python yum install python3 -y # 安裝Python運(yùn)行時(shí)依賴的庫 pip3 install cryptography==3.4.8
環(huán)境驗(yàn)證。
# 驗(yàn)證Java環(huán)境是否安裝成功 java -version # 驗(yàn)證Python環(huán)境是否安裝成功 python3 --version
步驟二:安裝Lindorm客戶端
Lindorm-cli和Lindorm-sqlline是Lindorm提供的簡(jiǎn)易命令行工具,在本方案中分別用于連接Lindorm寬表引擎和流引擎。
下載客戶端安裝包(Linux操作系統(tǒng)安裝包)。
Lindorm-cli:下載地址,請(qǐng)參見安裝Lindorm-cli。
Lindorm-sqlline:
wget https://hbaseuepublic.oss-cn-beijing.aliyuncs.com/lindorm-sqlline-2.0.2.tar.gz
解壓安裝包。
# 解壓Lindorm-cli安裝包 tar zxvf lindorm-cli-linux-latest.tar.gz # 解壓Lindorm-sqlline安裝包 tar zxvf lindorm-sqlline-2.0.2.tar.gz
配置Lindorm
登錄Lindorm管理控制臺(tái)(杭州地域),單擊目標(biāo)實(shí)例ID,進(jìn)入實(shí)例詳情頁。
設(shè)置Lindorm白名單,將ECS實(shí)例的主私網(wǎng)IP添加至組內(nèi)白名單,保證ECS與Lindorm之間的連通性。
說明如何查看ECS實(shí)例的主私網(wǎng)IP地址,請(qǐng)參見查看IP地址。
開通搜索索引。搜索索引是寬表引擎與搜索引擎深度融合的特性,更適合復(fù)雜的多維查詢場(chǎng)景。
LTS規(guī)格請(qǐng)按照下表進(jìn)行配置:
配置項(xiàng)
說明
LTS數(shù)據(jù)同步Core規(guī)格
選擇4核8 GB。
LTS節(jié)點(diǎn)數(shù)量
配置為1個(gè)。
請(qǐng)加入釘釘群(群號(hào):78080001631),申請(qǐng)開通列存索引。
說明列存索引可以增強(qiáng)寬表中海量數(shù)據(jù)的分析計(jì)算能力,更適合車聯(lián)網(wǎng)與物聯(lián)網(wǎng)的設(shè)備信息統(tǒng)計(jì)、電商領(lǐng)域的數(shù)據(jù)分析、物流行業(yè)的訂單統(tǒng)計(jì)等場(chǎng)景。
如果在部署準(zhǔn)備階段已開通該權(quán)限,可跳過此步驟。
數(shù)據(jù)導(dǎo)入
在實(shí)際的業(yè)務(wù)場(chǎng)景中,車機(jī)上傳的字段有上百甚至上千種,本部署方案篩選了其中一部分作為測(cè)試數(shù)據(jù):
1.創(chuàng)建Lindorm寬表
登錄云服務(wù)器ECS管理控制臺(tái),在目標(biāo)實(shí)例的操作列單擊遠(yuǎn)程連接,使用root權(quán)限通過Workbench遠(yuǎn)程登錄。
跳轉(zhuǎn)至
Lindorm-cli.exe
所在目錄,連接Lindorm寬表引擎。./lindorm-cli -url <jdbc url> -username <username> -password <password>
參數(shù)說明
參數(shù)
獲取方法
jdbc url
寬表引擎的Lindorm寬表SQL地址。獲取方法請(qǐng)參見訪問實(shí)例。
username
連接寬表引擎的默認(rèn)用戶名和默認(rèn)初始密碼。獲取方式請(qǐng)參見訪問實(shí)例。
password
創(chuàng)建表
dwd_vehicle_tbox
,用于存儲(chǔ)車機(jī)數(shù)據(jù)。CREATE TABLE dwd_vehicle_tbox ( `vin` VARCHAR, `sampletime` bigint, `DriverStateLinkStatus` INT, `AirBagSystemStatus` INT, `HODHandoffmonitorValid` INT, `BodyCtrlModRollCounter` INT, `VehicleSpeed_kmph` INT, `SteeringAngle_Deg` DOUBLE, `BatterySOC_Percent` DOUBLE, `BrakePedalStatus` INT, `AcceleratorPedalPos_Percent` DOUBLE, `RegenBrakingLevel` INT, `CoolantTemperature_C` INT, `AEB_Activation` INT, `LaneAssistanceStatus` INT, `CruiseControlSpeedSet_kmph` INT, `ParkingAssistEngaged` INT, `RainSensorStatus` INT, `TirePressure_FL_psi` DOUBLE, `TirePressure_FR_psi` DOUBLE, `TirePressure_RL_psi` DOUBLE, `TirePressure_RR_psi` DOUBLE, `LaneDepartureWarningActive` INT, `BatteryStateOfHealth_Percent` DOUBLE, `BatteryTemperature_Avg_C` INT, `BatteryMaxCellVoltage_V` DOUBLE, `BatteryMinCellVoltage_V` DOUBLE, `EvBatteryTemperature_C` DOUBLE, PRIMARY KEY (vin,sampletime) );
(可選)驗(yàn)證表
dwd_vehicle_tbox
結(jié)構(gòu)是否正確。DESCRIBE TABLE dwd_vehicle_tbox;
返回結(jié)果:
+--------------+------------------+------------------------------+---------+----------------+------------+-------------------+-----------------+ | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | TYPE | IS_PRIMARY_KEY | SORT_ORDER | IS_AUTO_INCREMENT | IS_LOCAL_UNIQUE | +--------------+------------------+------------------------------+---------+----------------+------------+-------------------+-----------------+ | default | dwd_vehicle_tbox | vin | VARCHAR | true | ASC | false | false | | default | dwd_vehicle_tbox | sampletime | BIGINT | true | ASC | false | false | | default | dwd_vehicle_tbox | DriverStateLinkStatus | INT | false | none | false | false | | default | dwd_vehicle_tbox | AirBagSystemStatus | INT | false | none | false | false | | default | dwd_vehicle_tbox | HODHandoffmonitorValid | INT | false | none | false | false | | default | dwd_vehicle_tbox | BodyCtrlModRollCounter | INT | false | none | false | false | | default | dwd_vehicle_tbox | VehicleSpeed_kmph | INT | false | none | false | false | | default | dwd_vehicle_tbox | SteeringAngle_Deg | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | BatterySOC_Percent | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | BrakePedalStatus | INT | false | none | false | false | | default | dwd_vehicle_tbox | AcceleratorPedalPos_Percent | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | RegenBrakingLevel | INT | false | none | false | false | | default | dwd_vehicle_tbox | CoolantTemperature_C | INT | false | none | false | false | | default | dwd_vehicle_tbox | AEB_Activation | INT | false | none | false | false | | default | dwd_vehicle_tbox | LaneAssistanceStatus | INT | false | none | false | false | | default | dwd_vehicle_tbox | CruiseControlSpeedSet_kmph | INT | false | none | false | false | | default | dwd_vehicle_tbox | ParkingAssistEngaged | INT | false | none | false | false | | default | dwd_vehicle_tbox | RainSensorStatus | INT | false | none | false | false | | default | dwd_vehicle_tbox | TirePressure_FL_psi | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | TirePressure_FR_psi | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | TirePressure_RL_psi | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | TirePressure_RR_psi | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | LaneDepartureWarningActive | INT | false | none | false | false | | default | dwd_vehicle_tbox | BatteryStateOfHealth_Percent | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | BatteryTemperature_Avg_C | INT | false | none | false | false | | default | dwd_vehicle_tbox | BatteryMaxCellVoltage_V | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | BatteryMinCellVoltage_V | DOUBLE | false | none | false | false | | default | dwd_vehicle_tbox | EvBatteryTemperature_C | DOUBLE | false | none | false | false | +--------------+------------------+------------------------------+---------+----------------+------------+-------------------+-----------------+
2.創(chuàng)建流表
使用組合鍵
Ctrl+D
斷開寬表引擎的連接,跳轉(zhuǎn)至lindorm-sqlline-2.0.2
目錄,執(zhí)行以下命令連接流引擎。./bin/lindorm-sqlline -url <jdbc url>
參數(shù)說明
參數(shù)
獲取方法
jdbc url
流引擎的Lindorm Stream SQL地址。獲取方法:在Lindorm管理控制臺(tái)左側(cè)導(dǎo)航欄,選擇
。創(chuàng)建流表
dwd_vehicle_tbox_stream
,用于處理上游的報(bào)文數(shù)據(jù)。CREATE STREAM dwd_vehicle_tbox_stream ( `vin` VARCHAR, `sampletime` BIGINT, `DriverStateLinkStatus` INT, `AirBagSystemStatus` INT, `HODHandoffmonitorValid` INT, `BodyCtrlModRollCounter` INT, `VehicleSpeed_kmph` INT, `SteeringAngle_Deg` DOUBLE, `BatterySOC_Percent` DOUBLE, `BrakePedalStatus` INT, `AcceleratorPedalPos_Percent` DOUBLE, `RegenBrakingLevel` INT, `CoolantTemperature_C` INT, `AEB_Activation` INT, `LaneAssistanceStatus` INT, `CruiseControlSpeedSet_kmph` INT, `ParkingAssistEngaged` INT, `RainSensorStatus` INT, `TirePressure_FL_psi` DOUBLE, `TirePressure_FR_psi` DOUBLE, `TirePressure_RL_psi` DOUBLE, `TirePressure_RR_psi` DOUBLE, `LaneDepartureWarningActive` INT, `BatteryStateOfHealth_Percent` DOUBLE, `BatteryTemperature_Avg_C` INT, `BatteryMaxCellVoltage_V` DOUBLE, `BatteryMinCellVoltage_V` DOUBLE, `EvBatteryTemperature_C` DOUBLE );
(可選)執(zhí)行以下語句,驗(yàn)證表結(jié)構(gòu)。
DESCRIBE dwd_vehicle_tbox_stream;
返回結(jié)果:
+---------------------------------------------------------------------------+ | Result | +---------------------------------------------------------------------------+ | name | type | null | key | extras | watermark | ----------------------------------------------------------------------------+ |vin | STRING | TRUE | <NULL> | <NULL> | <NULL> | |sampletime | BIGINT | TRUE | <NULL> | <NULL> | <NULL> | |DriverStateLinkStatus | INT | TRUE | <NULL> | <NULL> | <NULL> | |AirBagSystemStatus | INT | TRUE | <NULL> | <NULL> | <NULL> | |HODHandoffmonitorValid | INT | TRUE | <NULL> | <NULL> | <NULL> | |BodyCtrlModRollCounter | INT | TRUE | <NULL> | <NULL> | <NULL> | |VehicleSpeed_kmph | INT | TRUE | <NULL> | <NULL> | <NULL> | |SteeringAngle_Deg | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |BatterySOC_Percent | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |BrakePedalStatus | INT | TRUE | <NULL> | <NULL> | <NULL> | |AcceleratorPedalPos_Percent | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |RegenBrakingLevel | INT | TRUE | <NULL> | <NULL> | <NULL> | |CoolantTemperature_C | INT | TRUE | <NULL> | <NULL> | <NULL> | |AEB_Activation | INT | TRUE | <NULL> | <NULL> | <NULL> | |LaneAssistanceStatus | INT | TRUE | <NULL> | <NULL> | <NULL> | |CruiseControlSpeedSet_kmph | INT | TRUE | <NULL> | <NULL> | <NULL> | |ParkingAssistEngaged | INT | TRUE | <NULL> | <NULL> | <NULL> | |RainSensorStatus | INT | TRUE | <NULL> | <NULL> | <NULL> | |TirePressure_FL_psi | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |TirePressure_FR_psi | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |TirePressure_RL_psi | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |TirePressure_RR_psi | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |LaneDepartureWarningActive | INT | TRUE | <NULL> | <NULL> | <NULL> | |BatteryStateOfHealth_Percent | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |BatteryTemperature_Avg_C | INT | TRUE | <NULL> | <NULL> | <NULL> | |BatteryMaxCellVoltage_V | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |BatteryMinCellVoltage_V | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | |EvBatteryTemperature_C | DOUBLE | TRUE | <NULL> | <NULL> | <NULL> | +---------------------------------------------------------------------------+
3.創(chuàng)建數(shù)據(jù)入庫任務(wù)
執(zhí)行以下語句創(chuàng)建數(shù)據(jù)入庫任務(wù),使流表不斷傳輸數(shù)據(jù)到寬表。
-- 創(chuàng)建數(shù)據(jù)入庫任務(wù),后續(xù)可以通過該CQ名稱查詢?nèi)蝿?wù)的狀態(tài). CREATE CQ dwd_vehicle_tbox_stream_job ; -- 建立關(guān)聯(lián),如果您只需要抽取一部分?jǐn)?shù)據(jù),可以根據(jù)需求調(diào)整SQL語句. INSERT INTO lindorm_table.`default`.dwd_vehicle_tbox SELECT * FROM dwd_vehicle_tbox_stream;
(可選)查看入庫任務(wù)狀態(tài)。
DESCRIBE dwd_vehicle_tbox_stream_job;
返回結(jié)果:
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Result | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Query ID | Job ID | Status | Is Stoppable | Start time | End time | Duration | Max Parallelism | DelayMs | Sql | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | dwd_vehicle_tbox_stream_job | 2112c72ef3c3aeab587438f95013135c | RUNNING | false | 1720174064325 | -1 | 57912 | -1 | 3321553.0 | IA== | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
4.導(dǎo)入數(shù)據(jù)
使用組合鍵
Ctrl+D
斷開流引擎的連接,執(zhí)行以下命令安裝Python依賴。python3 -m pip install kafka-python
創(chuàng)建Python腳本文件
demo.py
,執(zhí)行以下命令編輯文件。vim demo.py
編寫完整代碼,使用Python腳本模擬生成車機(jī)原始數(shù)據(jù)導(dǎo)入流表
dwd_vehicle_tbox_stream
。# -*- coding: UTF-8 -*- import csv import random import datetime import json from kafka import KafkaProducer def random_string(length=32): return ''.join(random.choices('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', k=length)) def random_int(min_val, max_val): return random.randint(min_val, max_val) def random_double(min_val, max_val): return random.uniform(min_val, max_val) def generate_vehicle_tbox_row(vin=None, current_time=None): """給定一個(gè) VIN 和當(dāng)前時(shí)間,生成一行車輛 T-Box 數(shù)據(jù)。""" vehicle_tbox_row_dict = { "vin": vin, "sampletime": (current_time - random.randint(0, 365 * 24 * 60 * 60 * 1000)), "DriverStateLinkStatus": random_int(0, 1), "AirBagSystemStatus": random_int(0, 1), "HODHandoffmonitorValid": random_int(0, 1), "BodyCtrlModRollCounter": random_int(8, 60), "VehicleSpeed_kmph": random_int(0, 300), "SteeringAngle_Deg": random_double(-720, 720), "BatterySOC_Percent": random_double(0, 100), "BrakePedalStatus": random_int(0, 1), "AcceleratorPedalPos_Percent": random_double(0, 100), "RegenBrakingLevel": random_int(0, 5), "CoolantTemperature_C": random_int(0, 100), "AEB_Activation": random_int(0, 1), "LaneAssistanceStatus": random_int(0, 1), "CruiseControlSpeedSet_kmph": random_int(0, 300), "ParkingAssistEngaged": random_int(0, 1), "RainSensorStatus": random_int(0, 1), "TirePressure_FL_psi": random_double(0, 3), "TirePressure_FR_psi": random_double(0, 3), "TirePressure_RL_psi": random_double(0, 3), "TirePressure_RR_psi": random_double(0, 3), "LaneDepartureWarningActive": random_int(0, 1), "BatteryStateOfHealth_Percent": random_double(0, 100), "BatteryTemperature_Avg_C": random_int(10, 70), "BatteryMaxCellVoltage_V": random_double(3, 8), "BatteryMinCellVoltage_V": random_double(3, 8), "EvBatteryTemperature_C": random_double(10, 70) } return vehicle_tbox_row_dict def create_kafka_producer(bootstrap_servers='localhost:9092'): """創(chuàng)建并返回 Kafka 生產(chǎn)者實(shí)例""" producer_config = { 'bootstrap_servers': bootstrap_servers, # Kafka集群地址 'value_serializer': lambda v: json.dumps(v).encode('utf-8'), # 設(shè)置值的序列化器為JSON 'batch_size': 16384, # 批處理大小限制(字節(jié)數(shù)),到達(dá)這個(gè)大小后會(huì)發(fā)送批量數(shù)據(jù) 'linger_ms': 10, # 毫秒,數(shù)據(jù)滯留時(shí)間(即使batch.size未滿,linger.ms時(shí)間到了也會(huì)發(fā)送數(shù)據(jù)) 'acks': 'all' # 確認(rèn)設(shè)置,等待所有副本節(jié)點(diǎn)的確認(rèn) } producer = KafkaProducer(**producer_config) return producer if __name__ == "__main__": count = 200000 # 記錄行數(shù) vin_count = 10 # 車輛數(shù)量 bootstrap_servers = "ld-bp1n18l34fefk****-proxy-stream.lindorm.rds.aliyuncs.com:30080" # 中間件連接地址 topicName = "-LINSTREAM-default.dwd-vehicle-tbox-stream" # 根據(jù)實(shí)際情況設(shè)置 vins = [random_string() for _ in range(vin_count)] producer = create_kafka_producer(bootstrap_servers=bootstrap_servers) insert_number = 0 start_time = datetime.datetime.now().timestamp() insert_vins = set() for _ in range(count): vin = random.choice(vins) insert_vins.add(vin) row_json = generate_vehicle_tbox_row(vin, datetime.datetime.now().timestamp() * 1000) producer.send(topicName, row_json) insert_number = insert_number + 1 if insert_number == 10000: print("insert row 10000") producer.flush() insert_number = 0 producer.flush() producer.close() print("insert " + str(count) + ", cost " + str(datetime.datetime.now().timestamp() - start_time) + " s.\n") print("insert vins is " , insert_vins)
參數(shù)說明
參數(shù)
說明
bootstrap_servers
Lindorm中間件連接地址。獲取方式:在Lindorm管理控制臺(tái)左側(cè)導(dǎo)航欄,選擇
。topicName
topic名稱,格式為
-LINSTREAM-
+ Database名+“.”+流表名。執(zhí)行以下命令運(yùn)行腳本文件,將模擬車機(jī)原始報(bào)文數(shù)據(jù)批量導(dǎo)入。
python3 demo.py
(可選)驗(yàn)證數(shù)據(jù)導(dǎo)入結(jié)果。
再次使用Lindorm-cli連接寬表引擎。
./lindorm-cli -url <jdbc url> -username <默認(rèn)用戶名> -password <默認(rèn)初始密碼>
執(zhí)行以下命令驗(yàn)證導(dǎo)入結(jié)果。
SELECT * FROM dwd_vehicle_tbox LIMIT 10;
通過計(jì)算引擎進(jìn)行復(fù)雜查詢
創(chuàng)建列存索引
在進(jìn)行復(fù)雜查詢之前,您需要?jiǎng)?chuàng)建列存索引來增強(qiáng)數(shù)據(jù)分析計(jì)算能力,從而實(shí)現(xiàn)高效的數(shù)據(jù)查詢。
通過Lindorm-cli連接寬表引擎。
./lindorm-cli -url <jdbc url> -username <username> -password <password>
創(chuàng)建列存索引
column_index_dwd_vehi
。CREATE INDEX column_index_dwd_vehicle_tbox USING COLUMNAR ON dwd_vehicle_tbox(*) PARTITION BY ENUMERABLE (bucket(128, vin)) WITH (`lindorm_columnar.user.index.database` = 'vehicle_db', `lindorm_columnar.user.index.table` = 'dwd_vehicle_tbox_column_idx');
(可選)驗(yàn)證索引信息和狀態(tài)。
SHOW INDEX FROM dwd_vehicle_tbox;
返回結(jié)果:
+--------------+------------------+-------------------------------+-------------+----------------+------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+-----------------------------------------+ | TABLE_SCHEMA | DATA_TABLE | INDEX_NAME | INDEX_STATE | INDEX_PROGRESS | INDEX_TYPE | INDEX_COVERED | INDEX_COLUMN | INDEX_TTL | INDEX_DESCRIPTION | +--------------+------------------+-------------------------------+-------------+----------------+------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+-----------------------------------------+ | default | dwd_vehicle_tbox | column_index_dwd_vehicle_tbox | ACTIVE | | COLUMNAR | NA | vin,sampletime,DriverStateLinkStatus,AirBagSystemStatus,HODHandoffmonitorValid,BodyCtrlModRollCounter,VehicleSpeed_kmph,SteeringAngle_Deg,BatterySOC_Percent,BrakePedalStatus,AcceleratorPedalPos_Percent,RegenBrakingLevel,CoolantTemperature_C,AEB_Activation,LaneAssistanceStatus,CruiseControlSpeedSet_kmph,ParkingAssistEngaged,RainSensorStatus,TirePressure_FL_psi,TirePressure_FR_psi,TirePressure_RL_psi,TirePressure_RR_psi,LaneDepartureWarningActive,BatteryStateOfHealth_Percent,BatteryTemperature_Avg_C,BatteryMaxCellVoltage_V,BatteryMinCellVoltage_V,EvBatteryTemperature_C | | index table: | | | | | | | | | | | vehicle_db.dwd_vehicle_tbox_column_idx; | | | | | | | | | | | task id: | | | | | | | | | | | 8e60fb75-f01d-4a17-b1fc-9fb50ddc25a8; | | | | | | | | | | | partition by: [hash(128,vin)]; | | | | | | | | | | | attributes: [] | +--------------+------------------+-------------------------------+-------------+----------------+------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+-----------------------------------------+
INDEX_STATE由
BUILDING
變?yōu)?code data-tag="code" code-type="xCode" class="code">ACTIVE時(shí),表示索引已創(chuàng)建完成,此過程大概需等待3分鐘。
復(fù)雜查詢
(可選)車輛的電池健康數(shù)據(jù)按照一定時(shí)間頻率上傳至Lindorm,在執(zhí)行復(fù)雜查詢之前您可以先使用簡(jiǎn)單的查詢語句查看表中數(shù)據(jù)。
例如,查詢某一時(shí)間段內(nèi)的10條電池?cái)?shù)據(jù)。
SELECT vin,BatteryStateOfHealth_Percent FROM lindorm_columnar.vehicle_db.dwd_vehicle_tbox_column_idx WHERE sampletime >= 1686585600000 AND BatteryStateOfHealth_Percent <= 80 LIMIT 10;
返回結(jié)果:
+----------------------------------+------------------------------+ | vin | BatteryStateOfHealth_Percent | +----------------------------------+------------------------------+ | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 23.764850669436843 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 6.215661473439549 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 12.852751497229441 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 8.332735748118846 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 19.596259310247877 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 17.621117691572984 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 66.77781508961095 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 77.56923806011324 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 25.969897299920774 | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | 71.45633174979432 | +----------------------------------+------------------------------+
查詢每輛車最后一次上報(bào)的記錄,并根據(jù)電池健康程度排序,查詢電池健康度最低的前10輛汽車和電池信息。
SELECT vin,BatteryStateOfHealth_Percent FROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY vin ORDER BY sampletime DESC) AS rn FROM lindorm_table.`default`.dwd_vehicle_tbox WHERE sampletime >= 1686585600000) AS tmp WHERE rn=1 ORDER BY BatteryStateOfHealth_Percent ASC LIMIT 10;
返回結(jié)果:
+----------------------------------+------------------------------+ | vin | BatteryStateOfHealth_Percent | +----------------------------------+------------------------------+ | j878HLSbLco8jSVVyTY8CMUZqfkUs28v | 20.652739801362372 | | echVK3CaoAYBSPoKxbaCrMEW8y4BTpmg | 21.518064804363355 | | SLJ1mkIbwBaiSLZO9xc1gy0cbUK69ULc | 23.388871500485052 | | DgBXmx0idrLeSVq08RobnYPxl45sYchb | 27.994995362735676 | | 4pJpua6dn1jzTevlI0NsruBe91rVVix9 | 30.321789199354043 | | CgO3PchAjoKprtBrFbyCG5kK3UGkBcpQ | 31.9348912927222 | | 3gP6BebgBxACvguf0de6juIiwdoCWvWB | 33.72344917241882 | | iMJY8rDr08tFe4BHFQtkalhQ5KSdyOMD | 36.89775232730048 | | Dsn9Wzr65FVZWaq1ajeV6uH7rFLYOH8h | 44.50827494756204 | | Yxoi4mTxvWJB7hKmlPkCnbgK9nUY7Ba2 | 66.27943854842643 | +----------------------------------+------------------------------+
通過搜索引擎進(jìn)行多維檢索
通過搜索索引執(zhí)行多維檢索耗時(shí)更短,效率更高。您可以根據(jù)以下步驟,對(duì)比針對(duì)同一查詢條件時(shí)使用搜索索引和無搜索索引的查詢效率。
未創(chuàng)建搜索索引
基于電池健康和胎壓兩個(gè)維度,查詢過去一年中電池健康程度低(小于50)并且胎壓過低(胎壓指標(biāo)小于2) 的車輛。
-- 1686585600000 = 2023-06-13 0:0:00
SELECT DISTINCT(vin) FROM dwd_vehicle_tbox WHERE sampletime >= 1686585600000 AND BatteryStateOfHealth_Percent < 50 AND (TirePressure_FL_psi < 2 OR TirePressure_FR_psi < 2 OR TirePressure_RL_psi < 2 OR TirePressure_RR_psi < 2);
返回結(jié)果:
+----------------------------------+
| vin |
+----------------------------------+
| 0JImIThOLvmYbKmhCP1Mact83E7XvF6s |
| 4spNfR8OhEsDXXaZADS3jivPQUGPXUQo |
| 59ydPuK3xdCvBV8wB1Y5UHsmWfO2aNQj |
| 5Kq9BkgTzNSexZ3fd3XL7AaF56NNVXHu |
| EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 |
| EwB2929l43ttvFNudMZDogppzbXfzYJ1 |
| FaXdxPwK0An7LbaeUV0r8PmqPoBz7Tn9 |
| KDx9AF9qrr4zhJR3sXsuEmVIANjTj8wg |
| LsvywOyn1lLjbrzEghQlHk3aXHfVr8Py |
| SivBFi3uzuUQT9bjO4jrIO7NEd9PYd55 |
| YC6zOBs7h57aqjIGZddDtzZ2YXfREnG2 |
| hkCS5GQ5sHBy2uyPEj7ifGXs21L4EUHu |
| k0kXqJMvx4gyOWfFUIHG6d4N2K8GFdDP |
| mHFfXFIGeItuZM4G9WYyqrEwyMrumsrZ |
| mXtpBVucRZVdKC2FH9MfP0i3MJCOsXXn |
| nH5YV2MAh3EDA14r2efpIHtIMp3AdsH4 |
| rXVDXz7JZ0PpvBgWu79bsKBWmcykxbnJ |
| rfsvhAgRbikInQ6O7gHDztLNWwQnZjVl |
| xU6qTtaDesFrSlQVLkZDe0vQE15gd5VE |
| yWuGjDH9fyRNAlF7k7HUe4GQFHHzSh9Y |
+----------------------------------+
20 rows in set (94912 ms)
該查詢?yōu)?b>全表掃描,總耗時(shí)為94912 ms。
使用搜索索引
再次通過Lindorm-cli連接寬表引擎。
./lindorm-cli -url <jdbc url> -username <username> -password <password>
創(chuàng)建搜索索引。
CREATE INDEX IF NOT EXISTS dwd_vehicle_tbox_search_idx USING SEARCH ON dwd_vehicle_tbox (BatteryStateOfHealth_Percent,TirePressure_FL_psi,TirePressure_FR_psi,TirePressure_RL_psi,TirePressure_RR_psi);
(可選)查詢搜索索引的狀態(tài)。
SHOW INDEX FROM dwd_vehicle_tbox;
返回結(jié)果:
+--------------+------------------+-------------------------------+-------------+-------------------------------+------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+-----------------------------------------+ | TABLE_SCHEMA | DATA_TABLE | INDEX_NAME | INDEX_STATE | INDEX_PROGRESS | INDEX_TYPE | INDEX_COVERED | INDEX_COLUMN | INDEX_TTL | INDEX_DESCRIPTION | +--------------+------------------+-------------------------------+-------------+-------------------------------+------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+-----------------------------------------+ | default | dwd_vehicle_tbox | dwd_vehicle_tbox_search_idx | ACTIVE | N/A | SEARCH | NA | BatteryStateOfHealth_Percent,TirePressure_FL_psi,TirePressure_FR_psi,TirePressure_RL_psi,TirePressure_RR_psi | -1 | | | default | dwd_vehicle_tbox | column_index_dwd_vehicle_tbox | ACTIVE | 2024-07-08 10:40:09.388 +0800 | COLUMNAR | NA | vin,sampletime,DriverStateLinkStatus,AirBagSystemStatus,HODHandoffmonitorValid,BodyCtrlModRollCounter,VehicleSpeed_kmph,SteeringAngle_Deg,BatterySOC_Percent,BrakePedalStatus,AcceleratorPedalPos_Percent,RegenBrakingLevel,CoolantTemperature_C,AEB_Activation,LaneAssistanceStatus,CruiseControlSpeedSet_kmph,ParkingAssistEngaged,RainSensorStatus,TirePressure_FL_psi,TirePressure_FR_psi,TirePressure_RL_psi,TirePressure_RR_psi,LaneDepartureWarningActive,BatteryStateOfHealth_Percent,BatteryTemperature_Avg_C,BatteryMaxCellVoltage_V,BatteryMinCellVoltage_V,EvBatteryTemperature_C | | index table: | | | | | | | | | | | vehicle_db.dwd_vehicle_tbox_column_idx; | | | | | | | | | | | task id: | | | | | | | | | | | 8e60fb75-f01d-4a17-b1fc-9fb50ddc25a8; | | | | | | | | | | | partition by: [hash(128,vin)]; | | | | | | | | | | | attributes: [] | +--------------+------------------+-------------------------------+-------------+-------------------------------+------------+---------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+-----------------------------------------+
INDEX_STATE由
BUILDING
變?yōu)?code data-tag="code" code-type="xCode" class="code">ACTIVE時(shí),表示索引已創(chuàng)建完成。說明如果索引狀態(tài)一直沒有變?yōu)锳CTIVE狀態(tài),可以通過LTS控制臺(tái)查看搜索索引實(shí)時(shí)同步以及全量同步的執(zhí)行情況。
查看方式:在LTS控制臺(tái)左側(cè)導(dǎo)航欄選擇登錄LTS。
,單擊目標(biāo)任務(wù)名。如何登錄LTS,請(qǐng)參見使用相同查詢語句查詢數(shù)據(jù)。
基于電池健康和胎壓兩個(gè)維度,查詢過去一年電池健康程度低(小于50)且胎壓過低(胎壓指標(biāo)小于2) 的車輛。
-- 1686585600000 = 2023-06-13 0:0:00 SELECT DISTINCT(vin) FROM dwd_vehicle_tbox WHERE sampletime >= 1686585600000 AND BatteryStateOfHealth_Percent < 50 AND (TirePressure_FL_psi < 2 OR TirePressure_FR_psi < 2 OR TirePressure_RL_psi < 2 OR TirePressure_RR_psi < 2);
返回結(jié)果:
+----------------------------------+ | vin | +----------------------------------+ | 0JImIThOLvmYbKmhCP1Mact83E7XvF6s | | 4spNfR8OhEsDXXaZADS3jivPQUGPXUQo | | 59ydPuK3xdCvBV8wB1Y5UHsmWfO2aNQj | | 5Kq9BkgTzNSexZ3fd3XL7AaF56NNVXHu | | EEL5dgXYFjra8jF3tNOUuZPFL0Imh906 | | EwB2929l43ttvFNudMZDogppzbXfzYJ1 | | FaXdxPwK0An7LbaeUV0r8PmqPoBz7Tn9 | | KDx9AF9qrr4zhJR3sXsuEmVIANjTj8wg | | LsvywOyn1lLjbrzEghQlHk3aXHfVr8Py | | SivBFi3uzuUQT9bjO4jrIO7NEd9PYd55 | | YC6zOBs7h57aqjIGZddDtzZ2YXfREnG2 | | hkCS5GQ5sHBy2uyPEj7ifGXs21L4EUHu | | k0kXqJMvx4gyOWfFUIHG6d4N2K8GFdDP | | mHFfXFIGeItuZM4G9WYyqrEwyMrumsrZ | | mXtpBVucRZVdKC2FH9MfP0i3MJCOsXXn | | nH5YV2MAh3EDA14r2efpIHtIMp3AdsH4 | | rXVDXz7JZ0PpvBgWu79bsKBWmcykxbnJ | | rfsvhAgRbikInQ6O7gHDztLNWwQnZjVl | | xU6qTtaDesFrSlQVLkZDe0vQE15gd5VE | | yWuGjDH9fyRNAlF7k7HUe4GQFHHzSh9Y | +----------------------------------+ 20 rows in set (14321 ms)
可以從返回結(jié)果看出,在相同查詢條件下未創(chuàng)建搜索索引時(shí)全表查詢耗時(shí)94912 ms,使用了搜索索引后查詢耗時(shí)14321 ms,時(shí)延大幅降低。
說明搜索引擎在復(fù)雜多條件的查詢下延遲更低,更適用于涉及在線查詢業(yè)務(wù)較多的場(chǎng)景,而計(jì)算引擎更適合做更加復(fù)雜的查詢,例如有離線分析需求的場(chǎng)景。