精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美激情精品久久久久| 日韩一区二区视频| 日韩欧美在线电影| 日韩美女视频网站| 国产精品久久中文字幕| 日韩乱码一区二区| 国产免费久久| 91麻豆精品国产91久久久 | 国产精品国产三级国产三级人妇| 成人精品一区二区三区电影黑人| 99热精品免费| 少妇精品久久久一区二区| 9191国产精品| 免费黄色福利视频| av片在线观看| 久久美女高清视频| 91精品天堂| 男操女视频网站| 激情欧美一区| 中文字幕v亚洲ⅴv天堂| 精品人妻二区中文字幕| 亚洲精品555| 亚洲国产成人av| 伊人狠狠色丁香综合尤物| 欧美 日韩 人妻 高清 中文| 久久精品久久综合| 欧日韩在线观看| 美女视频黄免费| 久久美女视频| 亚洲欧美自拍一区| 精品人妻在线视频| 国产精品igao视频网网址不卡日韩| 久久porn| 中文字幕日韩精品一区| 欧美日韩国产高清视频| 亚洲av综合色区无码一区爱av | 国产精品探花视频| 日韩电影免费在线| 欧美最顶级丰满的aⅴ艳星| 欧美日韩精品一区二区三区视频播放| 精品国产一区二区三区四区| 亚洲高清av在线| 日本黄色www| 午夜不卡一区| 欧美午夜电影一区| 男人的天堂日韩| 成人片免费看| 日韩欧美在线网址| 少妇高潮喷水久久久久久久久久| 日本在线观看高清完整版| 亚洲欧洲性图库| 午夜一区二区三视频在线观看| 四虎精品在线| 91视频观看视频| 久久艹中文字幕| 亚洲三区在线播放| 9i在线看片成人免费| 国产欧美一区二区在线播放| 亚洲大尺度视频| 国产99久久久久久免费看农村| 91热精品视频| 国内精品偷拍视频| 国产成都精品91一区二区三| 亚洲综合中文字幕在线观看| 精品国产99久久久久久宅男i| 韩国精品久久久| 96精品久久久久中文字幕| 国产免费叼嘿网站免费| 国产一区二区三区久久久| 91精品在线一区| 99视频免费看| 成人免费视频caoporn| 国产精品一国产精品最新章节| 成人乱码一区二区三区| 成人免费av网站| 久久久婷婷一区二区三区不卡| 青青久草在线| 国产精品久久毛片av大全日韩| 免费成人深夜夜行网站视频| av色综合久久天堂av色综合在| 亚洲综合男人的天堂| 欧美啪啪免费视频| 日韩a**中文字幕| 欧美三级中文字| 一区二区三区国产好的精华液| 欧美视频三区| 亚洲精品国产欧美| 日本高清黄色片| 欧美xxx在线观看| 97视频免费观看| 亚洲高清在线看| 国产一区二区三区蝌蚪| 久精品国产欧美| a天堂在线资源| 一区二区三区在线观看国产 | 超薄肉色丝袜一二三| 91精品国产91久久久久久密臀| 欧美国产第一页| 欧美日韩一二三四区| 久久9热精品视频| 国产欧美精品一区二区三区| 国产一二三区在线| 一区二区三区在线免费视频| 精品一卡二卡三卡| 秋霞一区二区三区| 亚洲午夜av电影| 久久久久久激情| 青草av.久久免费一区| 成人在线资源网址| 91社区在线观看播放| 亚洲777理论| 亚洲激情在线看| 亚洲成人一品| 久久久久久久网站| 这里只有精品9| av爱爱亚洲一区| 一道本在线观看视频| 中国字幕a在线看韩国电影| 欧美一区二区在线免费观看| 亚洲天堂久久新| 国产精品theporn| 国产欧美日韩免费看aⅴ视频| 无码国产精品一区二区免费16 | 久久中文字幕在线观看| 蜜臀av在线播放一区二区三区| 精品视频导航| 日本无删减在线| 欧美三级在线视频| 丰满的亚洲女人毛茸茸| 99热在线精品观看| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 国产成人鲁鲁免费视频a| www.黄色片| 国产精品高潮呻吟| 免费黄色特级片| 美女主播精品视频一二三四| 蜜臀久久99精品久久久无需会员 | 醉酒壮男gay强迫野外xx| 欧美1级日本1级| 国产男人精品视频| 国产高清视频在线观看| 一本久久综合亚洲鲁鲁五月天| 一二三区视频在线观看| 欧美一区二区三区另类| 成人写真视频福利网| 在线播放麻豆| 欧美色男人天堂| 性欧美精品男男| 视频一区欧美日韩| 欧美中日韩免费视频| 一区二区精品伦理...| 亚洲精品第一页| 999这里只有精品| 92国产精品观看| www.好吊操| 国产精品zjzjzj在线观看| 欧美精品xxx| 搡老岳熟女国产熟妇| 亚洲午夜久久久久久久久电影网 | 久久精品亚洲一区二区三区浴池| 国产一区二区在线视频播放| 欧美日韩另类图片| 51ⅴ精品国产91久久久久久| 你懂的视频在线免费| 91久久精品一区二区三区| 精品无码在线观看| 久久精品国产久精国产爱| 中文字幕黄色大片| 欧美影院精品| 亚洲91精品在线观看| 四虎精品成人免费网站| 色婷婷香蕉在线一区二区| 日韩毛片无码永久免费看| 蜜臀久久久久久久| 91传媒免费视频| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 99国产成人精品| 亚洲乱码国产乱码精品精的特点| 日本网站在线看| 亚洲国产高清一区| 欧美精彩一区二区三区| 国产在视频一区二区三区吞精| 久久久精品日本| 亚洲伦理在线观看| 色8久久精品久久久久久蜜| 极品色av影院| 成人h精品动漫一区二区三区| 日本xxxxxxx免费视频| 天天av综合| 国产手机精品在线| 国产成人精品一区二区三区视频 | 国产精品丝袜一区二区| 成人国产一区二区三区精品| 乱子伦视频在线看| 欧美成人中文| 欧美日韩免费高清| 欧美成人精品一级| 国产999精品视频| av网站导航在线观看免费| 精品视频中文字幕| 国产日韩欧美一区二区东京热| 午夜精品aaa| 精品视频第一页| 99视频精品在线| 日本高清一区二区视频| 久久经典综合| a级片一区二区| 日本一区二区高清不卡| 国产伦理久久久| 亚洲欧美专区| 国产z一区二区三区| 三级资源在线| 日韩中文字幕在线视频播放| 天堂av2024| 日韩欧美一区二区视频| 日韩国产成人在线| 性做久久久久久| 免费在线观看一级片| 亚洲国产精品成人久久综合一区| 国产视频精品视频| 狠狠色综合日日| av在线无限看| 亚洲一区二区三区高清| 久久99久久久久久| 中文一区一区三区免费在线观看| 日本精品一区| 亚洲精品国产setv| 国产麻豆一区二区三区在线观看| 国产剧情一区二区在线观看| 国产精品久久久久高潮| 筱崎爱全乳无删减在线观看| 欧美精品激情视频| av网址在线免费观看| 最新国产成人av网站网址麻豆| 免费在线视频你懂得| 日韩国产精品视频| 蜜臀久久久久久999| 日韩欧美高清一区| www.桃色av嫩草.com| 欧美日韩一二三| 在线观看国产精品入口男同| 日本高清视频一区二区| 国产免费观看av| 欧美视频在线观看免费网址| 国产成人无码精品| 亚洲电影在线播放| 香蕉视频一区二区| 亚洲国产欧美日韩另类综合| 久草视频免费播放| 亚洲国产综合视频在线观看| 激情五月少妇a| 亚洲一区中文在线| 国产无遮挡免费视频| 亚洲成a人v欧美综合天堂| 精品一级少妇久久久久久久| 亚洲国产中文字幕在线视频综合| 久久久精品91| 欧美日韩国产激情| 亚洲影院在线播放| 色老头久久综合| 中文字幕在线2019| 欧美精品18+| 午夜精品久久久久久久96蜜桃| 精品美女被调教视频大全网站| 人妻少妇精品无码专区久久| 日韩成人在线视频网站| 蜜桃视频在线免费| 最新国产成人av网站网址麻豆| 超碰免费在线播放| 久久久影视精品| 成人av观看| 国产在线999| 国产精品一区二区三区美女| 免费在线观看一区二区| 日韩国产欧美| 欧美日韩激情四射| av成人国产| 性生活免费在线观看| 国产一区二区三区精品视频| 日韩免费高清一区二区| 久久久www免费人成精品| 亚洲欧洲综合网| 亚洲国产成人精品视频| 亚洲av中文无码乱人伦在线视色| 欧美日本韩国一区| 日本精品一二区| 国产一区二区三区在线看| 国产人成网在线播放va免费| 国内揄拍国内精品| 国产精品xxx| 国产高清在线一区| 青草国产精品| 国内少妇毛片视频| 全部av―极品视觉盛宴亚洲| 日本黄色一级网站| 国产午夜亚洲精品不卡| 欧美成人免费看| 日本精品一区二区三区四区的功能| 96日本xxxxxⅹxxx17| 亚洲国产欧美自拍| 九七久久人人| 欧美自拍大量在线观看| 国产亚洲高清在线观看| 日韩hmxxxx| 亚洲一级二级| 五月天婷婷亚洲| 久久这里只有精品首页| 欧美黄色免费在线观看| 欧美性猛交一区二区三区精品| 亚洲黄色小说网址| 久久好看免费视频| 成人视屏在线观看| 国产欧美一区二区三区不卡高清| 天天av综合| 成年人在线看片| av成人免费在线观看| 无码人妻精品一区二区三区夜夜嗨| 91极品视觉盛宴| 天天av天天翘| 欧美大秀在线观看| 四虎国产精品永久在线国在线| 欧美精品一区二区三区四区五区 | 国产精品三级视频| 制服.丝袜.亚洲.中文.综合懂色| 日韩欧美亚洲国产精品字幕久久久 | 国产精品无码专区| 亚洲狼人国产精品| 一炮成瘾1v1高h| 国产亚洲视频在线| 欧美成人黑人| 久久国产精品免费一区| 欧美视频不卡| 久久久国产精品久久久| 最新久久zyz资源站| 国产乱码在线观看| 亚洲天堂男人天堂女人天堂| 亚洲天堂资源| 鲁片一区二区三区| 亚洲理伦在线| 激情综合丁香五月| 午夜视频一区二区| 日本精品999| 69久久夜色精品国产7777| 国产香蕉精品| 欧美日韩不卡在线视频| 国产成人精品综合在线观看| 国产一区二区视频在线观看免费| 欧美精品亚洲二区| 国产黄网站在线观看| 成人夜晚看av| 午夜国产精品视频| 久久人妻少妇嫩草av蜜桃| 亚洲综合一区在线| 可以免费观看的毛片| 久久久久这里只有精品| 一区中文字幕电影| 婷婷五月综合缴情在线视频| 99久久久精品| 黄瓜视频在线免费观看| 亚洲图片欧美日产| 日韩在线你懂得| 在线观看av的网址| 成人a免费在线看| 日日夜夜综合网| 亚洲视频精品在线| 日日夜夜综合| 久久这里只有精品8| 波波电影院一区二区三区| 日韩不卡视频在线| 亚洲午夜精品久久久久久久久久久久| 777午夜精品电影免费看| 一本二本三本亚洲码| 国产成人精品综合在线观看| 国产成人一区二区三区影院在线| 亚洲精品一区二区久| 久久久久毛片| 日本久久久网站| 久久久久久久久99精品| 亚洲网站免费观看| 欧美高清一级大片| 红桃视频在线观看一区二区| 亚洲图色中文字幕| 亚洲一区二区3| 蜜桃视频在线观看视频| 91中文在线视频| 亚洲免费综合| 视频国产一区二区| 亚洲成人免费网站| 国产精品传媒麻豆hd| 亚洲理论电影在线观看| 国产午夜亚洲精品理论片色戒| 99久久精品国产一区二区成人| 午夜精品美女自拍福到在线| 欧美一二区在线观看| 波多野结衣电影免费观看| 一本久久a久久免费精品不卡| 91小视频xxxx网站在线| 美乳视频一区二区| 国产乱一区二区| 看黄色一级大片|