• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于鋼鐵物流數(shù)據(jù)的索引與查詢技術(shù)研究

    2022-09-26 13:06:28錢榮濤毛嘉莉
    關(guān)鍵詞:車牌號(hào)運(yùn)單時(shí)空

    鄒 韜,錢榮濤,毛嘉莉

    (華東師范大學(xué) 數(shù)據(jù)科學(xué)與工程學(xué)院,上海 200062)

    0 引 言

    隨著大數(shù)據(jù)時(shí)代的發(fā)展,鋼鐵物流也迎來了數(shù)字化轉(zhuǎn)型,越來越多的網(wǎng)絡(luò)貨運(yùn)平臺(tái)應(yīng)運(yùn)而生,由此產(chǎn)生了大規(guī)模的多源物流數(shù)據(jù).這些數(shù)據(jù)作為網(wǎng)絡(luò)貨運(yùn)平臺(tái)的基礎(chǔ),為司機(jī)畫像、車貨匹配、車輛調(diào)度以及運(yùn)輸監(jiān)控等關(guān)鍵任務(wù)提供支撐,因此,研究面向物流數(shù)據(jù)的索引與查詢是極為重要的.

    然而,使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫對(duì)物流數(shù)據(jù)進(jìn)行管理面臨一系列挑戰(zhàn).首先,貨運(yùn)數(shù)據(jù)類型繁多且來源復(fù)雜.以山東省某鋼鐵集團(tuán)下屬的物流企業(yè)—京創(chuàng)智匯物流科技有限公司 (以下簡(jiǎn)稱京創(chuàng))為例,在其研發(fā)的網(wǎng)絡(luò)貨運(yùn)平臺(tái)上每天產(chǎn)生的數(shù)據(jù)類型包括購買和銷售場(chǎng)景中的訂單數(shù)據(jù),倉儲(chǔ)場(chǎng)景中的庫存數(shù)據(jù),運(yùn)輸場(chǎng)景中的運(yùn)單數(shù)據(jù)和軌跡數(shù)據(jù)等.然而,京創(chuàng)在使用關(guān)系型數(shù)據(jù)庫管理這些數(shù)據(jù)時(shí),對(duì)不同場(chǎng)景中的數(shù)據(jù)存儲(chǔ)在不同表中管理,僅在每列數(shù)據(jù)上構(gòu)建索引,并不能直接滿足物流數(shù)據(jù)復(fù)雜查詢的需求.這體現(xiàn)在: ①對(duì)于不同表中數(shù)據(jù)的連接查詢是最常用的查詢類型之一,京創(chuàng)通過多表連接構(gòu)建寬表的方式來完成連接查詢,這導(dǎo)致了大量的冗余查詢與計(jì)算,從而影響查詢性能;② 面對(duì)以軌跡數(shù)據(jù)為代表的時(shí)空數(shù)據(jù)的快速更新與動(dòng)態(tài)增長(zhǎng),傳統(tǒng)關(guān)系型數(shù)據(jù)庫由于存儲(chǔ)容量和平臺(tái)可擴(kuò)展性的影響,無法很好應(yīng)對(duì)海量時(shí)空數(shù)據(jù)的存儲(chǔ)與查詢.例如,隨著單表中軌跡數(shù)據(jù)的增長(zhǎng),僅通過B 樹索引會(huì)存在大量冗余計(jì)算,使得時(shí)空查詢性能隨著數(shù)據(jù)的增多而降低.而選擇各類R 樹進(jìn)行索引則存在頻繁插入導(dǎo)致R 樹分裂,更新索引開銷過大的問題.綜上所述,面向鋼鐵物流數(shù)據(jù),進(jìn)行數(shù)據(jù)融合,并設(shè)計(jì)合理的存儲(chǔ)方式、高效的索引與查詢方案是亟待解決的實(shí)際問題.表1 給出該貨運(yùn)平臺(tái)貨運(yùn)物流數(shù)據(jù)量情況,可以發(fā)現(xiàn)軌跡數(shù)據(jù)總量最大、相應(yīng)的增長(zhǎng)速度也最大.隨著業(yè)務(wù)的增多和對(duì)更高質(zhì)量 (采樣間隔更低) 軌跡的需求,軌跡數(shù)據(jù)的增長(zhǎng)速度會(huì)大大提高.而京創(chuàng)現(xiàn)行的管理方式無法很好管理這些仍在快速增長(zhǎng)的軌跡數(shù)據(jù)。

    表1 貨運(yùn)物流數(shù)據(jù)量Tab.1 Volume of freight logistic data

    為了解決鋼鐵物流數(shù)據(jù)存儲(chǔ)查詢時(shí)面臨的上述挑戰(zhàn),本文將實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)分級(jí)存儲(chǔ),并構(gòu)建相應(yīng)的索引,以期提高物流數(shù)據(jù)的存儲(chǔ)和查詢效率.具體步驟為: 首先,使用Spark 對(duì)于多源的物流數(shù)據(jù)進(jìn)行融合;然后,對(duì)于海量的歷史物流數(shù)據(jù)與貨運(yùn)平臺(tái)實(shí)時(shí)采集到的多源數(shù)據(jù)采用分級(jí)管理,將實(shí)時(shí)采集得到的物流數(shù)據(jù)存儲(chǔ)在內(nèi)存數(shù)據(jù)庫Redis (Remote Dictionary Server) 上,以保證其高效的訪問性能,并將歷史數(shù)據(jù)存儲(chǔ)在基于磁盤的HBase (Hadoop Database) 數(shù)據(jù)庫中;最后,在此基礎(chǔ)上,利用開源索引工具GeoMesa 構(gòu)建時(shí)空索引與屬性索引以支持歷史數(shù)據(jù)的高效查詢,同時(shí),在 Redis 上為實(shí)時(shí)數(shù)據(jù)構(gòu)建相應(yīng)的索引,并按照設(shè)定的時(shí)間周期對(duì)數(shù)據(jù)進(jìn)行切片導(dǎo)出,將導(dǎo)出的歷史數(shù)據(jù)保存到HBase 中.

    本文的主要結(jié)果如下:

    (1) 針對(duì)鋼鐵貨運(yùn)平臺(tái)所產(chǎn)生的海量多源數(shù)據(jù),利用分布式云存儲(chǔ)和NoSQL 技術(shù),設(shè)計(jì)分級(jí)存儲(chǔ)策略,將貨運(yùn)平臺(tái)所產(chǎn)生的歷史數(shù)據(jù)與實(shí)時(shí)數(shù)據(jù)分開存儲(chǔ),確保實(shí)時(shí)數(shù)據(jù)的高效訪問.

    (2) 為滿足物流調(diào)度決策必需的基于跨源數(shù)據(jù)的高頻次關(guān)聯(lián)查詢、分析需求,利用Spark 對(duì)車輛所產(chǎn)生的軌跡數(shù)據(jù)、運(yùn)單數(shù)據(jù)、車輛信息數(shù)據(jù)等跨源數(shù)據(jù)進(jìn)行融合,生成具有多屬性的運(yùn)單軌跡數(shù)據(jù).

    (3) 為歷史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)構(gòu)建時(shí)空索引和屬性索引,以提升屬性查詢、時(shí)空范圍查詢和運(yùn)單軌跡時(shí)空范圍查詢的效率.

    (4) 在物流企業(yè)提供的真實(shí)數(shù)據(jù)集上進(jìn)行了大量對(duì)比實(shí)驗(yàn),驗(yàn)證了本文所提出的存儲(chǔ)方式和構(gòu)建的索引相較于傳統(tǒng)方法有顯著的性能提升.

    1 相關(guān)工作

    時(shí)空數(shù)據(jù)作為物流數(shù)據(jù)中最重要的組成部分,是物流數(shù)據(jù)管理中最為關(guān)鍵的一環(huán),許多物流數(shù)據(jù)管理平臺(tái)都為物流中的時(shí)空數(shù)據(jù)設(shè)計(jì)特有的管理策略,如京東的城市時(shí)空數(shù)據(jù)引擎 (Jd Urban Spatio-temporal Data Engine),菜鳥的STAMP (Spatial-Temporal Analysis and Management Platform)平臺(tái)等.因此,對(duì)于物流數(shù)據(jù)的管理,要先考慮對(duì)于時(shí)空數(shù)據(jù)的存儲(chǔ)和索引.現(xiàn)有對(duì)于時(shí)空數(shù)據(jù)索引和查詢的研究可以分為兩類: 單機(jī)系統(tǒng)和分布式系統(tǒng).

    在單機(jī)系統(tǒng)中,許多索引是在R-Tree 基礎(chǔ)上進(jìn)行擴(kuò)展,主要分為兩類.第一類是增加時(shí)間維度,構(gòu)建3D R-Tree,例如,STR-Tree (Sort-Tile-Recursive-Tree),TB-Tree (Trajectory-Bundle-Tree),以減少查詢對(duì)磁盤的訪問.第二類則是先對(duì)時(shí)間段進(jìn)行分區(qū),然后在每個(gè)時(shí)間分區(qū)內(nèi)再構(gòu)建R-Tree 索引.例如,Historical R-Tree,Multi-version 3D R-Trees.然而隨著時(shí)空數(shù)據(jù)規(guī)模的不斷增大,各種基于R-Tree結(jié)構(gòu)的索引查詢性能受到單機(jī)計(jì)算資源的限制,導(dǎo)致難以高效查詢出一定時(shí)空條件下的時(shí)空對(duì)象.

    在分布式系統(tǒng)中,很多研究[1-8]在這些系統(tǒng)之上構(gòu)建時(shí)空索引擴(kuò)展模塊,以支持對(duì)時(shí)空數(shù)據(jù)的高效查詢.Simba[1]基于Spark SQL 框架進(jìn)行擴(kuò)展,結(jié)合RDD (Resilient Distributed Datasets)結(jié)構(gòu)構(gòu)建了兩層索引機(jī)制: ①為所有分區(qū)構(gòu)建一個(gè)全局索引;② 在各個(gè)數(shù)據(jù)分區(qū)內(nèi)部構(gòu)建本地索引,以支持范圍查詢和kNN (k-Nearest Neighbor)查詢?cè)趦?nèi)的多種查詢.DITA (Distributed In-Memory Trajectory Analytics)[2]利用起止點(diǎn)信息進(jìn)行分區(qū)和構(gòu)建全局索引,根據(jù)軌跡中的關(guān)鍵點(diǎn)構(gòu)建本地索引,以支持高效的相似查詢,并設(shè)計(jì)了負(fù)載均衡策略.Ratel[3]構(gòu)建了兩層索引: ①在全局根據(jù)軌跡的起止點(diǎn)建立R 樹索引;② 在本地為軌跡中間的節(jié)點(diǎn)構(gòu)建網(wǎng)格索引,以支持軌跡的相似查詢和起止點(diǎn)范圍查詢.Dragoon[4]設(shè)計(jì)了一個(gè)可變RDD 模型,以混合方式對(duì)于歷史軌跡和實(shí)時(shí)軌跡流進(jìn)行管理,并設(shè)計(jì)不同的分區(qū)策略以支持ID (IDentity)查詢、范圍查詢和kNN 查詢.這些系統(tǒng)是基于Spark 的數(shù)據(jù)管理系統(tǒng),在處理數(shù)據(jù)時(shí)需要將所有數(shù)據(jù)加載到內(nèi)存中,這就要求有大量?jī)?nèi)存的高性能集群,對(duì)于平臺(tái)而言代價(jià)過于高昂.還有許多研究[5-8]基于Hbase 構(gòu)建時(shí)空數(shù)據(jù)管理系統(tǒng),如multi-dimensional-HBase[5]在HBase 的基礎(chǔ)上擴(kuò)展了對(duì)空間查詢的支持.通過構(gòu)建KD (K-Dimensional)樹和四叉樹索引支持空間范圍查詢和kNN 查詢,GeoMesaa[6]利用GeoHash 將多維空間信息轉(zhuǎn)換為一維字符串,與時(shí)間信息交叉編碼生成時(shí)空索引,并通過ECQL (Extended Common Query Language)過濾器查詢數(shù)據(jù),以支持時(shí)空范圍查詢.ST-Hash[7]在GeoHash 的基礎(chǔ)上提出ST-Hash 編碼方式,在編碼過程中除了空間維度外,還包括時(shí)間維度,以支持時(shí)空點(diǎn)查詢和時(shí)空范圍查詢.JUST[8]在GeoMesa 的基礎(chǔ)上構(gòu)建時(shí)空數(shù)據(jù)引擎,增加Z2T、XZ2T 索引和查詢算法以支持更高效的ID 查詢和時(shí)空范圍查詢.STEHIX[9]利用Hilbert 填充曲線對(duì)空間進(jìn)行劃分和編碼,并對(duì)Region 中的數(shù)據(jù)構(gòu)建粒度更細(xì)的空間索引和時(shí)間索引.當(dāng)進(jìn)行時(shí)空查詢時(shí),首先,利用空間信息定位到具體的Region;然后,分別利用空間索引和時(shí)間索引檢索結(jié)果;最后,取二者查詢數(shù)量較小的作為索引結(jié)果返回.

    在物流場(chǎng)景中除了時(shí)空數(shù)據(jù)外,還有非時(shí)空數(shù)據(jù),這類數(shù)據(jù)對(duì)于物流場(chǎng)景的應(yīng)用同樣關(guān)鍵,因此,同樣需要對(duì)它們構(gòu)建索引,以支持對(duì)它們的查詢. GR2-Tree[10]由3D R-Tree 和包含R-Tree 節(jié)點(diǎn)屬性的結(jié)構(gòu)體組成,可以實(shí)現(xiàn)對(duì)多屬性的軌跡的查詢,但隨著軌跡點(diǎn)的插入,會(huì)引起R-Tree 節(jié)點(diǎn)的分裂,相應(yīng)的屬性結(jié)構(gòu)體也需要更新,維護(hù)索引的開銷較大.JUST 以屬性為主鍵構(gòu)建屬性索引,每構(gòu)建一個(gè)屬性索引,就需要復(fù)制一份數(shù)據(jù),隨著屬性類別的增加,索引也相應(yīng)急劇增加,導(dǎo)致大量數(shù)據(jù)冗余.Feng 等[11]通過圖模型對(duì)實(shí)體節(jié)點(diǎn)構(gòu)建全局索引,并在內(nèi)存中以對(duì)象形式存儲(chǔ)節(jié)點(diǎn)和相關(guān)聯(lián)的屬性數(shù)據(jù),但是由于索引結(jié)構(gòu)依賴于不同數(shù)據(jù)庫系統(tǒng),全局索引與局部索引關(guān)聯(lián)性較弱,存在索引不一致、維護(hù)代價(jià)高等問題.

    2 整體框架與實(shí)現(xiàn)

    2.1 數(shù)據(jù)介紹和整體框架

    本文所使用的數(shù)據(jù)主要來自于貨車的軌跡數(shù)據(jù)表、運(yùn)單數(shù)據(jù)表與運(yùn)單司機(jī)表,其中后兩個(gè)表中的字段較多,僅列出其中重要的字段.軌跡數(shù)據(jù)表由12 個(gè)字段組成包括: 車牌號(hào),采樣時(shí)間,經(jīng)度,緯度,速度,方向,地址,省份,市,縣,查詢時(shí)間和插入時(shí)間,軌跡數(shù)據(jù)包括39 142 000 個(gè)GPS (Global Positioning System)軌跡點(diǎn),共526 359 條軌跡.而運(yùn)單表則有130 個(gè)字段組成,是一張寬表,主要包括3 部分的信息: 運(yùn)單相關(guān)信息,如運(yùn)單號(hào)、運(yùn)單狀態(tài)、發(fā)貨與收貨公司標(biāo)識(shí)符、返單時(shí)間、返單地址等;貨物相關(guān)信息,如貨物類型、重量等;運(yùn)載相關(guān)信息,如起止點(diǎn)標(biāo)識(shí)符、運(yùn)送貨車的車牌號(hào)等.運(yùn)單數(shù)據(jù)表包括2 157 000 條運(yùn)單數(shù)據(jù),表中的許多數(shù)據(jù)都是缺失的,是典型的稀疏數(shù)據(jù).運(yùn)單司機(jī)表包括18 個(gè)字段,運(yùn)單司機(jī)表是以運(yùn)單為單位呈現(xiàn)司機(jī)的信息,包括運(yùn)單號(hào)、公司標(biāo)識(shí)符、司機(jī)姓名、電話、車牌號(hào)等字段,運(yùn)單司機(jī)表包括2 251 814 條數(shù)據(jù).

    京創(chuàng)所使用的關(guān)系型數(shù)據(jù)庫存儲(chǔ)運(yùn)單表與運(yùn)單司機(jī)表這樣的稀疏數(shù)據(jù)存在的問題有: 數(shù)據(jù)冗余,浪費(fèi)大量存儲(chǔ)空間,并且查詢性能較差.當(dāng)按行存儲(chǔ)時(shí),即使該位為空,也需要占用空間.當(dāng)查詢時(shí),并不需要讀出所有表中的所有屬性,但是關(guān)系數(shù)據(jù)庫會(huì)對(duì)記錄按順序逐條訪問,這導(dǎo)致了較長(zhǎng)的查詢延遲.

    針對(duì)以上問題,選取HBase 來存儲(chǔ)數(shù)據(jù).一方面,HBase 作為面向列存儲(chǔ)的分布式數(shù)據(jù)庫,適合用來存儲(chǔ)海量的軌跡數(shù)據(jù)和稀疏的運(yùn)單數(shù)據(jù),因?yàn)槭敲嫦蛄写鎯?chǔ),空列并不占用空間,可以有效節(jié)省存儲(chǔ)空間,在查詢時(shí)僅遍歷需要的列,也可以大大節(jié)省查詢時(shí)間.另一方面,因?yàn)?參考京東與阿里在存儲(chǔ)海量物流數(shù)據(jù)時(shí),也是在HBase 上進(jìn)行擴(kuò)展的,相關(guān)資料比較多,所以,本文選取HBase 來存儲(chǔ)海量的歷史物流數(shù)據(jù).京創(chuàng)希望冷熱數(shù)據(jù)能夠分開存儲(chǔ),以滿足場(chǎng)景中對(duì)于實(shí)時(shí)數(shù)據(jù)的查詢要求.Redis 作為一個(gè)高性能的內(nèi)存數(shù)據(jù)庫,是用來緩存熱點(diǎn)數(shù)據(jù)的最佳選擇之一,本文使用Redis 緩存實(shí)時(shí)數(shù)據(jù).

    論文整體框架如圖1 所示,首先,對(duì)多源物流數(shù)據(jù)進(jìn)行分類,分為時(shí)空數(shù)據(jù)和非時(shí)空數(shù)據(jù),并按照?qǐng)鼍爸袛?shù)據(jù)之間的關(guān)聯(lián),將二者融合關(guān)聯(lián)起來.然后,將歷史數(shù)據(jù)存儲(chǔ)在HBase 里并構(gòu)建屬性索引、Z2 索引、XZ2 索引,將實(shí)時(shí)數(shù)據(jù)存儲(chǔ)在Redis 里并構(gòu)建屬性索引和時(shí)空網(wǎng)格索引.最后,分別在HBase 與 Redis 上實(shí)現(xiàn)屬性查詢、時(shí)空范圍查詢和運(yùn)單軌跡的時(shí)空范圍查詢.

    圖1 整體框架Fig.1 Overall architecture

    2.2 數(shù)據(jù)融合

    在鋼鐵貨運(yùn)的運(yùn)力預(yù)測(cè)、運(yùn)力調(diào)度與車貨匹配等應(yīng)用中,所需的數(shù)據(jù)除了車輛的軌跡數(shù)據(jù)外,還包括該車輛的信息、運(yùn)送的貨物類型等數(shù)據(jù),因此,查詢就涉及對(duì)運(yùn)單、車輛以及軌跡等跨源數(shù)據(jù)的關(guān)聯(lián).如果不預(yù)先對(duì)數(shù)據(jù)進(jìn)行融合,在完成相關(guān)查詢與分析時(shí),需要通過連接多表查詢獲得結(jié)果,這樣會(huì)耗費(fèi)大量的時(shí)間.鑒于此,本文以貨車的軌跡數(shù)據(jù)為中心,將其與不同來源的物流數(shù)據(jù)進(jìn)行融合,并將融合后的中間結(jié)果保存在HDFS (Hadoop Distributed File System)文件中,這樣既可以將其作為物流數(shù)據(jù)挖掘的輸入數(shù)據(jù),又便于后續(xù)數(shù)據(jù)的寫入和索引構(gòu)建.

    數(shù)據(jù)融合旨在將預(yù)處理過后的軌跡數(shù)據(jù)與網(wǎng)絡(luò)貨運(yùn)平臺(tái)的物流運(yùn)營(yíng)數(shù)據(jù)按照應(yīng)用需求進(jìn)行融合,產(chǎn)生多屬性的運(yùn)單軌跡.運(yùn)單軌跡是由帶有時(shí)間戳的位置序列和表征車輛、貨物信息的屬性組成.以軌跡數(shù)據(jù)和運(yùn)單數(shù)據(jù)融合,生成帶有運(yùn)單號(hào)和貨物類型的運(yùn)單軌跡為例.具體步驟為: ①讀取軌跡數(shù)據(jù),將相同車牌的軌跡點(diǎn)放在一個(gè)列表里,并按照采樣時(shí)間對(duì)其進(jìn)行排序.如果兩個(gè)鄰接的軌跡點(diǎn)采樣時(shí)間間隔超過設(shè)定閾值 (如1 h),將軌跡進(jìn)行分段.② 根據(jù)車牌號(hào)將運(yùn)單號(hào)和軌跡段進(jìn)行匹配,將同一輛貨車的軌跡按運(yùn)單號(hào)進(jìn)行拆分,根據(jù)軌跡段中第一個(gè)軌跡點(diǎn)的采樣時(shí)間將其與裝載時(shí)間最近的運(yùn)單進(jìn)行匹配.③獲得的運(yùn)單軌跡形式為“車牌號(hào)+運(yùn)單號(hào)+貨物類型+軌跡點(diǎn)列表”,采用這種存儲(chǔ)方式可以有效減小軌跡數(shù)據(jù)存儲(chǔ)所占的空間,其中每一行是一條與運(yùn)單匹配的軌跡,具體示例如圖2 所示.

    圖2 數(shù)據(jù)融合舉例Fig.2 Example of data fusion

    2.3 數(shù)據(jù)的存儲(chǔ)和索引

    對(duì)于運(yùn)單軌跡數(shù)據(jù)的存儲(chǔ)和索引,主要分為兩部分: 一部分是對(duì)于歷史數(shù)據(jù)的處理,另一部分是對(duì)于實(shí)時(shí)數(shù)據(jù)的處理.

    2.3.1 歷史數(shù)據(jù)的存儲(chǔ)和索引

    對(duì)于歷史數(shù)據(jù),考慮到其巨大的數(shù)據(jù)量以及需要進(jìn)行頻繁的插入,選取分布式NoSQL 數(shù)據(jù)庫HBase 來進(jìn)行存儲(chǔ),因?yàn)镠Base 擴(kuò)展簡(jiǎn)單、讀寫速度大且存儲(chǔ)成本低.HBase 中的數(shù)據(jù)以鍵值 (keyvalue) 的形式進(jìn)行存儲(chǔ),其中key 由行鍵、列族、列和時(shí)間戳組成,當(dāng)想要獲得相應(yīng)數(shù)據(jù)時(shí),需要通過key 獲得相應(yīng)的value.

    對(duì)于索引,則使用GeoMesa 來進(jìn)行構(gòu)建.GeoMesa 共支持6 種索引,分別是ID 索引、屬性索引、Z2 索引、Z3 索引、XZ2 索引和XZ3 索引.其中,ID 索引和屬性索引屬于普通屬性索引,主要用于查詢非時(shí)空屬性.Z2、Z3、XZ2、XZ3 屬于時(shí)空索引,用于查詢時(shí)空屬性,其中,Z2 和Z3 索引用于索引點(diǎn)類型的數(shù)據(jù),Z2 索引針對(duì)包含經(jīng)緯度的二維點(diǎn)類型數(shù)據(jù),Z3 索引針對(duì)包含經(jīng)緯度和時(shí)間的三維點(diǎn)類型數(shù)據(jù).XZ2 和XZ3 索引則是在Z2、Z3 索引基礎(chǔ)上進(jìn)行擴(kuò)展,用于索引線或者面等類型的數(shù)據(jù).

    GeoMesa 中時(shí)空索引的原理是,利用GeoHash 編碼系統(tǒng)將二維的地理位置編碼為由字母和數(shù)字組成的一維字符串,然后用這個(gè)一維的字符串對(duì)時(shí)空數(shù)據(jù)進(jìn)行索引.GeoHash 屬于二維Z 階填充曲線的實(shí)際應(yīng)用,編碼過程如下: ①轉(zhuǎn)換經(jīng)緯度,將地球緯度區(qū)間[–90°,90°]和經(jīng)度區(qū)間[–180°,180°]不斷進(jìn)行左右劃分,如果給定坐標(biāo)屬于二分的右區(qū)間范圍,則標(biāo)記一個(gè)1,否則標(biāo)記一個(gè)0,針對(duì)不同的編碼層級(jí),分別得到經(jīng)度和緯度的二進(jìn)制編碼;② 將經(jīng)度依次放在偶數(shù)位上,將緯度依次放在奇數(shù)位上組成一維的二進(jìn)制編碼;③利用Base32 編碼技術(shù)將二進(jìn)制編碼轉(zhuǎn)換為由數(shù)字和字母組成的字符串.對(duì)于三維數(shù)據(jù),則是在GeoHash 的基礎(chǔ)上針對(duì)時(shí)間緯度進(jìn)行擴(kuò)展,生成時(shí)空索引.

    存儲(chǔ)數(shù)據(jù)的存儲(chǔ)類型選擇經(jīng)緯度組成的坐標(biāo)點(diǎn)類型,將ID 設(shè)置為車牌號(hào)加采樣時(shí)間組成的字符串,對(duì)貨物類型和運(yùn)單號(hào)這兩個(gè)屬性構(gòu)建屬性索引,用于支持對(duì)這兩者的屬性查詢,并構(gòu)建Z2 索引和Z3 索引,用于支持對(duì)點(diǎn)數(shù)據(jù)的時(shí)空查詢.

    基于GeoMesa 的Java 接口開發(fā)了將貨運(yùn)物流數(shù)據(jù)導(dǎo)入HBase 數(shù)據(jù)庫的程序,程序的主要步驟為: ①根據(jù)HBase 的配置信息,構(gòu)建連接,創(chuàng)建存儲(chǔ)對(duì)象;② 根據(jù)貨車軌跡數(shù)據(jù)的屬性創(chuàng)建相應(yīng)的屬性名和類型,并創(chuàng)建相應(yīng)的表結(jié)構(gòu);③根據(jù)實(shí)際需求設(shè)置索引的屬性;④ 將數(shù)據(jù)轉(zhuǎn)換成已定義的結(jié)構(gòu)類型,然后寫入數(shù)據(jù)庫.

    2.3.2 實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)和索引

    在貨運(yùn)物流場(chǎng)景中,實(shí)時(shí)數(shù)據(jù)作為最近產(chǎn)生的數(shù)據(jù),具有極高的時(shí)效價(jià)值,經(jīng)常被運(yùn)用到各種實(shí)時(shí)場(chǎng)景分析中,屬于熱點(diǎn)數(shù)據(jù).Redis 是一個(gè)開源的內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),在內(nèi)存中存取數(shù)據(jù)比磁盤讀取效率高,并且支持多種類型的數(shù)據(jù)結(jié)構(gòu),更符合實(shí)時(shí)數(shù)據(jù)的存儲(chǔ)和查詢要求.并且Redis 可以設(shè)置key 的過期時(shí)間,便于淘汰隨時(shí)間推移的過時(shí)數(shù)據(jù).對(duì)于實(shí)時(shí)產(chǎn)生的流數(shù)據(jù),將其存儲(chǔ)在Redis 中,并構(gòu)建相應(yīng)的網(wǎng)格索引和屬性索引,以支持各種實(shí)時(shí)查詢.

    實(shí)時(shí)的運(yùn)單軌跡數(shù)據(jù)由車牌號(hào)、經(jīng)緯度、采樣時(shí)間和其他屬性如貨物類型、訂單號(hào)等組成.在Redis 中,采用集合來存儲(chǔ)運(yùn)單軌跡,集合的key 為車牌號(hào)加時(shí)間段,value 為該時(shí)間段內(nèi)這輛貨車的所有運(yùn)單軌跡點(diǎn),具體處理步驟為: ①時(shí)間段劃分與歸并.這里設(shè)置時(shí)間段長(zhǎng)度為1 h,在實(shí)際使用中可以根據(jù)場(chǎng)景對(duì)數(shù)據(jù)時(shí)間范圍的不同要求,更改時(shí)間段的長(zhǎng)短.將1 h 內(nèi)接收到的數(shù)據(jù)歸入同一個(gè)時(shí)間段,使同一輛貨車在同一時(shí)段內(nèi)具有相同的key.例如,對(duì)于時(shí)刻2021-05-19 7:35:58,按照1 h 間隔,將其歸入2021-05-19 7:00:00,轉(zhuǎn)換成時(shí)間戳為1621378800,將歸并后的時(shí)間戳作為key 的組成部分.② key 的組成.用時(shí)間段轉(zhuǎn)成的時(shí)間戳以及車牌號(hào)組合成key,例如,歸并后時(shí)間戳為1621378800,車牌號(hào)為蘇H5435Z,則key 為蘇H5435ZT1621378800,增加的T 表示時(shí)間段前綴.③value 的組成.用Redis 中特有的數(shù)據(jù)結(jié)構(gòu),即有序集合,來存儲(chǔ)運(yùn)單軌跡數(shù)據(jù),集合中存入的是每條運(yùn)單軌跡數(shù)據(jù)的時(shí)間戳、經(jīng)緯度坐標(biāo)及其他屬性,如貨物類型、運(yùn)單號(hào)等.在有序集合中用軌跡點(diǎn)采樣時(shí)間的時(shí)間戳作為分?jǐn)?shù)值 (Redis 中用于對(duì)數(shù)據(jù)進(jìn)行排序),value 為經(jīng)緯度、時(shí)間、貨物類型、運(yùn)單號(hào)等信息拼接而成的字符串.

    為了提高運(yùn)單軌跡的查詢效率,需要構(gòu)建索引,因此,設(shè)計(jì)了網(wǎng)格索引和屬性索引,以支持運(yùn)單軌跡的查詢.

    關(guān)于實(shí)時(shí)數(shù)據(jù)的時(shí)空索引構(gòu)建,本文采用網(wǎng)格索引,主要是因?yàn)閿?shù)據(jù)需要實(shí)時(shí)更新,所以要求索引能夠在數(shù)據(jù)增刪時(shí)進(jìn)行更新.網(wǎng)格索引在每次更新時(shí)只需要修改某一網(wǎng)格范圍內(nèi)的軌跡點(diǎn)數(shù)據(jù),開銷較小.Redis 作為key-value 的數(shù)據(jù)庫,通過網(wǎng)格編碼將二維經(jīng)緯度數(shù)據(jù)映射為一維數(shù)據(jù),再加上歸并的時(shí)間段,實(shí)現(xiàn)起來較為簡(jiǎn)單,無須額外的存儲(chǔ)結(jié)構(gòu).索引的具體構(gòu)建步驟為: ①網(wǎng)格劃分.貨運(yùn)物流軌跡數(shù)據(jù)分布在我國(guó)的各個(gè)省份,需要查詢的數(shù)據(jù)范圍覆蓋我國(guó)大部分省份.本文把經(jīng)度范圍設(shè)置為73°E~ 135°E,緯度范圍為3°N~ 53°N.這里綜合考慮設(shè)置網(wǎng)格索引粒度為0.1°,采用經(jīng)度、緯度對(duì)網(wǎng)格編碼,以每個(gè)網(wǎng)格中最小經(jīng)緯度坐標(biāo)編碼,橫坐標(biāo)表示東經(jīng) (用E 表示),縱坐標(biāo)表示北緯 (用N 表示) .例如,坐標(biāo) (119.329 711°,35.174 452°) 所在網(wǎng)格的網(wǎng)格號(hào)表示為E119.3N35.1.② key 的組成.索引key 值中的時(shí)間段也按照1h 間隔劃分,則key 由網(wǎng)格編號(hào)加時(shí)間段轉(zhuǎn)換后的時(shí)間戳.例如,對(duì)于2021-05-19 7:35:58,經(jīng)緯度坐標(biāo)為 (119.329 711°,35.174 452°) 的軌跡點(diǎn),將其歸入2021-05-19 7:00:00,轉(zhuǎn)換成時(shí)間戳為1621378800,所在網(wǎng)格號(hào)為E119.3N35.1,所以key 為E119.3N15.1 T1621378800.③value 的組成.value 是一個(gè)有序集合,集合內(nèi)存入的是所對(duì)應(yīng)網(wǎng)格在該時(shí)間段內(nèi)所有軌跡點(diǎn)的車牌號(hào),每個(gè)車牌號(hào)所對(duì)應(yīng)的分?jǐn)?shù)值為每條軌跡數(shù)據(jù)的采樣時(shí)間.例如,車牌號(hào)為蘇H5435Z 的軌跡點(diǎn)所對(duì)應(yīng)的分?jǐn)?shù)值為2021-05-19 7:35:58,轉(zhuǎn)換成的時(shí)間戳1621380958,value 為蘇H5435Z.

    屬性索引同樣需要考慮索引更新問題,所以對(duì)于屬性索引也加上其所屬的時(shí)間段,便于當(dāng)其所對(duì)應(yīng)軌跡點(diǎn)過期時(shí),同時(shí)刪除所對(duì)應(yīng)的屬性索引.具體步驟為: ①時(shí)間段劃分與歸并.與存儲(chǔ)模塊中一樣,將1 h 內(nèi)的接收到的數(shù)據(jù)歸入同一個(gè)時(shí)間段,使同一屬性在同一時(shí)段內(nèi)具有相同的key.② key 的組成.屬性索引的key 主要由屬性值和時(shí)間段轉(zhuǎn)成的時(shí)間戳組成,例如,對(duì)貨物類型構(gòu)建屬性索引,假設(shè)貨物類型為熱軋卷板,歸并后時(shí)間戳為1621378800,則key 為熱軋卷板T1621378800.③value 的組成.本文使用無序集合來存儲(chǔ)屬性索引的value,集合中存入的是該時(shí)間段屬性為key 中所對(duì)應(yīng)屬性值的車牌號(hào).例如,key 為熱軋卷板T1621378800,所對(duì)應(yīng)的value 為2021-05-19 7:00:00—8:00:00 內(nèi)所有運(yùn)送貨物類型為熱軋卷板的車牌號(hào)集合.

    2.4 數(shù)據(jù)的查詢

    2.4.1 查詢需求分析和定義

    在貨運(yùn)物流信息平臺(tái)的實(shí)際應(yīng)用中,經(jīng)常需要通過查詢得到所需的數(shù)據(jù)結(jié)果以進(jìn)行分析.在鋼鐵貨運(yùn)場(chǎng)景中,常用的查詢包含屬性查詢、時(shí)空范圍查詢和運(yùn)單軌跡時(shí)空范圍查詢.例如,當(dāng)查詢某輛貨車執(zhí)行某個(gè)運(yùn)單的軌跡時(shí),需要實(shí)現(xiàn)屬性查詢;當(dāng)查詢指定時(shí)段 (如15:00:00—17:00:00) 返回鋼廠的貨車信息時(shí),需使用時(shí)空范圍查詢;當(dāng)查詢特定范圍內(nèi)運(yùn)力數(shù)時(shí),涉及時(shí)空范圍與貨物類型,需要執(zhí)行運(yùn)單軌跡的時(shí)空范圍查詢.

    定義1(軌跡點(diǎn)p) 軌跡點(diǎn)是通過定位設(shè)備采集到的貨車的位置信息,表示為p=(pid,plat,plon,pt),其中pid表示軌跡點(diǎn)編號(hào),plat表示緯度,plon表示經(jīng)度,pt表示采集時(shí)間.

    定義2(軌跡T) 軌跡T可以表示為一個(gè)由軌跡點(diǎn){p0,p1,···,pn}構(gòu)成的序列,描述貨車在一定時(shí)間范圍內(nèi)的位置變化.

    定義3(運(yùn)單軌跡O) 運(yùn)單軌跡由貨車執(zhí)行運(yùn)輸任務(wù)時(shí)被分派的運(yùn)單屬性以及貨車軌跡組成,可以表示為O=(Oatt,Ot) ,其中Oatt=(Owb,Oti,Ogt)表示運(yùn)單屬性集合,Owb表示運(yùn)單編號(hào),Oti表示車牌號(hào),Ogt表示運(yùn)送貨物類型,Ot表示貨車軌跡.

    定義4(運(yùn)單軌跡數(shù)據(jù)集So) 運(yùn)單軌跡數(shù)據(jù)集So={O1,O2,···,O|So|}是一定時(shí)空范圍內(nèi)運(yùn)單軌跡的集合,其中|So|表示集合的元素個(gè)數(shù).

    定義5(屬性查詢) 給定運(yùn)單軌跡數(shù)據(jù)集So和軌跡屬性值Qa,返回軌跡集合Sa,其中Sa由所有滿足查詢軌跡屬性值Qa的軌跡組成.

    定義6(時(shí)空范圍查詢) 給定運(yùn)單軌跡數(shù)據(jù)集So和時(shí)空范圍Qr,返回軌跡集合Sr,其中Sr由所有存在軌跡點(diǎn)在查詢范圍Qr內(nèi)的軌跡組成.

    定義7(運(yùn)單軌跡的時(shí)空范圍查詢) 給定運(yùn)單軌跡數(shù)據(jù)集So、軌跡屬性值Qa和時(shí)空范圍Qr,返回軌跡集合Qar,其中Qar包含所有存在軌跡點(diǎn)在查詢范圍內(nèi)且屬性滿足Qa的軌跡組成.

    因?yàn)閷?shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)分別存儲(chǔ)在Redis 和HBase 里,并構(gòu)建了相應(yīng)的索引,所以將從歷史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)這兩個(gè)方面介紹.

    2.4.2 歷史數(shù)據(jù)的查詢

    歷史數(shù)據(jù)存儲(chǔ)在HBase 里,并通過GeoMesa 構(gòu)建了屬性索引、Z2 索引、Z3 索引等.對(duì)于歷史數(shù)據(jù)的查詢也是通過GeoMesa 這個(gè)中間件來實(shí)現(xiàn)的.GeoMesa 提供了一套統(tǒng)一的GeoTools Query 查詢接口,這個(gè)接口采用基于CQL (Common Query Language)的條件查詢,支持各種空間關(guān)系謂詞和時(shí)間關(guān)系謂詞.

    使用GeoTools 進(jìn)行查詢的基本流程如下.

    (1)根據(jù)查詢條件編寫ECQL 下面給出每種類型查詢的例子.

    ①屬性查詢.定義查詢的CQL 為String attribute=“truck_no=蘇H5435Z”,如果需要查詢滿足多個(gè)屬性要求,可以用關(guān)鍵字“AND”將多個(gè)條件連接起來,在查詢語句中關(guān)鍵字為大寫.

    ② 時(shí)空范圍查詢.定義查詢語句“String range=“BBOX(geom,119.37,35.17,119.38,35.30)AND dtg DURING 2021-05-21T00:00:00.000Z/2021-05-22T00:00:00.000Z””,其中關(guān)鍵字“BBOX”用于限制空間范圍,“DURING”用于限制時(shí)間范圍,“AND”用于連接不同的查詢條件.

    ③運(yùn)單軌跡的時(shí)空范圍查詢.對(duì)于歷史數(shù)據(jù)的運(yùn)單軌跡時(shí)空范圍查詢,給出查詢的時(shí)空范圍和相應(yīng)的屬性值限制,使用關(guān)鍵字“AND”進(jìn)行連接.例如,定義CQL 語句 String capacity=“goodDes=‘熱軋卷板’ AND BBOX(geom,119.37,35.17,119.38,35.30) AND dtg DURING 2021-05-21T00:00:00.000Z/2021-05-22T00:00:00.000Z”.

    (2)獲取待查詢表的表名與表結(jié)構(gòu).

    (3)用CQL 創(chuàng)建Filter 類型的對(duì)象.

    (4)創(chuàng)建查詢對(duì)象,將(2)與(3)中獲取的表結(jié)構(gòu)、表名和Filter 對(duì)象作為查詢對(duì)象.

    (5)構(gòu)建GeoMesa 連接,創(chuàng)建存儲(chǔ)對(duì)象.

    (6)使用存儲(chǔ)對(duì)象獲取數(shù)據(jù)讀取器,將查詢對(duì)象傳給數(shù)據(jù)讀取器執(zhí)行查詢,查詢結(jié)果通過讀取器獲取.

    GeoMesa 在執(zhí)行查詢計(jì)劃時(shí),重寫CQL 以進(jìn)行快速評(píng)估并優(yōu)化,再根據(jù)可用索引對(duì)過濾條件進(jìn)行拆分,由索引選擇決定主過濾器和輔助過濾器.例如,對(duì)于運(yùn)單軌跡的時(shí)空范圍查詢,GeoMesa 分解出兩種索引方案.

    (1) Z3 索引+屬性Filter 索引.

    Z3 索引 (主過濾器): BBOX(geom,119.37,35.17,119.38,35.30) AND dtg DURING 2021-05-21T00:00:00.000Z/2021-05-22T00:00:00.000Z.

    屬性Filter 索引 (輔助過濾器): goodDes=‘熱軋卷板’.

    (2) Z2 索引+時(shí)間和屬性Fliter 索引.

    Z2 索引 (主過濾器): BBOX(geom,119.37,35.17,119.38,35.30).

    時(shí)間和屬性Flite 索引 (輔助過濾器): dtg DURING 2021-05-21T00:00:00.000Z/2021-05-22T00:00:00.000Z AND goodDes=‘熱軋卷板’.

    GeoMesa 會(huì)對(duì)以上兩種索引組合進(jìn)行比較,并選擇更優(yōu)的組合.

    2.4.3 實(shí)時(shí)數(shù)據(jù)的查詢

    實(shí)時(shí)數(shù)據(jù)存儲(chǔ)在Redis 里,對(duì)于實(shí)時(shí)數(shù)據(jù)的查詢主要通過構(gòu)建相應(yīng)索引表,加速查詢的過程.

    (1) 屬性查詢.當(dāng)對(duì)軌跡數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),key 用的是貨車車牌號(hào),對(duì)于車牌號(hào)的屬性查詢,可以使用Redis 中有序集合的Zrange 命令獲得指定車牌號(hào)的軌跡.對(duì)于其他屬性的屬性查詢,則需要先通過該屬性的索引,以得到滿足該屬性條件的車牌號(hào),再根據(jù)車牌號(hào)查詢得到軌跡數(shù)據(jù).當(dāng)查詢滿足多個(gè)屬性要求的軌跡時(shí),首先,需要根據(jù)屬性索引得到滿足每個(gè)屬性的車牌號(hào);然后,對(duì)這些車牌號(hào)的集合求并集;最后,根據(jù)并集中的車牌號(hào)查詢其軌跡數(shù)據(jù).

    (2) 時(shí)空范圍查詢.對(duì)于時(shí)空范圍查詢,首先,需要根據(jù)給定的時(shí)間范圍,計(jì)算得到與其相交時(shí)間段的候選時(shí)間戳;其次,根據(jù)給定查詢的空間范圍,獲得與其相交的候選的網(wǎng)格集合,最終的查詢結(jié)果在候選的網(wǎng)格集合中;再次,將候選時(shí)間戳和候選網(wǎng)格集合兩兩組合得到候選時(shí)空網(wǎng)格集合,取出候選時(shí)空網(wǎng)格中的軌跡點(diǎn);最后,篩選出滿足時(shí)空范圍條件的軌跡點(diǎn)集合,并返回結(jié)果.

    (3) 運(yùn)單軌跡的時(shí)空范圍查詢.首先,計(jì)算與查詢的時(shí)空范圍相交的網(wǎng)格和時(shí)段,將網(wǎng)格與時(shí)段逐一組合成候選 key 集合,并篩選出候選 key 集合中滿足時(shí)空范圍要求的車牌號(hào)集合;然后,計(jì)算符合屬性要求的車牌號(hào)集合;最后,對(duì)這兩個(gè)車牌號(hào)集合求交集,根據(jù)交集中的車牌號(hào)查詢最終結(jié)果并返回.具體流程如圖3 所示.

    圖3 運(yùn)單軌跡時(shí)空范圍查詢流程Fig.3 Process of spatio-temporal range query on attribute trajectory

    3 實(shí) 驗(yàn)

    本文在真實(shí)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),對(duì)查詢的性能進(jìn)行評(píng)估.本文所使用的數(shù)據(jù)集來自山東省某鋼鐵物流企業(yè)運(yùn)營(yíng)的網(wǎng)絡(luò)貨運(yùn)平臺(tái)的真實(shí)數(shù)據(jù)集,包含從2021 年05 月01 日至2022 年02 月28 日共10 個(gè)月的運(yùn)單及其軌跡數(shù)據(jù).其中,軌跡數(shù)據(jù)包含39 142 000 個(gè)GPS 軌跡點(diǎn),共526 359 條軌跡;運(yùn)單數(shù)據(jù)有2 157 000 條.實(shí)驗(yàn)所使用的集群共有3 個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)配備Centos7.4、4 核中央處理器、16 G 內(nèi)存、200 G 磁盤,選擇PostgreSQL 數(shù)據(jù)庫作為對(duì)比數(shù)據(jù)庫,版本是13.3.PostgreSQL 是一個(gè)對(duì)象關(guān)系型數(shù)據(jù)庫,通過安裝PostGIS 插件擴(kuò)展了PostgreSQL 對(duì)空間數(shù)據(jù)的支持.將軌跡數(shù)據(jù)和運(yùn)單屬性存入PostgreSQL 中,并對(duì)其中的經(jīng)度、緯度、時(shí)間戳構(gòu)建索引,實(shí)驗(yàn)中對(duì)比了PostgreSQL 與本文所提出方案的存儲(chǔ)性能和查詢性能.

    3.1 存儲(chǔ)性能

    存儲(chǔ)性能的評(píng)價(jià)指標(biāo)主要分為兩部分: 一部分是存儲(chǔ)軌跡數(shù)據(jù)和運(yùn)單數(shù)據(jù)所需的磁盤空間;另一部分是將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫所需時(shí)間.

    圖4 展示的是數(shù)據(jù)融合前后數(shù)據(jù)存儲(chǔ)磁盤所需要的空間大小,將全部軌跡數(shù)據(jù)分為5 等份,分別測(cè)試占全部數(shù)據(jù)20%、40%、60%、80%與100%數(shù)據(jù)量的存儲(chǔ)空間.在融合前,原始數(shù)據(jù)一條記錄存儲(chǔ)一個(gè)軌跡點(diǎn),融合后一條記錄存儲(chǔ)一條軌跡.從圖4 中可以看出,隨著數(shù)據(jù)規(guī)模的增大,數(shù)據(jù)融合前后占用磁盤空間大小差異更加明顯,和融合前相比,融合后的數(shù)據(jù)存儲(chǔ)所占用的空間更小.說明經(jīng)過數(shù)據(jù)融合可以顯著減小軌跡的存儲(chǔ)空間.

    圖4 存儲(chǔ)空間Fig.4 Data size

    將本文所提出的物流數(shù)據(jù)管理系統(tǒng)與PostgreSQL 的數(shù)據(jù)存儲(chǔ)時(shí)間進(jìn)行對(duì)比,結(jié)果如圖5 所示,可以看出,本文所提出的數(shù)據(jù)管理系統(tǒng)存儲(chǔ)數(shù)據(jù)耗時(shí)更短,在批量插入數(shù)據(jù)時(shí)更有優(yōu)勢(shì).究其原因,是本文使用的HBase 數(shù)據(jù)庫底層是基于分布式文件系統(tǒng)HDFS,能夠?qū)崿F(xiàn)對(duì)海量數(shù)據(jù)存儲(chǔ)的秒級(jí)響應(yīng),在軌跡這類超大規(guī)模的數(shù)據(jù)處理中非常高效.PostgreSQL 這一傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,本身不支持并行插入數(shù)據(jù),而且PostgreSQL 內(nèi)部所使用的是R-Tree 索引,隨著數(shù)據(jù)的不斷插入,R-Tree 索引頻繁更新,導(dǎo)致存儲(chǔ)性能不高.本文所提出的系統(tǒng)使用網(wǎng)格索引并且按照鍵值對(duì)的形式存儲(chǔ)管理數(shù)據(jù),所以存儲(chǔ)效率較高,適合物流管理領(lǐng)域?qū)Υ罅寇壽E等數(shù)據(jù)進(jìn)行存儲(chǔ).

    圖5 寫入耗時(shí)Fig.5 Writing time

    3.2 查詢性能

    (1) 屬性查詢.使用貨車的車牌號(hào)和運(yùn)送的貨物類型作為查詢條件,測(cè)試屬性查詢的性能,結(jié)果如圖6 所示.可以看出,在數(shù)據(jù)量較少時(shí),PostgreSQL 查詢耗時(shí)更短,因?yàn)?本文所提出的方案使用GeoMesa 進(jìn)行查詢,在執(zhí)行查詢計(jì)劃時(shí),都需要解析 CQL,并計(jì)算不同索引的查詢性能,無論數(shù)據(jù)規(guī)模的大小,這一過程都需要耗費(fèi)一定的時(shí)間,所以,在數(shù)據(jù)較少時(shí)優(yōu)勢(shì)并不明顯.但是隨著數(shù)據(jù)量的增加,PostgreSQL 的查詢耗時(shí)急劇增長(zhǎng),而本文所提出的系統(tǒng)中使用HBase 的查詢耗時(shí)增長(zhǎng)則比較平緩,當(dāng)數(shù)據(jù)量達(dá)到千萬級(jí)別時(shí),本文所提出的方案遠(yuǎn)優(yōu)于對(duì)比方案.反映了本文所提出的物流數(shù)據(jù)管理系統(tǒng)查詢性能的高效率.

    圖6 屬性查詢性能Fig.6 Performance of attribute query

    (2) 時(shí)空范圍查詢.在全部數(shù)據(jù)上分別測(cè)試了不同時(shí)間范圍和不同空間范圍下的查詢耗時(shí).在空間范圍查詢實(shí)驗(yàn)中,分別選取5 km × 5 km、10 km × 10 km、15 km × 15 km、20 km × 20 km、25 km × 25 km 共5 個(gè)不同矩形空間范圍作為查詢條件,同時(shí)保持其在相同的時(shí)間范圍,在本文所提出的系統(tǒng)和PostgreSQL 上分別進(jìn)行實(shí)驗(yàn).在時(shí)間范圍查詢實(shí)驗(yàn)中,分別選取1 h、1 d、7 d、30 d 共4 種不同的時(shí)間范圍,并控制空間范圍相同進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖7 所示.

    圖7 時(shí)空范圍查詢性能Fig.7 Performance of spatio-temporal range query

    從圖7(a)中可以發(fā)現(xiàn),無論是本文所提出的系統(tǒng),還是PostgreSQL,整體上,查詢耗時(shí)和查詢的空間范圍關(guān)系不大,因?yàn)?在真實(shí)的物流場(chǎng)景中,數(shù)據(jù)分布是不均勻的,增大時(shí)空范圍不能保證查詢到更多的結(jié)果,所以,查詢時(shí)間受空間范圍的影響較小.另外,可以看出,本文所提出的系統(tǒng)的查詢耗時(shí)遠(yuǎn)短于PostgreSQL 的查詢耗時(shí),后者的查詢耗時(shí)大概是前者的6 倍.圖7(b)的時(shí)間范圍查詢實(shí)驗(yàn)結(jié)果與圖7(a)類似,與PostgreSQL 相比,本文所提出的系統(tǒng)的查詢性能更優(yōu).

    (3) 運(yùn)單軌跡的時(shí)空范圍查詢.分別進(jìn)行時(shí)間范圍查詢和空間范圍查詢的實(shí)驗(yàn),對(duì)于同樣的屬性條件,選取不同空間范圍測(cè)試查詢耗時(shí),實(shí)驗(yàn)結(jié)果如圖8 所示.從圖8(a)中可以發(fā)現(xiàn),隨著空間范圍的增大,PostgreSQL 查詢耗時(shí)逐步增長(zhǎng),而本文所提出系統(tǒng)的查詢耗時(shí)沒有明顯變化,這是因?yàn)?本文所提出的系統(tǒng)底層使用HBase 進(jìn)行存儲(chǔ),HBase 的擴(kuò)展性非常高,所以,即使查詢數(shù)量增加,查詢所需要的時(shí)間幾乎不變.從圖8(b)中可以看出,對(duì)于運(yùn)單軌跡的時(shí)空范圍查詢,時(shí)間范圍的改變對(duì)于查詢性能影響較小,但因?yàn)楸疚乃岢龅南到y(tǒng)底層HBase 的高擴(kuò)展性,本文所提出的系統(tǒng)的查詢耗時(shí)也短于PostgreSQL 的查詢耗時(shí).

    圖8 運(yùn)單軌跡時(shí)空范圍查詢耗時(shí)Fig.8 Performance of spatio-temporal range query on attribute trajectory

    從以上3 種查詢實(shí)驗(yàn)的結(jié)果可以看出,本文所提出的物流數(shù)據(jù)管理系統(tǒng)對(duì)于屬性查詢、時(shí)空范圍查詢和運(yùn)單軌跡的時(shí)空范圍查詢這3 類查詢較為高效.特別是當(dāng)數(shù)據(jù)量非常大時(shí),查詢性能明顯優(yōu)于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,更適合鋼鐵物流數(shù)據(jù)管理的場(chǎng)景.

    4 結(jié) 語

    為實(shí)現(xiàn)對(duì)鋼鐵網(wǎng)絡(luò)貨運(yùn)平臺(tái)產(chǎn)生的海量、多源的物流數(shù)據(jù)的存儲(chǔ)和查詢,本文基于HBase 和Redis 將海量歷史數(shù)據(jù)和實(shí)時(shí)數(shù)據(jù)分級(jí)存儲(chǔ)管理,并在此基礎(chǔ)上構(gòu)建 Z2、Z3 與網(wǎng)格索引等時(shí)空索引與屬性索引來提升查詢效率.通過在真實(shí)物流數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),驗(yàn)證了本文所提出的索引能有效提高查詢效率.在未來研究中,考慮針對(duì)場(chǎng)景中常用到的其他查詢,如相似查詢和kNN 查詢,并設(shè)計(jì)相應(yīng)的索引和查詢優(yōu)化策略.

    猜你喜歡
    車牌號(hào)運(yùn)單時(shí)空
    運(yùn)單信息誰在拿它做交易
    鐵路運(yùn)單物權(quán)化業(yè)務(wù)模式及實(shí)施路徑探討
    跨越時(shí)空的相遇
    鏡中的時(shí)空穿梭
    玩一次時(shí)空大“穿越”
    我出高考數(shù)學(xué)題(十八)
    差一點(diǎn)兒
    故事大王(2016年10期)2016-11-07 16:03:40
    高速公路收費(fèi)數(shù)據(jù)車牌號(hào)質(zhì)量分析
    時(shí)空之門
    快遞電子運(yùn)單協(xié)議要便于用戶閱知、保存
    黄片播放在线免费| 在线观看www视频免费| 伊人久久大香线蕉亚洲五| 久久精品熟女亚洲av麻豆精品| 国产精品久久久人人做人人爽| 美女午夜性视频免费| 老汉色av国产亚洲站长工具| 国产精品 国内视频| 精品国产一区二区久久| 久久久久久久久免费视频了| 亚洲精品第二区| 亚洲图色成人| 黄色视频不卡| 久久国产精品大桥未久av| 免费高清在线观看日韩| 午夜av观看不卡| 婷婷丁香在线五月| 高清av免费在线| 精品一区二区三区av网在线观看 | 亚洲中文字幕日韩| 日韩欧美一区视频在线观看| 国产伦人伦偷精品视频| 99热网站在线观看| 99国产精品99久久久久| 丝袜在线中文字幕| 国产又色又爽无遮挡免| 亚洲av欧美aⅴ国产| 国产国语露脸激情在线看| 中文字幕最新亚洲高清| 777久久人妻少妇嫩草av网站| 亚洲精品国产av蜜桃| kizo精华| 亚洲精品自拍成人| 黑人猛操日本美女一级片| 一级毛片我不卡| 婷婷成人精品国产| 中文字幕人妻丝袜一区二区| 一区二区三区精品91| 777米奇影视久久| 国产免费视频播放在线视频| 欧美日韩亚洲高清精品| 久久精品国产亚洲av涩爱| 欧美精品一区二区大全| 各种免费的搞黄视频| 一级毛片女人18水好多 | 亚洲五月婷婷丁香| www.熟女人妻精品国产| a 毛片基地| 精品人妻一区二区三区麻豆| 亚洲成色77777| 又大又爽又粗| www.熟女人妻精品国产| 国产精品久久久久久精品电影小说| 自线自在国产av| 亚洲精品一二三| 大话2 男鬼变身卡| 亚洲国产av影院在线观看| 成人18禁高潮啪啪吃奶动态图| 咕卡用的链子| 飞空精品影院首页| 宅男免费午夜| 汤姆久久久久久久影院中文字幕| 亚洲综合色网址| 美女福利国产在线| 狠狠精品人妻久久久久久综合| 国产不卡av网站在线观看| 亚洲欧美精品自产自拍| 一边亲一边摸免费视频| 欧美日韩精品网址| 国产真人三级小视频在线观看| 免费高清在线观看日韩| 99热网站在线观看| av不卡在线播放| 久久精品国产a三级三级三级| 久久精品国产亚洲av涩爱| 亚洲人成电影观看| 国产精品一区二区免费欧美 | 在线观看一区二区三区激情| 天堂中文最新版在线下载| 菩萨蛮人人尽说江南好唐韦庄| 久久99热这里只频精品6学生| 欧美成人午夜精品| 久久亚洲国产成人精品v| 母亲3免费完整高清在线观看| 各种免费的搞黄视频| 一级毛片我不卡| 乱人伦中国视频| 视频区欧美日本亚洲| 久9热在线精品视频| 国产精品一区二区在线不卡| 亚洲精品日本国产第一区| 免费黄频网站在线观看国产| 在线看a的网站| 国产精品亚洲av一区麻豆| 精品卡一卡二卡四卡免费| 欧美日韩亚洲高清精品| 黑丝袜美女国产一区| 国产欧美日韩综合在线一区二区| 男男h啪啪无遮挡| 欧美 日韩 精品 国产| 99re6热这里在线精品视频| 国产福利在线免费观看视频| 欧美人与性动交α欧美精品济南到| 久久午夜综合久久蜜桃| 亚洲国产欧美日韩在线播放| 成人亚洲精品一区在线观看| 十分钟在线观看高清视频www| av电影中文网址| 国产一区二区 视频在线| 一级黄色大片毛片| 99re6热这里在线精品视频| 亚洲色图 男人天堂 中文字幕| 9色porny在线观看| 午夜精品国产一区二区电影| 你懂的网址亚洲精品在线观看| 爱豆传媒免费全集在线观看| 日本欧美国产在线视频| 欧美变态另类bdsm刘玥| 成年人黄色毛片网站| 9色porny在线观看| 99久久人妻综合| 老司机影院毛片| 性少妇av在线| 中文乱码字字幕精品一区二区三区| 男人添女人高潮全过程视频| 亚洲激情五月婷婷啪啪| 久久99热这里只频精品6学生| 国产欧美日韩一区二区三区在线| 叶爱在线成人免费视频播放| 美国免费a级毛片| 久久久久久人人人人人| 欧美日韩综合久久久久久| 两人在一起打扑克的视频| 一区二区三区乱码不卡18| tube8黄色片| 成年美女黄网站色视频大全免费| 一边亲一边摸免费视频| 老汉色∧v一级毛片| 日本黄色日本黄色录像| 国产成人免费观看mmmm| 一二三四在线观看免费中文在| 久久久精品免费免费高清| 国产精品国产三级专区第一集| 欧美日韩视频高清一区二区三区二| 精品久久久精品久久久| 另类亚洲欧美激情| 中国美女看黄片| 男女高潮啪啪啪动态图| 一本久久精品| 日韩视频在线欧美| 大香蕉久久网| 欧美精品一区二区免费开放| 一区二区三区四区激情视频| 亚洲av综合色区一区| 日韩 欧美 亚洲 中文字幕| 一级,二级,三级黄色视频| 亚洲av男天堂| 黄色怎么调成土黄色| 中文乱码字字幕精品一区二区三区| 老汉色∧v一级毛片| 成人午夜精彩视频在线观看| cao死你这个sao货| 久久久久视频综合| 色播在线永久视频| 欧美 日韩 精品 国产| 久久鲁丝午夜福利片| 日韩av在线免费看完整版不卡| 成人国产av品久久久| 丁香六月欧美| 婷婷成人精品国产| 国产一卡二卡三卡精品| 69精品国产乱码久久久| 青春草亚洲视频在线观看| 国产免费一区二区三区四区乱码| 中文字幕制服av| 亚洲欧美激情在线| 18禁国产床啪视频网站| 大型av网站在线播放| 亚洲欧洲国产日韩| 精品高清国产在线一区| 曰老女人黄片| 老汉色av国产亚洲站长工具| 精品国产乱码久久久久久男人| 成在线人永久免费视频| 女警被强在线播放| 欧美日韩av久久| 亚洲成人免费av在线播放| 男女下面插进去视频免费观看| 亚洲精品乱久久久久久| 亚洲精品国产区一区二| 捣出白浆h1v1| 夫妻性生交免费视频一级片| 午夜激情久久久久久久| 一区二区三区乱码不卡18| 777久久人妻少妇嫩草av网站| 亚洲欧美色中文字幕在线| 老司机影院毛片| 日本午夜av视频| 国产激情久久老熟女| 校园人妻丝袜中文字幕| 男女午夜视频在线观看| 精品久久久久久久毛片微露脸 | 国产亚洲av高清不卡| 久久亚洲精品不卡| 美女大奶头黄色视频| 亚洲国产欧美在线一区| 欧美性长视频在线观看| 亚洲,欧美,日韩| 久久免费观看电影| 国产高清国产精品国产三级| 男女午夜视频在线观看| 国产精品久久久久久人妻精品电影 | 国产高清国产精品国产三级| 少妇 在线观看| av欧美777| 后天国语完整版免费观看| 青春草亚洲视频在线观看| 午夜激情av网站| 九草在线视频观看| 女警被强在线播放| 不卡av一区二区三区| 人人妻人人爽人人添夜夜欢视频| 国产精品一国产av| 人人妻人人添人人爽欧美一区卜| 精品亚洲成a人片在线观看| 国产亚洲欧美在线一区二区| 色婷婷av一区二区三区视频| 激情视频va一区二区三区| 一区二区日韩欧美中文字幕| 尾随美女入室| 18禁裸乳无遮挡动漫免费视频| 一级黄片播放器| 夫妻性生交免费视频一级片| 午夜免费鲁丝| 自线自在国产av| 成人亚洲精品一区在线观看| 啦啦啦在线观看免费高清www| 超碰成人久久| 女性生殖器流出的白浆| 精品久久久久久电影网| 国产精品久久久久成人av| 宅男免费午夜| 又大又黄又爽视频免费| 男男h啪啪无遮挡| av视频免费观看在线观看| 亚洲av日韩在线播放| 中文精品一卡2卡3卡4更新| 亚洲国产最新在线播放| 欧美日本中文国产一区发布| 日本午夜av视频| 一区二区三区四区激情视频| 91字幕亚洲| 日韩 欧美 亚洲 中文字幕| 亚洲七黄色美女视频| 色综合欧美亚洲国产小说| 夜夜骑夜夜射夜夜干| 欧美黄色片欧美黄色片| 免费在线观看黄色视频的| 男女高潮啪啪啪动态图| 国产精品麻豆人妻色哟哟久久| 十八禁人妻一区二区| 看免费av毛片| 久久人人97超碰香蕉20202| 亚洲av欧美aⅴ国产| 伦理电影免费视频| 精品亚洲成国产av| 亚洲欧洲精品一区二区精品久久久| 又黄又粗又硬又大视频| 丝瓜视频免费看黄片| 久久精品人人爽人人爽视色| svipshipincom国产片| 曰老女人黄片| 老司机深夜福利视频在线观看 | 人人妻,人人澡人人爽秒播 | 国产亚洲午夜精品一区二区久久| 97精品久久久久久久久久精品| 午夜福利免费观看在线| 18禁裸乳无遮挡动漫免费视频| 欧美亚洲日本最大视频资源| 香蕉丝袜av| 91老司机精品| 亚洲精品一区蜜桃| 成年人黄色毛片网站| 国产成人a∨麻豆精品| 精品人妻一区二区三区麻豆| 成人黄色视频免费在线看| 亚洲 欧美一区二区三区| 午夜精品国产一区二区电影| kizo精华| 中文精品一卡2卡3卡4更新| 国产精品免费视频内射| 精品少妇黑人巨大在线播放| bbb黄色大片| 亚洲成人免费电影在线观看 | 久久这里只有精品19| 免费一级毛片在线播放高清视频 | 亚洲av美国av| 青草久久国产| 王馨瑶露胸无遮挡在线观看| 国产成人系列免费观看| 最黄视频免费看| 大片免费播放器 马上看| 国产亚洲av片在线观看秒播厂| 国产精品av久久久久免费| 免费不卡黄色视频| 国产深夜福利视频在线观看| 大型av网站在线播放| 久久精品国产综合久久久| 美女午夜性视频免费| 国产麻豆69| www日本在线高清视频| 日韩精品免费视频一区二区三区| 亚洲欧美成人综合另类久久久| 一本综合久久免费| 久久狼人影院| 自拍欧美九色日韩亚洲蝌蚪91| 男人爽女人下面视频在线观看| 看十八女毛片水多多多| 中文字幕人妻熟女乱码| 欧美精品啪啪一区二区三区 | 日本五十路高清| 精品国产一区二区三区久久久樱花| 久久精品久久精品一区二区三区| 在线观看人妻少妇| 国产精品秋霞免费鲁丝片| 夜夜骑夜夜射夜夜干| 看十八女毛片水多多多| 国产精品 欧美亚洲| videos熟女内射| 中国美女看黄片| 在线 av 中文字幕| 国产精品二区激情视频| 中国国产av一级| 嫩草影视91久久| 国产色视频综合| 老司机深夜福利视频在线观看 | 自线自在国产av| 国产精品偷伦视频观看了| 国产精品 欧美亚洲| 人人妻,人人澡人人爽秒播 | 久久热在线av| 欧美日韩亚洲高清精品| 两性夫妻黄色片| 91精品伊人久久大香线蕉| 久久久国产欧美日韩av| 国产97色在线日韩免费| 妹子高潮喷水视频| 麻豆av在线久日| 脱女人内裤的视频| 一二三四社区在线视频社区8| 少妇的丰满在线观看| 午夜激情av网站| 满18在线观看网站| 看免费av毛片| 人人妻人人爽人人添夜夜欢视频| 精品久久蜜臀av无| 99热全是精品| 叶爱在线成人免费视频播放| 国产精品三级大全| 欧美精品高潮呻吟av久久| 亚洲七黄色美女视频| 日韩免费高清中文字幕av| 午夜免费观看性视频| 国产av精品麻豆| av一本久久久久| 不卡av一区二区三区| 亚洲国产看品久久| 国产成人av教育| 欧美日韩视频高清一区二区三区二| 国产av一区二区精品久久| 午夜激情久久久久久久| 国产淫语在线视频| 一本色道久久久久久精品综合| 国产亚洲一区二区精品| 日本黄色日本黄色录像| 男女国产视频网站| 亚洲国产成人一精品久久久| 国产国语露脸激情在线看| 欧美日韩av久久| 天堂中文最新版在线下载| 久久人人爽av亚洲精品天堂| 中文字幕精品免费在线观看视频| 国产xxxxx性猛交| 少妇裸体淫交视频免费看高清 | 亚洲国产最新在线播放| 精品亚洲成a人片在线观看| 丝袜美腿诱惑在线| 国产极品粉嫩免费观看在线| 精品高清国产在线一区| 日韩视频在线欧美| 午夜免费男女啪啪视频观看| 大香蕉久久成人网| 久久99热这里只频精品6学生| 97精品久久久久久久久久精品| 亚洲av电影在线进入| 亚洲欧美成人综合另类久久久| 99国产精品一区二区三区| h视频一区二区三区| 日本午夜av视频| 色婷婷久久久亚洲欧美| 欧美xxⅹ黑人| xxxhd国产人妻xxx| 国产精品久久久av美女十八| 中文精品一卡2卡3卡4更新| 纯流量卡能插随身wifi吗| 女警被强在线播放| 日韩中文字幕欧美一区二区 | 成人免费观看视频高清| 日本猛色少妇xxxxx猛交久久| 久久精品aⅴ一区二区三区四区| 在线观看免费午夜福利视频| www.自偷自拍.com| 欧美日韩成人在线一区二区| 一本久久精品| 国产精品九九99| 色婷婷av一区二区三区视频| 午夜福利视频在线观看免费| 成人黄色视频免费在线看| 久久人人爽av亚洲精品天堂| 日本黄色日本黄色录像| 搡老乐熟女国产| 国产精品二区激情视频| 大片电影免费在线观看免费| 久久精品aⅴ一区二区三区四区| 极品人妻少妇av视频| 国产亚洲精品第一综合不卡| 久久性视频一级片| 丰满少妇做爰视频| 黑丝袜美女国产一区| 欧美大码av| 午夜福利,免费看| 欧美黄色淫秽网站| 欧美av亚洲av综合av国产av| 久久这里只有精品19| 2021少妇久久久久久久久久久| 日本a在线网址| 亚洲色图综合在线观看| 人人妻人人澡人人爽人人夜夜| 中文字幕最新亚洲高清| 国产野战对白在线观看| av片东京热男人的天堂| 悠悠久久av| 亚洲国产av新网站| 午夜视频精品福利| 女人精品久久久久毛片| www.自偷自拍.com| 亚洲精品乱久久久久久| 自线自在国产av| 波多野结衣一区麻豆| 少妇 在线观看| 精品免费久久久久久久清纯 | 91麻豆精品激情在线观看国产 | 久久久久精品人妻al黑| 国产成人精品久久二区二区免费| 捣出白浆h1v1| 一级毛片我不卡| 国产一区二区三区综合在线观看| 美女主播在线视频| 丝袜在线中文字幕| 国产黄色免费在线视频| 蜜桃国产av成人99| 亚洲五月婷婷丁香| 国产深夜福利视频在线观看| 中文字幕人妻熟女乱码| 精品亚洲成国产av| 又大又黄又爽视频免费| 午夜福利视频在线观看免费| 女人精品久久久久毛片| 亚洲精品国产av蜜桃| 日韩大片免费观看网站| 亚洲专区中文字幕在线| 国产精品亚洲av一区麻豆| 亚洲专区中文字幕在线| xxx大片免费视频| 巨乳人妻的诱惑在线观看| 99精品久久久久人妻精品| 亚洲熟女毛片儿| 亚洲九九香蕉| 精品福利观看| 永久免费av网站大全| 丰满饥渴人妻一区二区三| 色精品久久人妻99蜜桃| 久久精品久久久久久久性| av网站免费在线观看视频| 欧美精品av麻豆av| 国产欧美亚洲国产| 成人影院久久| 性高湖久久久久久久久免费观看| av在线播放精品| 欧美激情高清一区二区三区| 亚洲成人手机| 日本a在线网址| 亚洲欧美清纯卡通| 一级片免费观看大全| 日本欧美国产在线视频| 99精国产麻豆久久婷婷| 侵犯人妻中文字幕一二三四区| 51午夜福利影视在线观看| 欧美成人午夜精品| 亚洲五月婷婷丁香| 女人高潮潮喷娇喘18禁视频| 人人妻人人澡人人看| 国产一区有黄有色的免费视频| av片东京热男人的天堂| 赤兔流量卡办理| www.精华液| 国产在线视频一区二区| 亚洲精品久久午夜乱码| 99国产综合亚洲精品| netflix在线观看网站| 伊人亚洲综合成人网| 成年人午夜在线观看视频| 只有这里有精品99| 日韩中文字幕欧美一区二区 | 欧美日韩精品网址| 国产欧美亚洲国产| 人人妻人人添人人爽欧美一区卜| 免费少妇av软件| 黄片播放在线免费| 国产高清国产精品国产三级| 视频区欧美日本亚洲| 亚洲午夜精品一区,二区,三区| 大香蕉久久成人网| 国产亚洲av片在线观看秒播厂| 精品一区在线观看国产| 久久亚洲国产成人精品v| 亚洲国产欧美网| 国产精品一区二区在线观看99| 黄色视频在线播放观看不卡| 国产成人精品久久二区二区91| 在现免费观看毛片| 欧美精品人与动牲交sv欧美| 欧美日韩精品网址| 18禁黄网站禁片午夜丰满| 老司机靠b影院| 成人国语在线视频| 在线观看一区二区三区激情| 人人妻人人添人人爽欧美一区卜| 一本一本久久a久久精品综合妖精| 大片免费播放器 马上看| 色94色欧美一区二区| 97人妻天天添夜夜摸| 久久免费观看电影| 亚洲图色成人| 99热网站在线观看| 日本欧美视频一区| 欧美日韩福利视频一区二区| 在现免费观看毛片| 国产福利在线免费观看视频| 国语对白做爰xxxⅹ性视频网站| 国产黄色免费在线视频| 99国产精品99久久久久| 精品国产一区二区三区久久久樱花| 中文字幕av电影在线播放| 国产成人精品无人区| 热re99久久国产66热| 在线观看一区二区三区激情| 久久综合国产亚洲精品| 18禁国产床啪视频网站| av电影中文网址| 99国产综合亚洲精品| 亚洲中文字幕日韩| 嫁个100分男人电影在线观看 | 精品免费久久久久久久清纯 | 女人被躁到高潮嗷嗷叫费观| 国产熟女午夜一区二区三区| 亚洲欧美色中文字幕在线| 色综合欧美亚洲国产小说| 黄色视频不卡| 国产成人免费无遮挡视频| cao死你这个sao货| 欧美日韩国产mv在线观看视频| 亚洲精品日韩在线中文字幕| 日韩一区二区三区影片| 操出白浆在线播放| 国产成人欧美| 如日韩欧美国产精品一区二区三区| 久久久久网色| 99香蕉大伊视频| 久久久久久人人人人人| 欧美国产精品一级二级三级| 1024香蕉在线观看| 王馨瑶露胸无遮挡在线观看| 免费人妻精品一区二区三区视频| 久久久精品区二区三区| 首页视频小说图片口味搜索 | 老鸭窝网址在线观看| 女人被躁到高潮嗷嗷叫费观| 69精品国产乱码久久久| 久久精品aⅴ一区二区三区四区| 在线av久久热| 日本黄色日本黄色录像| 青春草亚洲视频在线观看| 19禁男女啪啪无遮挡网站| 丝袜脚勾引网站| 免费看十八禁软件| av在线老鸭窝| 午夜久久久在线观看| 国产高清不卡午夜福利| 亚洲精品久久午夜乱码| 老鸭窝网址在线观看| 午夜91福利影院| 制服诱惑二区| 国产在线观看jvid| 男女边吃奶边做爰视频| 精品久久久久久久毛片微露脸 | 成人国语在线视频| 国产成人系列免费观看| 啦啦啦视频在线资源免费观看| 成人免费观看视频高清| av不卡在线播放| 性高湖久久久久久久久免费观看| 人妻人人澡人人爽人人| 精品久久久久久久毛片微露脸 | 大片电影免费在线观看免费|