精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Flink SQL 知其所以然:核心思想之動態表 & 連續查詢!

數據庫 其他數據庫
在流式 SQL 誕生之前,所有的基于 SQL 的數據查詢都是基于批數據的,沒有將 SQL 應用到流數據處理這一說法。

SQL 動態表 & 連續查詢

hi,大家好,我是老羊,今天給大家帶來一篇關于 Flink SQL 流式計算的核心思想設計文章。

在小伙伴萌看下文之前,先看一下本文整體的思路,跟著博主思路走,會更清晰:

  • 先分析一下將 SQL 應用到流處理的思路
  •  SQL 應用于批處理已經很成熟了,通過對比流批處理在輸入、數據處理、輸出的異同點來分析出將 SQL 應用于流處理的核心要解決的問題點
  • 分析如何使用 SQL 動態輸入表 技術來將 輸入數據流 映射到 SQL 中的輸入表
  • 分析如何使用 SQL 連續查詢 技術來將 計算邏輯 映射到 SQL 中的運算語義
  • 使用 SQL 動態表 & 連續查詢技術 兩種技術方案來將 流式 SQL 實際應用到兩個常見案例中
  • 分析 SQL 連續查詢 的兩種類型:更新(Update)查詢 & 追加(Append)查詢
  • 分析如何使用 SQL 動態輸出表 技術來將 輸出數據流 映射到 SQL 中的輸出表

博主認為讀完本節你應該掌握:

  • SQL 動態輸入表、SQL 動態輸出表
  • SQL 連續查詢 的兩種類型分別對應的查詢場景及 SQL 語義

1.SQL 應用于流處理的思路

在流式 SQL 誕生之前,所有的基于 SQL 的數據查詢都是基于批數據的,沒有將 SQL 應用到流數據處理這一說法。

那么如果我們想將 SQL 應用到流處理中,必然要站在巨人的肩膀(批數據處理的流程)上面進行,那么具體的分析思路如下:

  • 步驟一:先比較 批處理 與 流處理 的異同之處:如果有相同的部分,那么可以直接復用;不同之處才是我們需要重點克服和關注的。
  • 步驟二:摘出 1 中說到的不同之處,分析如果要滿足這個不同之處,目前有哪些技術是類似的
  • 步驟三:再從這些類似的技術上進一步發展,以滿足將 SQL 應用于流任務中

博主下文就會根據上述三個步驟來一步一步介紹 動態表 誕生的背景以及這個概念是如何誕生的。

2.流批處理的異同點及將 SQL 應用于流處理核心解決的問題

首先對比一下常見的 批處理 和 流處理 中 數據源(輸入表)、處理邏輯、數據匯(結果表) 的異同點。

-

輸入表

處理邏輯

結果表

批處理

靜態表:輸入數據有限、是有界集合

批式計算:每次執行查詢能夠訪問到完整的輸入數據,然后計算,輸出完整的結果數據

靜態表:數據有限

流處理

動態表:輸入數據無限,數據實時增加,并且源源不斷

流式計算:執行時不能夠訪問到完整的輸入數據,每次計算的結果都是一個中間結果

動態表:數據無限

對比上述流批處理之后,我們得到了要將 SQL 應用于流式任務的三個要解決的核心點:

  • SQL 輸入表:分析如何將一個實時的,源源不斷的輸入流數據表示為 SQL 中的輸入表。
  • SQL 處理計算:分析將 SQL 查詢邏輯翻譯成什么樣的底層處理技術才能夠實時的處理流式輸入數據,然后產出流式輸出數據。
  • SQL 輸出表:分析如何將 SQL 查詢輸出的源源不斷的流數據表示為一個 SQL 中的輸出表。

將上面 3 個點總結一下,也就引出了本節的 動態表 和 連續查詢 兩種技術方案:

  • 動態表:源源不斷的輸入、輸出流數據映射到 動態表
  • 連續查詢:實時處理輸入數據,產出輸出數據的實時處理技術

3.SQL 流處理的輸入:輸入流映射為 SQL 動態輸入表

動態表。這里的動態其實是相比于批處理的靜態(有界)來說的。

  • 靜態表:應用于批處理數據中,靜態表可以理解為是不隨著時間實時進行變化的。一般都是一天、一小時的粒度新生成一個分區。
  • 動態表:動態表是隨時間實時進行變化的。是將 SQL 體系中表的概念應用到 Flink 上面的的核心點。

來看一個具體的案例,下圖顯示了點擊事件流(左側)如何轉換為動態表(右側)。當數據源生成更多的點擊事件記錄時,映射出來的動態表也會不斷增長,這就是動態表的概念:

Dynamic Table

4.SQL 流處理的計算:實時處理底層技術 - SQL 連續查詢

連續查詢。

部分高級關系數據庫系統提供了一個稱為物化視圖(Materialized Views) 的特性。

物化視圖其實就是一條 SQL 查詢,就像常規的虛擬視圖 VIEW 一樣。但與虛擬視圖不同的是,物化視圖會緩存查詢的結果,因此在請求訪問視圖時不需要對查詢進行重新計算,可以直接獲取物化視圖的結果,小伙伴萌可以認為物化視圖其實就是把結果緩存了下來。

舉個例子:批處理中,如果以 Hive 天級別的物化視圖來說,其實就是每天等數據源 ready 之后,調度物化視圖的 SQL 執行然后產生新的結果提供服務。那么就可以認為一條表示了輸入、處理、輸出的 SQL 就是一個構建物化視圖的過程。

映射到我們的流任務中,輸入、處理邏輯、輸出這一套流程也是一個物化視圖的概念。相比批處理來說,流處理中,我們的數據源表的數據是源源不斷的。那么從輸入、處理、輸出的整個物化視圖的維護流程也必須是實時的。

因此我們就需要引入一種實時視圖維護(Eager View Maintenance)的技術去做到:一旦更新了物化視圖的數據源表就立即更新視圖的結果,從而保證輸出的結果也是最新的。

這種 實時視圖維護(Eager View Maintenance)的技術就叫做 連續查詢。

注意:

  • 連續查詢(Continuous Query) 不斷的消費動態輸入表的的數據,不斷的更新動態結果表的數據。
  • 連續查詢(Continuous Query) 的產出的結果 = 批處理模式在輸入表的上執行的相同查詢的結果。相同的 SQL,對應于同一個輸入數據,雖然執行方式不同,但是流處理和批處理的結果是永遠都會相同的。

5.SQL 流處理實際應用:動態表 & 連續查詢技術的兩個實戰案

例總結前兩節,動態表 & 連續查詢 兩項技術在一條流 SQL 中的執行流程總共包含了三個步驟,如下圖及總結所示:

Query

  • 第一步:將數據輸入流轉換為 SQL 中的動態輸入表。這里的轉化其實就是指將輸入流映射(綁定)為一個動態輸入表。上圖雖然分開畫了,但是可以理解為一個東西。
  • 第二步:在動態輸入表上執行一個連續查詢,然后生成一個新的動態結果表。
  • 第三步:生成的動態結果表被轉換回數據輸出流。

我們實際介紹一個案例來看看其運行方式,以上文介紹到的點擊事件流為例,點擊事件流數據的字段如下:

[
user: VARCHAR, // 用戶名
cTime: TIMESTAMP, // 訪問 URL 的時間
url: VARCHAR // 用戶訪問的 URL
]
  • 第一步,將輸入數據流映射為一個動態輸入表。以下圖為例,我們將點擊事件流(圖左)轉換為動態表 (圖右)。當點擊數據源源不斷的來到時,動態表的數據也會不斷的增加。

Dynamic Table

  • 第二步,在點擊事件流映射的動態輸入表上執行一個連續查詢(Continuous Query),并生成一個新的動態輸出表。

下面介紹兩個查詢的案例:

第一個查詢:一個簡單的 GROUP-BY COUNT 聚合查詢,寫過 SQL 的都不會陌生吧,這種應該都是最基礎,最常用的對數據按照類別分組的方法。

如下圖所示 group by 聚合的常用案例。

time

那么本案例中呢,是基于 clicks 表中 user 字段對 clicks 表(點擊事件流)進行分組,來統計每一個 user 的訪問的 URL 的數量。下面的圖展示了當 clicks 輸入表來了新數據(即表更新時),連續查詢(Continuous Query) 的計算邏輯。

group agg

當查詢開始,clicks 表(左側)是空的。

  • 當第一行數據被插入到 clicks 表時,連續查詢(Continuous Query)開始計算結果數據。數據源表第一行數據 [Mary,./home] 輸入后,會計算結果 [Mary, 1] 插入(insert)結果表。
  • 當第二行 [Bob, ./cart] 插入到 clicks 表時,連續查詢(Continuous Query)會計算結果 [Bob, 1],并插入(insert)到結果表。
  • 第三行 [Mary, ./prod?id=1] 輸出時,會計算出[Mary, 2](user 為 Mary 的數據總共來過兩條,所以為 2),并更新(update)結果表,[Mary, 1] 更新成 [Mary, 2]。
  • 最后,當第四行數據加入 clicks 表時,查詢將第三行 [Liz, 1] 插入(insert)結果表中。

注意上述特殊標記出來的字體,可以看到連續查詢對于結果的數據輸出方式有兩種:

  • 插入(insert)結果表
  • 更新(update)結果表

大家對于 插入(insert)結果表 這件事都比較好理解,因為離線數據都只有插入這個概念。

但是 更新(update)結果表 就是離線處理中沒有概念了。這就是連續查詢中中比較重要一個概念。后文會介紹。

接下來介紹第二條查詢語句。

第二條查詢與第一條類似,但是 group by 中除了 user 字段之外,還 group by 了 tumble,其代表開了個滾動窗口(后面會詳細說明滾動窗口的作用),然后計算 url 數量。

group by user,是按照類別(橫向)給數據分組,group by tumble 滾動窗口是按時間粒度(縱向)給數據進行分組。如下圖所示。

time

圖形化一解釋就很好理解了,兩種都是對數據進行分組,一個是按照 類別 分組,另一種是按照 時間 分組。

與前面一樣,左邊顯示了輸入表 clicks。查詢每小時持續計算結果并更新結果表。clicks 表有三列,user,cTime,url。其中 cTime 代表數據的時間戳,用于給數據按照時間粒度分組。

tumble window

我們的滾動窗口的步長為 1 小時,即時間粒度上面的分組為 1 小時。其中時間戳在 12:00:00 - 12:59:59 之間有四條數據。13:00:00 - 13:59:59 有三條數據。14:00:00 - 14:59:59 之間有四條數據。

  • 當 12:00:00 - 12:59:59 數據輸入之后,1 小時的窗口,連續查詢(Continuous Query)計算的結果如右圖所示,將 [Mary, 3],[Bob, 1] 插入(insert)結果表。
  • 當 13:00:00 - 13:59:59 數據輸入之后,1 小時的窗口,連續查詢(Continuous Query)計算的結果如右圖所示,將 [Bob, 1],[Liz, 2] 插入(insert)結果表。
  • 當 14:00:00 - 14:59:59 數據輸入之后,1 小時的窗口,連續查詢(Continuous Query)計算的結果如右圖所示,將 [Mary, 1],[Bob, 2],[Liz, 1] 插入(insert)結果表。

而這個查詢只有 插入(insert)結果表 這個行為。

6.SQL 連續查詢的兩種類型:更新(Update)查詢 & 追加(Append)查詢

雖然前一節的兩個查詢看起來非常相似(都計算分組進行計數聚合),但它們在一個重要方面不同:

  • 第一個查詢(group by user),即(Update)查詢:會更新先前輸出的結果,即結果表流數據中包含 INSERT 和 UPDATE 數據。小伙伴萌可以理解為 group by user 這條語句當中,輸入源的數據是一直有的,源源不斷的,同一個 user 的數據之后可能還是會有的,因此可以認為此 SQL 的每次的輸出結果都是一個中間結果, 當同一個 user 下一條數據到來的時候,就要用新結果把上一次的產出中間結果(舊結果)給 UPDATE 了。所以這就是 UPDATE 查詢的由來(其中 INSERT 就是第一條數據到來的時候,沒有之前的中間結果,所以是 INSERT)。
  • 第二個查詢(group by user, tumble(xxx)),即(Append)查詢:只追加到結果表,即結果表流數據中只包含 INSERT 的數據。小伙伴萌可以理解為雖然 group by user, tumble(xxx) 上游也是一個源源不斷的數據,但是這個查詢本質上是對時間上的劃分,而時間都是越變越大的,當前這個滾動窗口結束之后,后面來的數據的時間都會比這個滾動窗口的結束時間大,都歸屬于之后的窗口了,當前這個滾動窗口的結果數據就不會再改變了,因此這條查詢只有 INSERT 數據,即一個 Append 查詢。

上面是 Flink SQL 連續查詢處理機制上面的兩類查詢方式。我們可以發現連續查詢的處理機制不一樣,產出到結果表中的結果數據也是不一樣的。針對上面兩種結果表的更新方式,Flink SQL 提出了 changelog 表的概念來進行兼容。

changelog 表這個概念其實就和 MySQL binlog 是一樣的。會包含 INSERT、UPDATE、DELETE 三種數據,通過這三種數據的處理來描述實時處理技術對于動態表的變更:

  • changelog 表:即第一個查詢的輸出表,輸出結果數據不但會追加,還會發生更新
  • changelog insert-only 表:即第二個查詢的輸出表,輸出結果數據只會追加,不會發生更新

7.SQL 流處理的輸出:動態輸出表轉化為輸出數據

可以看到我們的標題都是隨著一個 SQL 的生命周期的。從 輸入流映射為 SQL 動態輸入表、實時處理底層技術 - SQL 連續查詢 到本小節的 SQL 動態輸出表轉化為輸出數據。都是有邏輯關系的。

我們上面介紹到了 連續查詢(Continuous Query) 的輸出結果表是一個 changelog。其可以像普通數據庫表一樣通過 INSERT、UPDATE 和 DELETE 來不斷修改。

它可能是一個只有一行、不斷更新 changelog 表,也可能是一個 insert-only 的 changelog 表,沒有 UPDATE 和 DELETE 修改,或者介于兩者之間的其他表。

在將動態表轉換為流或將其寫入外部系統時,需要對這些不同狀態的數據進行編碼。Flink 的 Table API 和 SQL API 支持三種方式來編碼一個動態表的變化:

  • Append-only 流:輸出的結果只有 INSERT 操作的數據。
  • Retract 流:

Retract 流包含兩種類型的 message:add messages 和 retract messages 。其將 INSERT 操作編碼為 add message、將 DELETE 操作編碼為 retract message、將 UPDATE 操作編碼為更新先前行的 retract message 和更新(新)行的 add message,從而將動態表轉換為 retract 流。

Retract 流寫入到輸出結果表的數據如下圖所示,有 -,+ 兩種,分別 - 代表撤回舊數據,+ 代表輸出最新的數據。這兩種數據最終都會寫入到輸出的數據引擎中。

如果下游還有任務去消費這條流的話,要注意需要正確處理 -,+ 兩種數據,防止數據計算重復或者錯誤。

retract

  • Upsert 流:

Upsert 流包含兩種類型的 message:upsert messages 和 delete messages。轉換為 upsert 流的動態表需要唯一鍵(唯一鍵可以由多個字段組合而成)。其會將 INSERT和 UPDATE 操作編碼為 upsert message,將 DELETE 操作編碼為 delete message。

Upsert 流寫入到輸出結果表的數據如下圖所示,每次輸出的結果都是當前每一個 user 的最新結果數據,不會有 Retract 中的 - 回撤數據。

如果下游還有一個任務去消費這條流的話,消費流的算子需要知道唯一鍵(即 user),以便正確地根據唯一鍵(user)去拿到每一個 user 當前最新的狀態。其與 retract 流的主要區別在于 UPDATE 操作是用單個 message 編碼的,因此效率更高。下圖顯示了將動態表轉換為 upsert 流的過程。

upsert

8.補充知識:SQL 與關系代數

小伙伴萌會問到,關系代數是啥東西?

其實關系代數就是對于數據集(即表)的一系列的 操作(即查詢語句)。常見關系代數有:

Relational Algebra

那么 SQL 和關系代數是啥關系呢?

SQL 就是能夠表示關系代數一種面向用戶的接口:即用戶能使用 SQL 表達關系代數的處理邏輯,也就是我們可以用 SQL 去在表(數據集)上執行我們的業務邏輯操作(關系代數操作)。

責任編輯:武曉燕 來源: 大數據羊說
相關推薦

2022-05-22 10:02:32

CREATESQL 查詢SQL DDL

2021-12-09 06:59:24

FlinkSQL 開發

2022-07-05 09:03:05

Flink SQLTopN

2022-06-10 09:01:04

OverFlinkSQL

2022-06-06 09:27:23

FlinkSQLGroup

2022-05-18 09:02:28

Flink SQLSQL字符串

2022-05-15 09:57:59

Flink SQL時間語義

2022-06-29 09:01:38

FlinkSQL時間屬性

2022-05-27 09:02:58

SQLHive語義

2022-05-12 09:02:47

Flink SQL數據類型

2021-11-28 11:36:08

SQL Flink Join

2022-08-10 10:05:29

FlinkSQL

2021-11-27 09:03:26

flink join數倉

2021-12-06 07:15:47

開發Flink SQL

2021-09-12 07:01:07

Flink SQL ETL datastream

2021-12-17 07:54:16

Flink SQLTable DataStream

2022-06-18 09:26:00

Flink SQLJoin 操作

2021-11-30 23:30:45

sql 性能異步

2021-11-24 08:17:21

Flink SQLCumulate WiSQL

2018-08-27 06:30:49

InnoDBMySQLMyISAM
點贊
收藏

51CTO技術棧公眾號

午夜在线观看一区| 青青草影院在线观看| 国产三级精品三级在线观看| 不卡在线一区| 日韩你懂的在线观看| 欧美日韩黄色一级片| 日韩免费网站| 99久久综合国产精品| 国产精品综合不卡av| 国产精品白浆一区二小说| 第一会所亚洲原创| 亚洲第一精品电影| 99九九99九九九99九他书对| 在线看片福利| 亚洲美女屁股眼交3| 免费毛片一区二区三区久久久| 一本色道久久综合精品婷婷| 一本色道久久综合一区 | 亚洲啪av永久无码精品放毛片 | 蜜桃传媒视频麻豆第一区免费观看| 亚洲专区在线播放| 一本久道久久综合婷婷鲸鱼| 欧美大片在线看| 国精品人伦一区二区三区蜜桃| 亚洲va久久久噜噜噜久久| 日韩一区二区在线观看| 人妻丰满熟妇av无码区app| 日本小视频在线免费观看| 欧美国产一区二区| 免费精品视频一区| 欧美综合视频在线| 国产精品99久久久久久有的能看| 国产精品激情av在线播放| 日韩 欧美 中文| 国产一区日韩一区| 久久久精品国产亚洲| 国产99在线 | 亚洲| 日韩精品社区| 亚洲黄色av网站| www.com日本| 日韩在线成人| 日韩一区二区三区视频在线| 在线视频一二区| 先锋影音一区二区| 欧美一a一片一级一片| www.超碰com| 成人日韩在线观看| 色综合av在线| 国产精品亚洲二区在线观看| 成人私拍视频| 日韩欧美极品在线观看| 久久无码高潮喷水| 性欧美又大又长又硬| 欧美体内谢she精2性欧美| 99精品人妻少妇一区二区| 免费在线播放电影| 亚洲第一久久影院| 国产精品自拍片| 亚洲免费福利| 在线观看欧美黄色| 亚洲老女人av| 日韩精品第二页| 在线不卡中文字幕| 精品人妻一区二区乱码| 一区二区在线免费播放| 精品国产91九色蝌蚪| 97人妻天天摸天天爽天天| 免费视频亚洲| 曰本色欧美视频在线| 天堂av免费在线| 欧美黄色一区二区| 国内精品久久久久久久久| 黑人一级大毛片| 日本女优在线视频一区二区| 国产综合久久久久久| 亚洲高清视频在线播放| 91欧美一区二区| 亚洲va久久久噜噜噜久久狠狠| 日本视频在线| 亚洲自拍偷拍网站| 欧美 丝袜 自拍 制服 另类| 亚洲伦乱视频| 6080午夜不卡| 久久人人妻人人人人妻性色av| 国精一区二区| 另类色图亚洲色图| 欧美福利视频一区二区| 免费成人在线观看视频| 91在线精品观看| 九色视频网站在线观看| 亚洲人成网站精品片在线观看| 少妇人妻无码专区视频| 欧美91在线|欧美| 亚洲福利在线看| 国产又粗又长又硬| 最新国产乱人伦偷精品免费网站| 国产成人精品a视频一区www| 99热这里只有精品66| 99久久综合99久久综合网站| 伊人色综合影院| av资源网在线播放| 欧美三级中文字幕在线观看| 亚洲av成人片无码| 99视频精品全国免费| 91黄色8090| 国产人妖一区二区三区| 久久久久久毛片| 300部国产真实乱| 日韩中文视频| 亚洲国产精品人人爽夜夜爽| 免费看特级毛片| 男人天堂欧美日韩| 国产精品白丝jk白祙| 欧美猛烈性xbxbxbxb| 欧美性猛xxx| 亚洲性图第一页| 日韩.com| 国产精品成人av在线| 三级小视频在线观看| 亚洲免费在线观看| 一区二区三区免费播放| 日韩美女精品| 午夜精品一区二区三区av| 国产精品永久久久久久久久久| 久久夜色精品一区| 国产日韩av网站| 午夜视频一区二区在线观看| www日韩中文字幕在线看| 怡红院av久久久久久久| 99久久er热在这里只有精品66| 9191国产视频| 国产亚洲精aa在线看| 色噜噜狠狠色综合网图区| 狠狠人妻久久久久久综合| 国产精品伊人色| 可以免费看的黄色网址| 四虎国产精品免费久久| 国产一区二区三区在线播放免费观看| 亚洲免费在线视频观看| a级高清视频欧美日韩| 国产一二三在线视频| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 日本少妇激情视频| 成人午夜私人影院| 日韩精品一区二区三区四| 精品视频在线播放一区二区三区| 精品国产欧美成人夜夜嗨| 一级α片免费看刺激高潮视频| 国产精品久久久久久福利一牛影视| 精品久久久久久久无码| 日本一本不卡| 国产一区在线播放| 欧美尤物美女在线| 欧美精品色综合| 老湿机69福利| 国产成人av电影免费在线观看| 日韩欧美一级在线| 高清日韩中文字幕| 欧美精品videosex极品1| 亚洲乱码精品久久久久..| 亚洲综合久久久| 午夜免费福利影院| 性欧美暴力猛交另类hd| 日韩av在线电影观看| 97精品国产99久久久久久免费| 中文字幕在线精品| 国产欧美一区二区三区视频在线观看| 一区二区三区精品视频| 偷偷色噜狠狠狠狠的777米奇| 久久99伊人| 西游记1978| 国产亚洲精aa在线看| 久久人人爽人人| 美女做暖暖视频免费在线观看全部网址91| 91精品办公室少妇高潮对白| 小嫩苞一区二区三区| 懂色av一区二区三区免费观看 | 亚洲三区在线| 国产美女亚洲精品7777| 国内精品久久久久久久久| 韩日视频在线| 欧美一区二区在线免费播放| 日韩少妇高潮抽搐| 国产日韩av一区| 手机在线免费毛片| 国产精品美女久久久| 亚洲精品不卡| 91精品久久久久久综合五月天| 91sa在线看| 三区四区电影在线观看| 亚洲精品www久久久| 国产又大又粗又硬| 无码av中文一区二区三区桃花岛| 国产精品酒店视频| 成人激情免费网站| 天天干天天干天天干天天干天天干| 欧美一区二区三区久久精品茉莉花 | 羞羞的视频在线| a91a精品视频在线观看| 亚洲三区在线| 亚洲盗摄视频| 97se亚洲综合| yy6080久久伦理一区二区| 欧美激情亚洲视频| 九七久久人人| 亚洲视频自拍偷拍| 国精产品乱码一区一区三区四区| 欧美亚洲国产bt| 精品成人久久久| 亚洲欧洲av色图| 五月天综合视频| www.成人网.com| 色姑娘综合天天| 美腿丝袜亚洲综合| www一区二区www免费| 亚洲网址在线| 日韩不卡视频一区二区| 日韩激情免费| 麻豆亚洲一区| 老司机凹凸av亚洲导航| 91视频99| 欧美视频三区| 成人在线视频网站| 日韩在线短视频| 国产mv久久久| 中文字幕在线视频久| 韩日精品中文字幕| 牛牛精品视频在线| 欧美xxxx18国产| 麻豆网站在线免费观看| 中文字幕日韩欧美| 黄色av网址在线免费观看| 日韩国产精品视频| 天堂av在线播放| 日韩精品视频免费在线观看| 欧美熟妇另类久久久久久不卡| 日韩精品一区二区三区视频播放| 国产免费无遮挡| 91精品国产黑色紧身裤美女| 一卡二卡三卡在线观看| 欧美日韩一区 二区 三区 久久精品| 91视频在线视频| 色狠狠色狠狠综合| 乱子伦一区二区三区| 91久久精品网| 亚洲无码久久久久| 欧美久久一二三四区| 91亚洲精品国偷拍自产在线观看| 欧美日韩国产精品自在自线| 国产又粗又黄又爽| 91精品国产综合久久久蜜臀图片| 国产熟女一区二区三区五月婷| 欧美一级日韩免费不卡| 亚洲不卡免费视频| 欧美变态凌虐bdsm| 免费国产羞羞网站视频| 亚洲欧美日韩网| jyzzz在线观看视频| 久久久国产视频| 亚洲七七久久综合桃花剧情介绍| 久久久久久久久久久国产| 国产直播在线| 国产精品91在线| 香蕉久久久久久| 高清视频在线观看一区| 偷拍亚洲精品| 天堂精品视频| 综合在线一区| 国产精品成人久久电影| 亚洲欧美高清| 国产原创精品在线| 国产成人精品免费网站| 熟妇高潮精品一区二区三区| 久久久精品综合| 天天做夜夜爱爱爱| 亚洲福利视频导航| 日韩人妻精品中文字幕| 91精品婷婷国产综合久久性色 | 亚洲午夜久久久影院| 日本在线观看www| 欧美激情日韩图片| 毛片无码国产| 亚洲已满18点击进入在线看片 | 中文字幕中文字幕一区三区| 国产精品v一区二区三区 | 黑人巨大精品欧美黑白配亚洲| 亚洲国产精品狼友在线观看| 欧美激情中文字幕一区二区| 色在线观看视频| 一本色道久久加勒比精品| 国产手机视频在线| 亚洲美女久久久| 人人超在线公开视频| 国产精品视频精品视频| 一区中文字幕| 一区二区三区的久久的视频| 中文精品在线| 色婷婷综合在线观看| 久久蜜桃av一区二区天堂| 少妇久久久久久被弄高潮| 色成年激情久久综合| 成人毛片在线免费观看| 中文字幕精品一区二区精品| 少妇视频在线观看| 亚洲a一级视频| 日韩av片子| 99福利在线观看| 成人性色生活片免费看爆迷你毛片| 波多野结衣一二三四区| 精品久久久久久久久久久久久 | 福利一区二区在线观看| www.黄色com| 色婷婷综合激情| 欧美在线精品一区二区三区| 九九九热精品免费视频观看网站| 99欧美精品| 欧美性色黄大片人与善| 激情亚洲网站| 日韩精品在线播放视频| 中文字幕在线一区免费| 国产特黄大片aaaa毛片| 精品第一国产综合精品aⅴ| 黄色网页在线免费看| 国产日韩在线看| 欧美色婷婷久久99精品红桃| 欧美女人性生活视频| 99re6这里只有精品视频在线观看| 国产精品九九九九九九| 91精品国产综合久久精品| 午夜老司机在线观看| 国产精品第3页| 国产伦一区二区三区| 国产精品第12页| 久久婷婷国产综合精品青草| 欧美三级韩国三级日本三斤在线观看| 精品少妇一区二区三区| 日本资源在线| 国产高清自拍99| 亚洲中无吗在线| 黄色片子免费看| 洋洋av久久久久久久一区| 国产黄色片免费| 欧美肥臀大乳一区二区免费视频| 成人av在线播放| 肉大捧一出免费观看网站在线播放| 国产精品一级黄| 久久在线视频精品| 亚洲精品一线二线三线无人区| 18video性欧美19sex高清| 国产亚洲欧美另类一区二区三区| 亚洲黄色高清| 99re久久精品国产| 色综合天天综合给合国产| 精品电影在线| 国产免费一区视频观看免费| 91欧美大片| 亚洲成人福利视频| 亚洲高清免费观看 | 亚洲视频在线观看一区二区| 日韩亚洲欧美中文高清在线| 精品中文在线| 欧美激情亚洲天堂| 99国产精品久久久久| 亚洲国产精品无码久久久| 神马久久久久久| 日韩精品一区二区三区中文字幕| www.欧美黄色| 久久久久久黄色| 国产精品视频在线观看免费| 欧美黑人一区二区三区| 亚洲理论电影片| 午夜精品中文字幕| 亚洲一区二区三区四区在线免费观看| 色屁屁草草影院ccyycom| 热99精品只有里视频精品| 久久香蕉国产| 一级全黄裸体片| 色婷婷综合五月| a毛片在线播放| 久久偷看各类wc女厕嘘嘘偷窃| 日韩激情视频在线观看| 四虎永久免费在线| 亚洲激情在线视频| 亚洲福利影视| 农民人伦一区二区三区| 国产农村妇女毛片精品久久麻豆 | 香蕉视频免费版| jiyouzz国产精品久久| 最新中文字幕在线观看视频| 美女扒开尿口让男人操亚洲视频网站| 久久夜色电影| 午夜剧场高清版免费观看| 亚洲成人动漫一区| 在线观看av的网站| 国内不卡一区二区三区| 久久精品国内一区二区三区| 国产手机在线视频| xxxxx成人.com| 国产麻豆精品久久| 久久久久国产免费|