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

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?

大數(shù)據(jù)
無論在 OLAP 還是 OLTP 領域,Join 都是業(yè)務常會涉及到且優(yōu)化規(guī)則比較復雜的 SQL 語句。對于離線計算而言,經(jīng)過數(shù)據(jù)庫領域多年的積累,Join 語義以及實現(xiàn)已經(jīng)十分成熟,然而對于近年來剛興起的 Streaming SQL 來說 Join 卻處于剛起步的狀態(tài)。

無論在 OLAP 還是 OLTP 領域,Join 都是業(yè)務常會涉及到且優(yōu)化規(guī)則比較復雜的 SQL 語句。對于離線計算而言,經(jīng)過數(shù)據(jù)庫領域多年的積累,Join 語義以及實現(xiàn)已經(jīng)十分成熟,然而對于近年來剛興起的 Streaming SQL 來說 Join 卻處于剛起步的狀態(tài)。

其中最為關鍵的問題在于 Join 的實現(xiàn)依賴于緩存整個數(shù)據(jù)集,而 Streaming SQL Join 的對象卻是無限的數(shù)據(jù)流,內(nèi)存壓力和計算效率在長期運行來說都是不可避免的問題。下文將結合 SQL 的發(fā)展解析 Flink SQL 是如何解決這些問題并實現(xiàn)兩個數(shù)據(jù)流的 Join。

離線 Batch SQL Join 的實現(xiàn)

傳統(tǒng)的離線 Batch SQL (面向有界數(shù)據(jù)集的 SQL)有三種基礎的實現(xiàn)方式,分別是 Nested-loop Join、Sort-Merge Join 和 Hash Join。

  • Nested-loop Join 最為簡單直接,將兩個數(shù)據(jù)集加載到內(nèi)存,并用內(nèi)嵌遍歷的方式來逐個比較兩個數(shù)據(jù)集內(nèi)的元素是否符合 Join 條件。Nested-loop Join 雖然時間效率以及空間效率都是最低的,但勝在比較靈活適用范圍廣,因此其變體 BNL 常被傳統(tǒng)數(shù)據(jù)庫用作為 Join 的默認基礎選項。
  • Sort-Merge Join 顧名思義,分為兩個 Sort 和 Merge 階段。首先將兩個數(shù)據(jù)集進行分別排序,然后對兩個有序數(shù)據(jù)集分別進行遍歷和匹配,類似于歸并排序的合并。值得注意的是,Sort-Merge 只適用于 Equi-Join(Join 條件均使用等于作為比較算子)。Sort-Merge Join 要求對兩個數(shù)據(jù)集進行排序,成本很高,通常作為輸入本就是有序數(shù)據(jù)集的情況下的優(yōu)化方案。
  • Hash Join 同樣分為兩個階段,首先將一個數(shù)據(jù)集轉換為 Hash Table,然后遍歷另外一個數(shù)據(jù)集元素并與 Hash Table 內(nèi)的元素進行匹配。第一階段和第一個數(shù)據(jù)集分別稱為 build 階段和 build table,第二個階段和第二個數(shù)據(jù)集分別稱為 probe 階段和 probe table。Hash Join 效率較高但對空間要求較大,通常是作為 Join 其中一個表為適合放入內(nèi)存的小表的情況下的優(yōu)化方案。和 Sort-Merge Join 類似,Hash Join 也只適用于 Equi-Join。

實時 Streaming SQL Join

相對于離線的 Join,實時 Streaming SQL(面向無界數(shù)據(jù)集的 SQL)無法緩存所有數(shù)據(jù),因此 Sort-Merge Join 要求的對數(shù)據(jù)集進行排序基本是無法做到的,而 Nested-loop Join 和 Hash Join 經(jīng)過一定的改良則可以滿足實時 SQL 的要求。

我們通過例子來看基本的 Nested Join 在實時 Streaming SQL 的基礎實現(xiàn)(案例及圖來自 Piotr Nowojski 在 Flink Forward San Francisco 的分享[2])。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖1. Join-in-continuous-query-1

Table A 有 1、42 兩個元素,Table B 有 42 一個元素,所以此時的 Join 結果會輸出 42。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖2. Join-in-continuous-query-2

接著 Table B 依次接受到三個新的元素,分別是 7、3、1。因為 1 匹配到 Table A 的元素,因此結果表再輸出一個元素 1。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖3. Join-in-continuous-query-3

隨后 Table A 出現(xiàn)新的輸入 2、3、6,3 匹配到 Table B 的元素,因此再輸出 3 到結果表。

可以看到在 Nested-Loop Join 中我們需要保存兩個輸入表的內(nèi)容,而隨著時間的增長 Table A 和 Table B 需要保存的歷史數(shù)據(jù)無止境地增長,導致很不合理的內(nèi)存磁盤資源占用,而且單個元素的匹配效率也會越來越低。類似的問題也存在于 Hash Join 中。

那么有沒有可能設置一個緩存剔除策略,將不必要的歷史數(shù)據(jù)及時清理呢?答案是肯定的,關鍵在于緩存剔除策略如何實現(xiàn),這也是 Flink SQL 提供的三種 Join 的主要區(qū)別。

Flink SQL 的 Join

Regular Join

Regular Join 是最為基礎的沒有緩存剔除策略的 Join。Regular Join 中兩個表的輸入和更新都會對全局可見,影響之后所有的 Join 結果。舉例,在一個如下的 Join 查詢里,Orders 表的新紀錄會和 Product 表所有歷史紀錄以及未來的紀錄進行匹配。

  1. SELECT * FROM OrdersINNER JOIN ProductON Orders.productId = Product.id 

因為歷史數(shù)據(jù)不會被清理,所以 Regular Join 允許對輸入表進行任意種類的更新操作(insert、update、delete)。然而因為資源問題 Regular Join 通常是不可持續(xù)的,一般只用做有界數(shù)據(jù)流的 Join。

Time-Windowed Join

Time-Windowed Join 利用窗口給兩個輸入表設定一個 Join 的時間界限,超出時間范圍的數(shù)據(jù)則對 JOIN 不可見并可以被清理掉。值得注意的是,這里涉及到的一個問題是時間的語義,時間可以指計算發(fā)生的系統(tǒng)時間(即 Processing Time),也可以指從數(shù)據(jù)本身的時間字段提取的 Event Time。如果是 Processing Time,F(xiàn)link 根據(jù)系統(tǒng)時間自動劃分 Join 的時間窗口并定時清理數(shù)據(jù);如果是 Event Time,F(xiàn)link 分配 Event Time 窗口并依據(jù) Watermark 來清理數(shù)據(jù)。

以更常用的 Event Time Windowed Join 為例,一個將 Orders 訂單表和 Shipments 運輸單表依據(jù)訂單時間和運輸時間 Join 的查詢?nèi)缦?

  1. SELECT *FROM  Orders o,  Shipments sWHERE  o.id = s.orderId AND s.shiptime BETWEEN o.ordertime AND o.ordertime + INTERVAL '4' HOUR 

這個查詢會為 Orders 表設置了 o.ordertime > s.shiptime- INTERVAL ‘4’ HOUR 的時間下界(圖4)。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖4. Time-Windowed Join 的時間下界 - Orders 表

并為 Shipmenets 表設置了 s.shiptime >= o.ordertime 的時間下界(圖5)。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖5. Time-Windowed Join 的時間下界 - Shipment 表

因此兩個輸入表都只需要緩存在時間下界以上的數(shù)據(jù),將空間占用維持在合理的范圍。

不過雖然底層實現(xiàn)上沒有問題,但如何通過 SQL 語法定義時間仍是難點。盡管在實時計算領域 Event Time、Processing Time、Watermark 這些概念已經(jīng)成為業(yè)界共識,但在 SQL 領域對時間數(shù)據(jù)類型的支持仍比較弱[4]。因此,定義 Watermark 和時間語義都需要通過編程 API 的方式完成,比如從 DataStream 轉換至 Table ,不能單純靠 SQL 完成。這方面的支持 Flink 社區(qū)計劃通過拓展 SQL 方言來完成,感興趣的讀者可以通過 FLIP-66[7] 來追蹤進度。

Temporal Table Join

雖然 Timed-Windowed Join 解決了資源問題,但也限制了使用場景: Join 兩個輸入流都必須有時間下界,超過之后則不可訪問。這對于很多 Join 維表的業(yè)務來說是不適用的,因為很多情況下維表并沒有時間界限。針對這個問題,F(xiàn)link 提供了 Temporal Table Join 來滿足用戶需求。

Temporal Table Join 類似于 Hash Join,將輸入分為 Build Table 和 Probe Table。前者一般是緯度表的 changelog,后者一般是業(yè)務數(shù)據(jù)流,典型情況下后者的數(shù)據(jù)量應該遠大于前者。在 Temporal Table Join 中,Build Table 是一個基于 append-only 數(shù)據(jù)流的帶時間版本的視圖,所以又稱為 Temporal Table。Temporal Table 要求定義一個主鍵和用于版本化的字段(通常就是 Event Time 時間字段),以反映記錄在不同時間的內(nèi)容。

比如典型的一個例子是對商業(yè)訂單金額進行匯率轉換。假設有一個 Orders 流記錄訂單金額,需要和 RatesHistory 匯率流進行 Join。RatesHistory 代表不同貨幣轉為日元的匯率,每當匯率有變化時就會有一條更新記錄。兩個表在某一時間節(jié)點內(nèi)容如下:

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖6. Temporal Table Join Example]

我們將 RatesHistory 注冊為一個名為 Rates 的 Temporal Table,設定主鍵為 currency,版本字段為 time。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖7. Temporal Table Registration]

此后給 Rates 指定時間版本,Rates 則會基于 RatesHistory 來計算符合時間版本的匯率轉換內(nèi)容。

 

Flink SQL 如何實現(xiàn)數(shù)據(jù)流的 Join?
圖8. Temporal Table Content]

在 Rates 的幫助下,我們可以將業(yè)務邏輯用以下的查詢來表達:

  1. SELECT  o.amount * r.rateFROM Orders o, LATERAL Table(Rates(o.time)) rWHERE o.currency = r.currency 

值得注意的是,不同于在 Regular Join 和 Time-Windowed Join 中兩個表是平等的,任意一個表的新記錄都可以與另一表的歷史記錄進行匹配,在 Temporal Table Join 中,Temoparal Table 的更新對另一表在該時間節(jié)點以前的記錄是不可見的。這意味著我們只需要保存 Build Side 的記錄直到 Watermark 超過記錄的版本字段。因為 Probe Side 的輸入理論上不會再有早于 Watermark 的記錄,這些版本的數(shù)據(jù)可以安全地被清理掉。

總結

實時領域 Streaming SQL 中的 Join 與離線 Batch SQL 中的 Join 最大不同點在于無法緩存完整數(shù)據(jù)集,而是要給緩存設定基于時間的清理條件以限制 Join 涉及的數(shù)據(jù)范圍。根據(jù)清理策略的不同,F(xiàn)link SQL 分別提供了 Regular Join、Time-Windowed Join 和 Temporal Table Join 來應對不同業(yè)務場景。

另外,盡管在實時計算領域 Join 可以靈活地用底層編程 API 來實現(xiàn),但在 Streaming SQL 中 Join 的發(fā)展仍處于比較初級的階段,其中關鍵點在于如何將時間屬性合適地融入 SQL 中,這點 ISO SQL 委員會制定的 SQL 標準并沒有給出完整的答案。或者從另外一個角度來講,作為 Streaming SQL 最早的開拓者之一,F(xiàn)link 社區(qū)很適合探索出一套合理的 SQL 語法反過來貢獻給 ISO。

作者介紹:

林小鉑,網(wǎng)易游戲高級開發(fā)工程師,負責游戲數(shù)據(jù)中心實時平臺的開發(fā)及運維工作,目前專注于 Apache Flink 的開發(fā)及應用。探究問題本來就是一種樂趣。

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2011-12-14 15:57:13

javanio

2009-04-13 16:35:25

TSQL查詢SQL Server

2016-11-14 19:01:36

數(shù)據(jù)流聊天系統(tǒng)web

2020-04-14 15:18:16

SparkFlink框架

2020-01-13 14:39:06

FlinkSQL無限流

2009-08-19 10:41:12

Java輸入數(shù)據(jù)流

2022-03-18 08:57:17

前端數(shù)據(jù)流選型

2011-09-01 18:38:02

SQL Server 文件流功能

2021-10-27 10:43:36

數(shù)據(jù)流中位數(shù)偶數(shù)

2017-11-16 19:26:34

海量數(shù)據(jù)算法計算機

2021-06-08 05:50:00

數(shù)據(jù)流數(shù)字化轉型數(shù)字化

2019-06-18 13:51:08

大數(shù)據(jù)流處理新興市場

2011-04-14 14:43:38

SSISTransformat

2011-08-19 16:07:33

SQL Server數(shù)據(jù)流

2012-07-30 08:31:08

Storm數(shù)據(jù)流

2024-07-05 10:17:08

數(shù)據(jù)流系統(tǒng)CPU

2011-04-19 09:18:02

SSIS數(shù)據(jù)轉換

2023-08-18 09:29:59

Java數(shù)據(jù)流

2013-10-21 10:58:50

微軟大數(shù)據(jù)SQL Server

2009-07-15 09:06:11

Linux圖形系統(tǒng)X11的CS架構
點贊
收藏

51CTO技術棧公眾號

精品福利视频导航| 成人黄色a**站在线观看| 亚洲视频在线观看免费| 大荫蒂性生交片| 午夜福利视频一区二区| 米奇777在线欧美播放| 一区二区欧美久久| 亚洲av无一区二区三区久久| free性m.freesex欧美| 99re亚洲国产精品| 国产精品一区二区三区在线播放| 国产av 一区二区三区| 欧美激情15p| 欧美丝袜丝交足nylons图片| 欧美 国产 精品| 欧美孕妇孕交| 精品写真视频在线观看| 国内成人精品一区| 香蕉久久久久久久| 麻豆一区一区三区四区| 欧美美女直播网站| 日韩精品视频久久| 91小视频xxxx网站在线| 久久欧美一区二区| 国产精品一国产精品最新章节| 91青青草视频| 亚洲日产国产精品| 日韩视频免费在线观看| www.中文字幕av| 少妇精品在线| 欧美色倩网站大全免费| 欧美综合在线播放| 伊人福利在线| 中文字幕在线不卡| 欧美一区二区三区在线播放| 亚洲av无码乱码国产精品| 日本欧美久久久久免费播放网| 久久久免费观看| 放荡的美妇在线播放| 成人aaaa| 久久久久国内| 亚洲精品国产无天堂网2021| 欧美中日韩免费视频| 欧美77777| 国产盗摄一区二区三区| 91精品国产综合久久久久久久久| youjizz在线视频| 亚洲福利专区| 欧美高清在线视频观看不卡| 日韩av手机在线免费观看| 精品日本12videosex| 日韩精品中文字| 精品人妻伦一二三区久| 亚洲性视频在线| 欧美精品日韩一区| 在线观看国产中文字幕| 国产成人精品一区二三区在线观看 | 国产精品一区二区99| 日韩av最新在线观看| 偷偷色噜狠狠狠狠的777米奇| 日韩成人视屏| 精品免费99久久| 精品国产免费久久久久久婷婷| 精品国产欧美| 日韩久久久精品| 51自拍视频在线观看| 欧美经典影片视频网站| 日韩一区二区三区电影在线观看 | 国产精品影视在线观看| 91久久极品少妇xxxxⅹ软件| www.天堂在线| 国产91精品一区二区麻豆网站| 91情侣在线视频| 丰满少妇一级片| av成人老司机| 欧美日韩高清免费| 9i精品一二三区| 综合在线观看色| 国产成a人亚洲精v品在线观看| 黑人极品ⅴideos精品欧美棵| 亚洲v精品v日韩v欧美v专区| 欧美三级一级片| 性欧美18一19sex性欧美| 欧美视频一区二区三区四区| 三级av免费观看| 亚洲精品一区二区三区中文字幕| 精品日韩在线一区| 激情综合丁香五月| 欧美日中文字幕| 久久精品国产69国产精品亚洲| 久久久久久久久久网站| 一本色道久久综合亚洲精品高清| 日韩免费中文字幕| 国产一区二区视频免费观看| 高清在线成人网| 茄子视频成人在线观看| 黄页视频在线播放| 亚洲成av人影院在线观看网| 情侣黄网站免费看| 成人在线啊v| 亚洲黄色免费三级| 成人信息集中地| 亚洲激情专区| 国产精品一香蕉国产线看观看| 国产熟女精品视频| 91亚洲国产成人精品一区二区三| 中文字幕一区二区三区四区五区六区| 久久久久久久久免费视频| 亚洲成人动漫av| 777视频在线| 美女一区二区在线观看| 这里只有视频精品| 日韩欧美视频在线免费观看| 美女网站一区二区| 狠狠爱一区二区三区| 日本中文字幕电影在线免费观看 | 日韩pacopacomama| 日韩欧美色综合网站| 国产精品成人在线视频| 国产视频一区欧美| 99re国产在线播放| 日本在线免费网| 日韩欧美在线视频免费观看| 日本黄色www| 日本午夜一区| 欧美在线精品免播放器视频| www国产在线| 亚洲欧洲三级电影| 另类小说第一页| 天堂一区二区三区四区| 欧美日韩国产123| 一女二男一黄一片| 日本一区二区免费在线| 国产乱子伦农村叉叉叉| 伊人久久影院| 久久精品视频播放| 中文字幕视频免费观看| 91老师片黄在线观看| 久操网在线观看| 欧美经典一区| 另类专区欧美制服同性| 在线观看国产精品入口男同| 国产午夜一区二区三区| 中文字幕乱码人妻综合二区三区| 盗摄系列偷拍视频精品tp| 久热爱精品视频线路一| 国产精品女人久久久| 国产精品久久久久久亚洲伦 | avtt天堂在线| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一区三区电影在线观看| jizz欧美| 日韩视频免费看| 国产乱淫a∨片免费视频| 中文字幕在线免费不卡| 男人的天堂最新网址| 久久精品国产www456c0m| 国产精品啪视频| 在线观看完整版免费| 欧美在线观看禁18| 日本一道本视频| 日韩av一区二区在线影视| 蜜桃999成人看片在线观看| 色偷偷偷在线视频播放 | 国产福利电影在线| 欧美性生交xxxxx久久久| 亚洲av无码一区二区二三区| 亚洲一区激情| 欧美日韩国产高清视频| 免费观看欧美大片| 国产亚洲激情在线| 一本色道久久综合亚洲| 中文字幕制服丝袜成人av| 久久婷婷中文字幕| 国产一区久久| 久久草视频在线看| 亚洲精品在线影院| 久久精品小视频| 亚洲乱熟女一区二区| 精品露脸国产偷人在视频| 人妻aⅴ无码一区二区三区| 视频一区在线播放| 在线成人性视频| 超碰97久久| 欧亚精品在线观看| 久久bbxx| 精品一区二区电影| 亚洲天堂网在线观看视频| 亚洲精品国产视频| 中文在线永久免费观看| 日本特黄久久久高潮| 视色,视色影院,视色影库,视色网| **爰片久久毛片| 国产福利精品在线| 永久免费网站在线| 亚洲人成自拍网站| 午夜免费福利视频| 91福利视频在线| 久久久久国产精品夜夜夜夜夜| 久久久久国产精品人| 91香蕉国产线在线观看| 国产精品视区| 91社在线播放| 亚洲图区在线| 国产精品日韩二区| 日韩黄色在线| 2018国产精品视频| h视频在线免费观看| 亚洲免费av网址| 国产激情久久久久久熟女老人av| 欧美在线你懂得| 精品无码免费视频| 国产精品的网站| 精品无码一区二区三区 | 日韩欧美国产激情| 麻豆chinese极品少妇| 国产午夜亚洲精品羞羞网站| 波多野结衣一二三区| 久久99国产精品久久99 | 蜜臀av性久久久久蜜臀av麻豆| 成品人视频ww入口| 亚洲经典一区| 天堂av一区二区| 婷婷成人综合| 国产精品区一区二区三含羞草| 亚洲一区二区小说| 国产精品678| 三妻四妾的电影电视剧在线观看| 久久6免费高清热精品| av男人的天堂在线| 亚洲人成自拍网站| 五月天丁香视频| 欧美sm美女调教| 国产成人三级在线播放| 欧美人伦禁忌dvd放荡欲情| 无码人妻精品一区二区三区不卡| 午夜精品免费在线| 久久免费黄色网址| 亚洲乱码国产乱码精品精可以看 | 中文字幕制服丝袜成人av| 亚洲成人黄色av| 久久免费美女视频| 性久久久久久久久久| av电影在线观看完整版一区二区| 日批免费观看视频| 国产91丝袜在线18| youjizz.com国产| 国产a精品视频| 99热这里只有精品2| 国产精品99精品久久免费| www.国产福利| 国产一区二区伦理| 九色91porny| 国产69精品久久久久毛片| 国产又黄又嫩又滑又白| 国产不卡视频在线播放| 9.1在线观看免费| 丰满放荡岳乱妇91ww| 黑森林av导航| 本田岬高潮一区二区三区| 野战少妇38p| 91亚洲午夜精品久久久久久| 久久久精品人妻无码专区| 久久蜜桃一区二区| 欧美日韩中文字幕视频| 亚洲欧洲精品一区二区精品久久久| 日本一二三不卡视频| 亚洲视频综合在线| 欧美人妻精品一区二区免费看| 亚洲永久精品国产| 日韩欧美亚洲一区二区三区| 欧美小视频在线观看| 天天天天天天天干| 7777精品久久久大香线蕉| 99视频国产精品免费观看a| 日韩视频一区二区三区在线播放 | 成人一区二区三区| 美国黄色a级片| 国产日韩欧美a| 国产尤物在线播放| 午夜久久久久久久久久一区二区| 日日噜噜噜噜人人爽亚洲精品| 欧美色倩网站大全免费| 亚洲精品久久久狠狠狠爱| 精品亚洲一区二区三区四区五区| 福利视频在线看| 久久成人这里只有精品| 日韩伦理在线| 91久久中文字幕| 久久久久97| 欧美一级免费在线观看| 最新国产拍偷乱拍精品 | 亚洲日本天堂| 国产色婷婷国产综合在线理论片a| 亚洲不卡在线| 欧洲亚洲一区二区三区四区五区| 亚洲九九视频| 欧美激情国产精品日韩| 国产一区高清在线| 波多野结衣 在线| 亚洲男同1069视频| 日本韩国欧美中文字幕| 91精品国产麻豆国产自产在线| 少妇喷水在线观看| 精品国偷自产在线视频99| 色偷偷色偷偷色偷偷在线视频| 亚洲一区二区三区在线免费观看| 欧美自拍视频| 男女爱爱视频网站| 日韩av一区二区在线影视| 国产精品九九视频| 亚洲日本护士毛茸茸| 中文字幕永久在线| 亚洲国产精品99久久| 在线观看黄av| 人人澡人人澡人人看欧美| 视频精品国内| 亚洲一区二区四区| 免费在线欧美黄色| 逼特逼视频在线观看| 中文字幕在线一区免费| 亚洲成人av网址| 亚洲精品福利资源站| 日本h片在线观看| 国产免费成人av| 欧美猛男做受videos| 人人妻人人添人人爽欧美一区| 国产精品自产自拍| 欧美视频一区二区在线| 在线观看网站黄不卡| 日本私人网站在线观看| 欧美激情欧美狂野欧美精品| 九九九九九九精品任你躁| 一区二区三区国产福利| 日韩成人免费看| 中文字幕第4页| 精品色蜜蜜精品视频在线观看| 性欧美8khd高清极品| 欧美成人精品在线视频| 久久av偷拍| 日本三级中文字幕在线观看| 精品一区二区三区在线播放| 欧洲美熟女乱又伦| 91久久奴性调教| 国产福利小视频在线| 国产精品久久久久久av福利| 久久最新网址| 国产v亚洲v天堂无码久久久| 久久日一线二线三线suv| 免费看毛片网站| 精品五月天久久| 伊人久久国产| 日本一区二区精品视频| 日韩国产在线一| 九九热久久免费视频| 91麻豆精品国产自产在线 | 国产精品美女一区二区| 中文字幕一级片| 日韩亚洲精品视频| 亚洲伊人伊成久久人综合网| 美女黄色片网站| 福利视频网站一区二区三区| 日本一二三区视频| 日韩精品视频中文在线观看| 欧美成人免费电影| 日韩激情久久| 捆绑调教美女网站视频一区| 我要看黄色一级片| 精品三级在线观看| 竹内纱里奈兽皇系列在线观看| 欧美另类一区| 蜜桃视频一区二区三区| 国产67194| 亚洲国产精品高清久久久| 在线高清av| 亚洲欧洲日韩综合二区| 国产一区二区三区免费| 国产大片中文字幕| 亚洲人成伊人成综合网久久久| 欧美aaaaaaaa| 欧美一区二区视频在线播放| 26uuu另类欧美亚洲曰本| 波多野结衣理论片| 免费av一区二区| 美女午夜精品| 91丨九色丨蝌蚪| 午夜国产精品一区| xxxxx日韩| 成人综合av网| 日韩专区在线视频| 欧美日韩在线国产| 亚洲人成电影网站色| 欧美成年网站| 久久久久免费观看| 日韩乱码一区二区三区| 久久99国产精品自在自在app | 羞羞视频在线免费国产| 久久99精品久久久久子伦| 精品影视av免费| 伦av综合一区|