国产欧美日韩三区_偷窥自拍亚洲色图精选_久久大片网站_成人在线黄色_成人亚洲免费视频_99久久久精品_国产美女自拍_韩国19禁主播vip福利视频_色综合视频一区二区三区日韩_日本在线观看一区二区

當前位置:首頁 > 科技  > 知識百科

如何打造一款極速數據湖分析引擎

來源: 責編: 時間:2023-08-07 16:29:59 336觀看
導讀 前言隨著數字產業(yè)化和產業(yè)數字化成為經濟驅動的重要動力,企業(yè)的數據分析場景越來越豐富,對數據分析架構的要求也越來越高。新的數據分析場景催生了新的需求,主要包括三個方面:用

前言hmc28資訊網——每日最新資訊28at.com

隨著數字產業(yè)化和產業(yè)數字化成為經濟驅動的重要動力,企業(yè)的數據分析場景越來越豐富,對數據分析架構的要求也越來越高。新的數據分析場景催生了新的需求,主要包括三個方面:hmc28資訊網——每日最新資訊28at.com

用戶希望用更加低廉的成本,更加實時的方式導入并存儲任何數量的關系數據數據(例如,來自業(yè)務線應用程序的運營數據庫和數據)和非關系數據(例如,來自移動應用程序、IoT 設備和社交媒體的運營數據庫和數據)用戶希望自己的數據資產受到嚴密的保護用戶希望數據分析的速度變得更快、更靈活、更實時hmc28資訊網——每日最新資訊28at.com

數據湖的出現很好的滿足了用戶的前兩個需求,它允許用戶導入任何數量的實時獲得的數據。用戶可以從多個來源收集數據,并以其原始形式存儲到數據湖中。數據湖擁有極高的水平擴展能力,使得用戶能夠存儲任何規(guī)模的數據。同時其底層通常使用廉價的存儲方案,使得用戶存儲數據的成本大大降低。數據湖通過敏感數據識別、分級分類、隱私保護、資源權限控制、數據加密傳輸、加密存儲、數據風險識別以及合規(guī)審計等措施,幫助用戶建立安全預警機制,增強整體安全防護能力,讓數據可用不可得和安全合規(guī)。hmc28資訊網——每日最新資訊28at.com

為了進一步滿足用戶對于數據湖分析的要求,我們需要一套適用于數據湖的分析引擎,能夠在更短的時間內從更多來源利用更多數據,并使用戶能夠以不同方式協同處理和分析數據,從而做出更好、更快的決策。本篇文章將向讀者詳細揭秘這樣一套數據湖分析引擎的關鍵技術,并通過StarRocks 來幫助用戶進一步理解系統的架構。hmc28資訊網——每日最新資訊28at.com

之后我們會繼續(xù)發(fā)表兩篇文章,來更詳細地介紹極速數據湖分析引擎的內核和使用案例:hmc28資訊網——每日最新資訊28at.com

代碼走讀篇:通過走讀 StarRocks 這個開源分析型數據庫內核的關鍵數據結構和算法,幫助讀者進一步理解極速數據湖分析引擎的原理和具體實現。Case Study 篇:介紹大型企業(yè)如何使用 StarRocks 在數據湖上實時且靈活的洞察數據的價值,從而幫助業(yè)務進行更好的決策,幫助讀者進一步理解理論是如何在實際場景落地的。什么是數據湖hmc28資訊網——每日最新資訊28at.com

什么是數據湖,根據 Wikipedia 的定義,“A data lake is a system or repository of data stored in its natural/raw format, usually object blobs or files”。通俗來說可以將數據湖理解為在廉價的對象存儲或分布式文件系統之上包了一層,使這些存儲系統中離散的 object 或者 file 結合在一起對外展現出一個統一的語義,例如關系型數據庫常見的“表”語義等。hmc28資訊網——每日最新資訊28at.com

了解完數據湖的定義之后,我們自然而然地想知道數據湖能為我們提供什么獨特的能力,我們?yōu)槭裁匆褂脭祿?hmc28資訊網——每日最新資訊28at.com

在數據湖這個概念出來之前,已經有很多企業(yè)或組織大量使用 HDFS 或者 S3 來存放業(yè)務日常運作中產生的各式各樣的數據(例如一個制作 APP 的公司可能會希望將用戶所產生的點擊事件事無巨細的記錄)。因為這些數據的價值不一定能夠在短時間內被發(fā)現,所以找一個廉價的存儲系統將它們暫存,期待在將來的一天這些數據能派上用場的時候再從中將有價值的信息提取出來。然而 HDFS 和 S3 對外提供的語義畢竟比較單一(HDFS 對外提供文件的語義,S3對外提供對象的語義),隨著時間的推移工程師們可能都無法回答他們到底在這里面存儲了些什么數據。為了防止后續(xù)使用數據的時候必須將數據一一解析才能理解數據的含義,聰明的工程師想到將定義一致的數據組織在一起,然后再用額外的數據來描述這些數據,這些額外的數據被稱之為“元”數據,因為他們是描述數據的數據。這樣后續(xù)通過解析元數據就能夠回答這些數據的具體含義。這就是數據湖最原始的作用。hmc28資訊網——每日最新資訊28at.com

隨著用戶對于數據質量的要求越來越高,數據湖開始豐富其他能力。例如為用戶提供類似數據庫的 ACID 語義,幫助用戶在持續(xù)寫入數據的過程中能夠拿到 point-in-time 的視圖,防止讀取數據過程中出現各種錯誤。或者是提供用戶更高性能的數據導入能力等,發(fā)展到現在,數據湖已經從單純的元數據管理變成現在擁有更加豐富,更加類似數據庫的語義了。hmc28資訊網——每日最新資訊28at.com

用一句不太準確的話描述數據湖,就是一個存儲成本更廉價的“AP 數據庫”。但是數據湖僅僅提供數據存儲和組織的能力,一個完整的數據庫不僅要有數據存儲的能力,還需要有數據分析能力。因此怎么為數據湖打造一款高效的分析引擎,為用戶提供洞察數據的能力,將是本文所要重點闡述的部分。下面通過如下幾個章節(jié)一起逐步拆解一款現代的 OLAP 分析引擎的內部構造和實現:hmc28資訊網——每日最新資訊28at.com

怎么在數據湖上進行極速分析現代數據湖分析引擎的架構怎么在數據湖上進行極速分析?hmc28資訊網——每日最新資訊28at.com

從這一節(jié)開始,讓我們開始回到數據庫課程,一個用于數據湖的分析引擎和一個用于數據庫的分析引擎在架構上別無二致,通常我們認為都會分為下面幾個部分:hmc28資訊網——每日最新資訊28at.com

Parser:將用戶輸入的查詢語句解析成一棵抽象語法樹Analyzer:分析查詢語句的語法和語義是否正確,符合定義Optimizer:為查詢生成性能更高、代價更低的物理查詢計劃Execution Engine:執(zhí)行物理查詢計劃,收集并返回查詢結果hmc28資訊網——每日最新資訊28at.com

對于一個數據湖分析引擎而言,Optimizer 和 Execution Engine 是影響其性能兩個核心模塊,下面我們將從三個維度入手,逐一拆解這兩個模塊的核心技術原理,并通過不同技術方案的對比,幫助讀者理解一個現代的數據湖分析引擎的始末。hmc28資訊網——每日最新資訊28at.com

RBO vs CBOhmc28資訊網——每日最新資訊28at.com

基本上來講,優(yōu)化器的工作就是對給定的一個查詢,生成查詢代價最低(或者相對較低)的執(zhí)行計劃。不同的執(zhí)行計劃性能會有成千上萬倍的差距,查詢越復雜,數據量越大,查詢優(yōu)化越重要。hmc28資訊網——每日最新資訊28at.com

Rule Based Optimization (RBO) 是傳統分析引擎常用的優(yōu)化策略。RBO 的本質是核心是基于關系代數的等價變換,通過一套預先制定好的規(guī)則來變換查詢,從而獲得代價更低的執(zhí)行計劃。常見的 RBO 規(guī)則謂詞下推、Limit 下推、常量折疊等。在 RBO 中,有著一套嚴格的使用規(guī)則,只要你按照規(guī)則去寫查詢語句,無論數據表中的內容怎樣,生成的執(zhí)行計劃都是固定的。但是在實際的業(yè)務環(huán)境中,數據的量級會嚴重影響查詢的性能,而 RBO 是沒法通過這些信息來獲取更優(yōu)的執(zhí)行計劃。hmc28資訊網——每日最新資訊28at.com

為了解決 RBO 的局限性,Cost Based Optimization (CBO) 的優(yōu)化策略應運而生。CBO 通過收集數據的統計信息來估算執(zhí)行計劃的代價,這些統計信息包括數據集的大小,列的數量和列的基數等信息。舉個例子,假設我們現在有三張表 A,B 和 C,在進行 A join B join C 的查詢時如果沒有對應的統計信息我們是無法判斷不同 join 的執(zhí)行順序代價上的差異。如果我們收集到這三張表的統計信息,發(fā)現 A 表和 B 表的數據量都是 1M 行,但是 C 表的 數據量僅為 10 行,那么通過先執(zhí)行 B join C 可以大大減少中間結果的數據量,這在沒有統計信息的情況下基本不可能判斷。hmc28資訊網——每日最新資訊28at.com

隨著查詢復雜度的增加,執(zhí)行計劃的狀態(tài)空間會變的非常巨大。刷過算法題的小伙伴都知道,一旦狀態(tài)空間非常大,通過暴力搜索的方式是不可能 AC 的,這時候一個好的搜索算法格外重要。通常 CBO 使用動態(tài)規(guī)劃算法來得到最優(yōu)解,并且減少重復計算子空間的代價。當狀態(tài)空間達到一定程度之后,我們只能選擇貪心算法或者其他一些啟發(fā)式算法來得到局部最優(yōu)。本質上搜索算法是一種在搜索時間和結果質量做 trade-off 的方法。hmc28資訊網——每日最新資訊28at.com

hmc28資訊網——每日最新資訊28at.com

(常見 CBO 實現架構)hmc28資訊網——每日最新資訊28at.com

Record Oriented vs Block Orientedhmc28資訊網——每日最新資訊28at.com

執(zhí)行計劃可以認為是一串 operator(關系代數的運算符)首尾相連串起來的執(zhí)行流,前一個 operator 的 output 是下一個 operator 的 input。傳統的分析引擎是 Row Oriented 的,也就是說 operator 的 output 和 input 是一行一行的數據。hmc28資訊網——每日最新資訊28at.com

舉一個簡單的例子,假設我們有下面一個表和查詢:hmc28資訊網——每日最新資訊28at.com

CREATE TABLE t (n int, m int, o int, p int); hmc28資訊網——每日最新資訊28at.com
SELECT o FROM t WHERE m < n + 1;hmc28資訊網——每日最新資訊28at.com

例子來源:GitHub - jordanlewis/exectoyhmc28資訊網——每日最新資訊28at.com

上述查詢語句展開為執(zhí)行計劃的時候大致如下圖所示:hmc28資訊網——每日最新資訊28at.com

hmc28資訊網——每日最新資訊28at.com

通常情況下,在 Row Oriented 的模型中,執(zhí)行計劃的執(zhí)行過程可以用如下偽碼表示:hmc28資訊網——每日最新資訊28at.com

next: hmc28資訊網——每日最新資訊28at.com
for: hmc28資訊網——每日最新資訊28at.com
row = source.next() hmc28資訊網——每日最新資訊28at.com
if filterExpr.Eval(row): hmc28資訊網——每日最新資訊28at.com
// return a new row containing just column o hmc28資訊網——每日最新資訊28at.com
returnedRow row hmc28資訊網——每日最新資訊28at.com
for col in selectedCols: hmc28資訊網——每日最新資訊28at.com
returnedRow.append(row[col]) hmc28資訊網——每日最新資訊28at.com
return returnedRowhmc28資訊網——每日最新資訊28at.com

根據 DBMSs On A Modern Processor: Where Does Time Go? 的評估,這種執(zhí)行方式存在大量的 L2 data stalls 和 L1 I-cache stalls、分支預測的效率低等問題。hmc28資訊網——每日最新資訊28at.com

隨著磁盤等硬件技術的蓬勃發(fā)展,各種通過 CPU 換 IO 的壓縮算法、Encoding 算法和存儲技術的廣泛使用,CPU 的性能逐漸成為成為分析引擎的瓶頸。為了解決 Row Oriented 執(zhí)行所存在的問題,學術界開始思考解決方案,Block oriented processing of Relational Database operations in modern Computer Architectures 這篇論文提出使用按 block 的方式在 operator 之間傳遞數據,能夠平攤條件檢查和分支預測的工作的耗時,MonetDB/X100: Hyper-Pipelining Query Execution 在此基礎上更進一步,提出將通過將數據從原來的 Row Oriented,改變成 Column Oriented,進一步提升 CPU Cache 的效率,也更有利于編譯器進行優(yōu)化。在 Column Oriented 的模型中,執(zhí)行計劃的執(zhí)行過程可以用如下偽碼表示:hmc28資訊網——每日最新資訊28at.com

// first create an n + 1 result, for all values in the n column hmc28資訊網——每日最新資訊28at.com
projPlusIntIntConst.Next(): hmc28資訊網——每日最新資訊28at.com
batch = source.Next() hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
for i < batch.n: hmc28資訊網——每日最新資訊28at.com
outCol[i] = intCol[i] + constArg hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
return batch hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
// then, compare the new column to the m column, putting the result into hmc28資訊網——每日最新資訊28at.com
// a selection vector: a list of the selected indexes in the column batch hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
selectLTIntInt.Next(): hmc28資訊網——每日最新資訊28at.com
batch = source.Next() hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
for i < batch.n: hmc28資訊網——每日最新資訊28at.com
if int1Col < int2Col: hmc28資訊網——每日最新資訊28at.com
selectionVector.append(i) hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
return batch with selectionVector hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
// finally, we materialize the batch, returning actual rows to the user, hmc28資訊網——每日最新資訊28at.com
// containing just the columns requested: hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
materialize.Next(): hmc28資訊網——每日最新資訊28at.com
batch = source.Next() hmc28資訊網——每日最新資訊28at.com
hmc28資訊網——每日最新資訊28at.com
for s < batch.n: hmc28資訊網——每日最新資訊28at.com
i = selectionVector[i] hmc28資訊網——每日最新資訊28at.com
returnedRow row hmc28資訊網——每日最新資訊28at.com
for col in selectedCols: hmc28資訊網——每日最新資訊28at.com
returnedRow.append(cols[col][i]) hmc28資訊網——每日最新資訊28at.com
yield returnedRowhmc28資訊網——每日最新資訊28at.com

可以看到,Column Oriented 擁有更好的數據局部性和指令局部性,有利于提高 CPU Cache 的命中率,并且編譯器更容易執(zhí)行 SIMD 優(yōu)化等。hmc28資訊網——每日最新資訊28at.com

Pull Based vs Push Basedhmc28資訊網——每日最新資訊28at.com

數據庫系統中,通常是將輸入的 SQL 語句轉化為一系列的算子,然后生成物理執(zhí)行計劃用于實際的計算并返回結果。在生成的物理執(zhí)行計劃中,通常會對算子進行 pipeline。常見的 pipeline 方式通常有兩種:hmc28資訊網——每日最新資訊28at.com

基于數據驅動的 Push Based 模式,上游算子推送數據到下游算子基于需求的 Pull Based 模式,下游算子主動從上游算子拉取數據。經典的火山模型就是 Pull Based 模式。hmc28資訊網——每日最新資訊28at.com

Push Based 的執(zhí)行模式提高了緩存效率,能夠更好地提升查詢性能。hmc28資訊網——每日最新資訊28at.com

hmc28資訊網——每日最新資訊28at.com

參考:Push vs. Pull-Based Loop Fusion in Query Engineshmc28資訊網——每日最新資訊28at.com

現代數據湖分析引擎的架構hmc28資訊網——每日最新資訊28at.com

通過上一節(jié)的介紹,相信讀者已經對數據湖分析引擎的前沿理論有了相應了解。在本節(jié)中,我們以 StarRocks 為例,進一步介紹數據湖分析引擎是怎么有機的結合上述先進理論,并且通過優(yōu)雅的系統架構將其呈現給用戶。hmc28資訊網——每日最新資訊28at.com

hmc28資訊網——每日最新資訊28at.com

如上圖所示,StarRocks 的架構非常簡潔,整個系統的核心只有 Frontend (FE)、Backend (BE) 兩類進程,不依賴任何外部組件,方便部署與維護。其中 FE 主要負責解析查詢語句(SQL),優(yōu)化查詢以及查詢的調度,而 BE 則主要負責從數據湖中讀取數據,并完成一系列的 Filter 和 Aggregate 等操作。hmc28資訊網——每日最新資訊28at.com

Frontendhmc28資訊網——每日最新資訊28at.com

hmc28資訊網——每日最新資訊28at.com

FE 的主要作用將 SQL 語句通過一系列轉化和優(yōu)化,最終轉換成 BE 能夠認識的一個個 Fragment。一個不那么準確但易于理解的比喻,如果把 BE 集群當成一個分布式的線程池的話,那么 Fragment 就是線程池中的 Task。從 SQL 文本到 Fragment,FE 的主要工作包含以下幾個步驟:hmc28資訊網——每日最新資訊28at.com

SQL Parse:將 SQL 文本轉換成一個 AST(抽象語法樹)Analyze:基于 AST 進行語法和語義分析Logical Plan:將 AST 轉換成邏輯計劃Optimize:基于關系代數,統計信息,Cost 模型對邏輯計劃進行重寫,轉換,選擇出 Cost “最低” 的物理執(zhí)行計劃生成 Fragment:將 Optimizer 選擇的物理執(zhí)行計劃轉換為 BE 可以直接執(zhí)行的 FragmentCoordinate:將 Fragment 調度到合適的 BE 上執(zhí)行Backendhmc28資訊網——每日最新資訊28at.com

hmc28資訊網——每日最新資訊28at.com

BE 是 StarRocks 的后端節(jié)點,負責接收 FE 傳下來的 Fragment 執(zhí)行并返回結果給 FE。StarRocks 的 BE 節(jié)點都是完全對等的,FE 按照一定策略將數據分配到對應的 BE 節(jié)點。常見的 Fragment 工作流程是讀取數據湖中的部分文件,并調用對應的 Reader (例如,適配 Parquet 文件的 Parquet Reader 和適配 ORC 文件的 ORC Reader等)解析這些文件中的數據,使用向量化執(zhí)行引擎進一步過濾和聚合解析后的數據后,返回給其他 BE 或 FE。hmc28資訊網——每日最新資訊28at.com

總結hmc28資訊網——每日最新資訊28at.com

本篇文章主要介紹了極速數據湖分析引擎的核心技術原理,從多個維度對比了不同技術實現方案。hmc28資訊網——每日最新資訊28at.com

本文鏈接:http://www.yifxia.cn/showinfo-119-2198-0.html如何打造一款極速數據湖分析引擎

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 微軟智能云Azure在華的第五個數據中心區(qū)域正式啟用

下一篇: 云計算開發(fā):Python3-List extend()方法詳解

標簽:
  • 熱門焦點
Top 欧美激情一区二区三区视频 | 四虎影视库| 国产视频在线免费观看| 欧美1卡一卡二卡三新区| 欧美一级视| 国产91精品一区二区| 久久99欧美| 99热精品在线| 日本伦理片网站| 青青青草视频在线观看| 国产极品白嫩美女在线观看看| 午夜久久网| 国产亚洲免费观看| 国产成人欧美一区二区三区的| 韩国三级香港三级日本三级la| 91麻豆国产级在线| 亚洲 激情| 欧美a免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产一区二区福利久久| 久久99中文字幕| 尤物视频网站在线观看| 国产成人精品影视| 亚洲精品中文一区不卡| 高清一级片| 国产一区二区精品久久91| 国产亚洲男人的天堂在线观看| 国产欧美精品| 精品国产香蕉伊思人在线又爽又黄| 美女免费精品高清毛片在线视| 高清一级片| 成人免费一级毛片在线播放视频| 成人影院久久久久久影院| 青草国产在线| 黄色福利| 国产精品12| 久久精品大片| 久久久久久久久综合影视网| 精品视频一区二区三区| 美女被草网站| 国产视频在线免费观看| 99热精品一区| 国产一区二区高清视频| 国产国产人免费视频成69堂| 日韩一级黄色| 国产成人精品综合久久久| 欧美电影免费看大全| 韩国毛片免费大片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人a大片高清在线观看| 四虎影视精品永久免费网站| 二级片在线观看| 亚洲 国产精品 日韩| 深夜做爰性大片中文| 黄色短视频网站| 日韩av成人| 超级乱淫伦动漫| 欧美另类videosbestsex| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人在激情在线视频| 天天做日日爱| 夜夜操天天爽| 国产极品精频在线观看| 成人a大片高清在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲第一色在线| 精品毛片视频| 亚洲 激情| 亚洲第一页乱| 日本伦理片网站| 精品国产三级a| 日韩中文字幕一区| 一本高清在线| 国产麻豆精品视频| 国产不卡高清在线观看视频| 韩国毛片 免费| 黄色免费三级| 亚洲精品影院久久久久久| 日日夜夜婷婷| 日本特黄特黄aaaaa大片| 日日日夜夜操| 欧美爱色| 久久精品大片| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 一本伊大人香蕉高清在线观看| 免费一级生活片| 久久精品免视看国产成人2021| 青青久久精品| 午夜欧美成人久久久久久| 久草免费在线视频| 亚飞与亚基在线观看| 天堂网中文字幕| 成人免费高清视频| 国产一区二区精品在线观看| 毛片高清| 国产韩国精品一区二区三区| 日韩一级精品视频在线观看| 日韩一级精品视频在线观看| 亚洲 男人 天堂| 韩国毛片基地| 日韩字幕在线| 亚洲 激情| 精品视频在线观看视频免费视频| 日韩欧美一及在线播放| 一级片片| 久久精品欧美一区二区| 日韩男人天堂| 国产成人女人在线视频观看| 免费的黄色小视频| 韩国三级香港三级日本三级la| 青青久久精品| 国产亚洲男人的天堂在线观看| 日本特黄一级| 久久精品大片| 台湾毛片| 97视频免费在线| 国产麻豆精品高清在线播放| 欧美大片毛片aaa免费看| 国产伦久视频免费观看视频| 成人免费观看的视频黄页| 成人在激情在线视频| 99久久精品国产国产毛片| 亚洲 男人 天堂| 超级乱淫伦动漫| 色综合久久天天综合| 亚洲第一视频在线播放| 91麻豆tv| 欧美一级视频免费观看| 久久久成人影院| 青青久热| 国产网站免费在线观看| 久久精品免视看国产明星| 免费一级片网站| 美女免费精品高清毛片在线视| 欧美国产日韩一区二区三区| 国产91丝袜在线播放0| 精品在线观看国产| 天天做人人爱夜夜爽2020| 亚洲女人国产香蕉久久精品| 亚洲精品永久一区| 国产不卡精品一区二区三区| 精品久久久久久综合网| 九九久久99| 国产视频一区在线| 精品国产一区二区三区久| 一级片片| 九九久久国产精品大片| 久草免费在线视频| 日韩在线观看视频免费| 天天做日日爱| 午夜激情视频在线观看| 九九久久99| 你懂的日韩| 成人高清视频在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品久久久久久中文字幕一区 | 午夜在线影院| 国产视频一区在线| 精品视频在线观看一区二区| a级精品九九九大片免费看| 国产网站免费在线观看| 精品国产一区二区三区久久久狼| 国产视频久久久| a级黄色毛片免费播放视频| 欧美一级视| 91麻豆精品国产自产在线| 高清一级做a爱过程不卡视频| 亚洲 男人 天堂| 国产a毛片| 99久久网站| 国产成人精品在线| 天天色成人| 亚久久伊人精品青青草原2020| 国产麻豆精品| 精品国产一区二区三区精东影业| 韩国妈妈的朋友在线播放| 欧美一级视频免费| 日韩一级黄色片| 黄视频网站免费看| 欧美大片毛片aaa免费看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 91麻豆高清国产在线播放| 国产视频一区在线| 国产视频网站在线观看| 国产精品自拍亚洲| 亚洲天堂在线播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 久久国产影院| 国产伦久视频免费观看 视频 | 九九久久国产精品大片| 国产精品自拍亚洲| 日本免费区| 午夜欧美成人久久久久久| 欧美激情一区二区三区视频高清| 久久久久久久久综合影视网| 久久国产精品永久免费网站| 欧美爱爱动态| 免费毛片基地| 国产不卡在线观看视频| 午夜在线影院|