日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

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)行高效的交互式分析和批處理。

部署流程

image

適用場(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)

  1. 如果您還沒有阿里云賬號(hào),請(qǐng)?jiān)L問阿里云賬號(hào)注冊(cè)頁面,根據(jù)頁面提示完成注冊(cè)。阿里云賬號(hào)是您使用云資源的付費(fèi)實(shí)體,因此是部署方案的必要前提。

  2. 為阿里云賬號(hào)充值。本方案默認(rèn)采用按量付費(fèi)的方式創(chuàng)建資源,請(qǐng)確保賬戶余額大于等于100元。

  3. 創(chuàng)建用于方案部署的RAM用戶。

    1. 創(chuàng)建1個(gè)RAM用戶。具體操作,請(qǐng)參見創(chuàng)建RAM用戶

    2. 為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ī)

  1. 登錄專有網(wǎng)絡(luò)管理控制臺(tái),創(chuàng)建1個(gè)專有網(wǎng)絡(luò)和1臺(tái)交換機(jī)。

  2. 填寫相關(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

  1. 登錄ECS實(shí)例創(chuàng)建頁

  2. 按以下規(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)境。

  3. 勾選服務(wù)協(xié)議,單擊確認(rèn)下單

3.創(chuàng)建云原生多模數(shù)據(jù)庫Lindorm

  1. 登錄Lindorm實(shí)例創(chuàng)建頁

  2. 在購(gòu)買頁面,按以下規(guī)劃配置Lindorm相關(guān)配置項(xiàng)。

    1、商品屬性及網(wǎng)絡(luò)配置

    image

    選項(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)行配置。

    image

  3. 單擊立即購(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)境。

  1. 登錄ECS實(shí)例。

    登錄云服務(wù)器ECS管理控制臺(tái),在目標(biāo)實(shí)例的操作列單擊遠(yuǎn)程連接,使用root權(quán)限通過Workbench遠(yuǎn)程登錄。image

  2. 執(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
  3. 環(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寬表引擎和流引擎。

  1. 下載客戶端安裝包(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
  2. 解壓安裝包。

    # 解壓Lindorm-cli安裝包
    tar zxvf lindorm-cli-linux-latest.tar.gz
    
    # 解壓Lindorm-sqlline安裝包
    tar zxvf lindorm-sqlline-2.0.2.tar.gz

配置Lindorm

  1. 登錄Lindorm管理控制臺(tái)(杭州地域),單擊目標(biāo)實(shí)例ID,進(jìn)入實(shí)例詳情頁。

  2. 設(shè)置Lindorm白名單,將ECS實(shí)例的主私網(wǎng)IP添加至組內(nèi)白名單,保證ECS與Lindorm之間的連通性。image

    說明

    如何查看ECS實(shí)例的主私網(wǎng)IP地址,請(qǐng)參見查看IP地址

  3. 開通搜索索引。搜索索引是寬表引擎與搜索引擎深度融合的特性,更適合復(fù)雜的多維查詢場(chǎng)景。

    imageLTS規(guī)格請(qǐng)按照下表進(jìn)行配置:

    配置項(xiàng)

    說明

    LTS數(shù)據(jù)同步Core規(guī)格

    選擇4核8 GB

    LTS節(jié)點(diǎn)數(shù)量

    配置為1個(gè)。

  4. 請(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ù):

單擊展開字段說明

字段名

類型

備注

vin

STRING

車輛識(shí)別號(hào)(Vehicle Identification Number),是每一輛車的唯一標(biāo)識(shí)。

sampletime

BIGINT

數(shù)據(jù)采樣的時(shí)間點(diǎn),通常為一個(gè)時(shí)間戳,表示數(shù)據(jù)記錄的具體時(shí)刻。

DriverStateLinkStatus

INT

駕駛員狀態(tài)監(jiān)控設(shè)備的連接狀態(tài)。0表示已連接,1表示已斷開。

AirBagSystemStatus

INT

安全氣囊系統(tǒng)狀態(tài)。0表示關(guān)閉,1表示開啟。

HODHandoffmonitorValid

INT

手部脫離方向盤監(jiān)測(cè)系統(tǒng)的合法性狀態(tài)。0表示合法,1表示非法。

BodyCtrlModRollCounter

INT

車身控制模塊的滾動(dòng)計(jì)數(shù)器。

VehicleSpeed_kmph

INT

車輛當(dāng)前行駛速度,單位為千米/小時(shí)(km/h)。

SteeringAngle_Deg

DOUBLE

方向盤當(dāng)前的角度,單位為度(°)。

BatterySOC_Percent

DOUBLE

電池剩余電量,以百分比表示,即電池的SOC(State of Charge)。

BrakePedalStatus

INT

制動(dòng)踏板的狀態(tài),表示是否有制動(dòng)操作。0表示不制動(dòng),1制動(dòng)。

RegenBrakingLevel

INT

能量回收制動(dòng)的級(jí)別,表示再生制動(dòng)的強(qiáng)度。

AcceleratorPedalPos_Percent

DOUBLE

加速踏板的位置,以百分比表示。

CoolantTemperature_C

INT

冷卻液溫度,單位為攝氏度(-°C)。

AEB_Activation

INT

自動(dòng)緊急制動(dòng)的激活狀態(tài),表示是否觸發(fā)了AEB功能。 0表示未啟動(dòng),1表示已啟動(dòng)。

LaneAssistanceStatus

INT

車道保持輔助系統(tǒng)的狀態(tài),表示該功能是否有效。0表示無效,1表示有效。

CruiseControlSpeedSet_kmph

INT

設(shè)定的巡航控制速度,單位為千米/小時(shí)(km/h)。

ParkingAssistEngaged

INT

泊車輔助系統(tǒng)激活狀態(tài),表示是否啟用了自動(dòng)泊車功能。0表示無效,1表示有效。

RainSensorStatus

INT

雨量傳感器狀態(tài),表示是否檢測(cè)到雨水。0表示未檢測(cè)到,1表示檢測(cè)到了雨水。

TirePressure_FL_psi

DOUBLE

前左輪胎壓力,單位為磅每平方英寸(psi)。

TirePressure_FR_psi

DOUBLE

前右輪胎壓力,單位為磅每平方英寸(psi)。

TirePressure_RL_psi

DOUBLE

后左輪胎壓力,單位為磅每平方英寸(psi)。

TirePressure_RR_psi

DOUBLE

后右輪胎壓力,單位為磅每平方英寸(psi)。

LaneDepartureWarningActive

INT

車道偏離警告系統(tǒng)激活狀態(tài),表示系統(tǒng)是否在監(jiān)控和警告駕駛員關(guān)于無意識(shí)的車道變換。0表示關(guān)閉,1表示激活 。

BatteryStateOfHealth_Percent

DOUBLE

電池的健康狀態(tài)。即當(dāng)前電池相對(duì)于全新電池的容量百分比,該數(shù)值越接近100%,表示電池越健康。

BatteryTemperature_Avg_C

INT

電池組中所有電池單元的平均溫度,單位為攝氏度(-°C)。溫度監(jiān)控對(duì)電池的管理和壽命至關(guān)重要。

BatteryMaxCellVoltage_V

DOUBLE

電池組中單個(gè)電池單元的最大電壓,單位為伏特(V)。高電壓可能表明電池充電狀態(tài)良好或單體電壓不均。

BatteryMinCellVoltage_V

DOUBLE

電池組中單個(gè)電池單元的最小電壓,單位為伏特(V)。低電壓可能表明電池放電狀態(tài)過深或出現(xiàn)電池老化。

EvBatteryTemperature_C

DOUBLE

電動(dòng)車電池的溫度,單位為攝氏度(-°C)。

1.創(chuàng)建Lindorm寬表

  1. 登錄云服務(wù)器ECS管理控制臺(tái),在目標(biāo)實(shí)例的操作列單擊遠(yuǎn)程連接,使用root權(quán)限通過Workbench遠(yuǎn)程登錄。image

  2. 跳轉(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

  3. 創(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)
      );
  4. 可選)驗(yàn)證表dwd_vehicle_tbox結(jié)構(gòu)是否正確。

    DESCRIBE TABLE dwd_vehicle_tbox;

    返回結(jié)果:

    單擊展開返回結(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)建流表

  1. 使用組合鍵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)航欄,選擇數(shù)據(jù)庫連接 > 流引擎

  2. 創(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
      );
  3. (可選)執(zhí)行以下語句,驗(yàn)證表結(jié)構(gòu)。

    DESCRIBE dwd_vehicle_tbox_stream;

    返回結(jié)果:

    單擊展開返回結(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ù)

  1. 執(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;
  2. (可選)查看入庫任務(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ù)

  1. 使用組合鍵Ctrl+D斷開流引擎的連接,執(zhí)行以下命令安裝Python依賴。

    python3 -m pip install kafka-python
  2. 創(chuàng)建Python腳本文件demo.py,執(zhí)行以下命令編輯文件。

    vim demo.py
  3. 編寫完整代碼,使用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)航欄,選擇數(shù)據(jù)庫連接 > 消息引擎

    topicName

    topic名稱,格式為-LINSTREAM-+ Database名+“.”+流表名。

  4. 執(zhí)行以下命令運(yùn)行腳本文件,將模擬車機(jī)原始報(bào)文數(shù)據(jù)批量導(dǎo)入。

    python3 demo.py
  5. 可選)驗(yàn)證數(shù)據(jù)導(dǎo)入結(jié)果。

    1. 再次使用Lindorm-cli連接寬表引擎。

      ./lindorm-cli -url <jdbc url> -username <默認(rèn)用戶名> -password <默認(rèn)初始密碼>
    2. 執(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ù)查詢。

  1. 通過Lindorm-cli連接寬表引擎。

    ./lindorm-cli -url <jdbc url> -username <username> -password <password>
  2. 創(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');
  3. 可選)驗(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_STATEBUILDING變?yōu)?code data-tag="code" code-type="xCode" class="code">ACTIVE時(shí),表示索引已創(chuàng)建完成,此過程大概需等待3分鐘。

復(fù)雜查詢

  1. 可選)車輛的電池健康數(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é)果:

    單擊展開返回結(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            |
    +----------------------------------+------------------------------+
  2. 查詢每輛車最后一次上報(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é)果:

    單擊展開返回結(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é)果:

單擊展開返回結(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。

使用搜索索引

  1. 再次通過Lindorm-cli連接寬表引擎。

    ./lindorm-cli -url <jdbc url> -username <username> -password <password>
  2. 創(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);
  3. (可選)查詢搜索索引的狀態(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_STATEBUILDING變?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)航欄選擇Lindorm Search > 全量同步,單擊目標(biāo)任務(wù)名。如何登錄LTS,請(qǐng)參見登錄LTS

  4. 使用相同查詢語句查詢數(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é)果:

    單擊展開返回結(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)景。