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

DRDS內核技術前瞻 — 列式存儲綜述

存儲 存儲軟件
本文將介紹若干個典型的列式存儲數據庫系統。作為完整的 OLAP 或 HTAP 數據庫系統,他們大多使用了自主設計的存儲方式,運行在多臺機器節點上,使用網絡進行通訊協作。

本文將介紹若干個典型的列式存儲數據庫系統。作為完整的 OLAP 或 HTAP 數據庫系統,他們大多使用了自主設計的存儲方式,運行在多臺機器節點上,使用網絡進行通訊協作。

C-Store (2005) / Vertica

大多數 DBMS 都是為寫優化,而 C-Store 是***個為讀優化的 OLTP 數據庫系統,雖然從今天的視角看它應當算作 HTAP 。在 ad-hoc 的分析型查詢、ORM 的在線查詢等場景中,大多數操作都是查詢而非寫入,在這些場景中列式存儲能取得更好的性能。像主流的 DBMS 一樣,C-Store 支持標準的關系型模型。

[[234040]]

關于 C-Store 特有的 projection 數據模型。這里做一下簡單的回顧:每個 projection 可以包含一個或多個列,完整的表視圖需要通過若干 projection JOIN 得到。Projection 水平拆分成若干 segments。

C-Store 的設計考慮到企業級應用的使用模式,在優化 AP 查詢的同時兼顧了大多數 DBMS 具有的 TP 查詢功能。在 ACID 事務方面同樣提供了完整的支持,支持快照(snapshot)讀事務和一般的 2PC 讀寫事務。

通常而言,互聯網應用對 DBMS 有較高的并發寫入需求,對一致性讀、分析型查詢的需求不那么強烈。而企業級應用(例如 CRM 系統)的并發寫入需求不大,但需要對一致性讀、分析型查詢等。

系統設計

C-Store 將其物理存儲也就是每個 projection 分成兩層,分別是為寫優化的 Writeable Store (WS) 和為讀優化的 Read-optimized Store (RS)。RS 即是基線數據,WS 上暫存了對 RS 數據的變更,二者在讀取時需要 merge 得到***的數據。在上一篇文章的 Apache ORC 格式種,我們也看到了類似的做法(基線數據疊加增量數據)。

RS 是一個為讀優化的列式存儲。RS 中采用之前提到的 projection 數據模型,對不同的列采用了不同的編碼方式,根據它是否是 projection 的排序列、以及該列的取值個數,來決定采取何種編碼方式。

WS 用于暫存高性能的寫入操作,例如 INSERT、UPDATE 等。為了簡化系統的設計,WS 邏輯上仍然按照 projection 的列式模型存儲,但是物理上使用 B 樹以滿足快速的寫入要求。WS 基于 BerkeleyDB 構建。

對于某一列中的某個值 v,會有兩個映射關系存在:一是 (storage_key -> v),在 RS 中 storage_key 就是 segment 中的行號,但在 WS 中顯式的記錄下

來;二是 (sort_key -> storage_key),用于滿足主鍵查詢的需求。

值得一提的是,WS 是一個 MVCC 的存儲——它的每個數據都保存了對應的寫入事務編號,同一行可能有多個版本同時存在。而 RS 是沒有 MVCC 的,你可以將它看作過去某個時間點的快照。

Tuple Mover 周期性地將 WS 中的數據移動到 RS 中。與大多數 MVCC 系統一樣,C-Store 中的更新是通過一個刪除加一個插入實現的,Tuple Mover 的主要工作是根據 WS 的數據更新 RS:刪掉被刪除的行、添加新的行。

事務支持

C-Store 認為大多數事務是只讀事務,因此采用了 Snapshot Isolation。C-Store 維護兩個全局的時間戳:低水位(Low Water Mark, LWM)和高水位(High Water Mark, HWM),允許用戶查詢介于二者之間的任意時間戳的 Snapshot。時間戳來自中心化的 Time Authority (TA)。

LWM 對應 RS 即基線數據的版本。Tuple Mover 會保證任何高于 LWM 的修改都不會被移動到 RS 中,因為一旦移動到 RS 也就失去了多版本。

HWM 由中心的 TA 維護,時間被分成固定長度的 epoch。當各個節點確認 epoch e 中開始的寫入事務完成時,就會發送一個 Complete(e) 的消息給 TA,當 TA 收集到所有節點的 Complete(e) 將 HWM 置為 e。換句話說,HWM 以前的事務一定是已經完成提交的。

對于讀寫事務,C-Store 采用了傳統的 2PC。

MonetDB (2012) / VectorWise

MonetDB 是一個面向 OLAP 的內存數據。區別于大多數 DBMS 使用的 Valcano 執行模式,MonetDB 使用一種獨特的 full materialization 的列式(向量)執行模型,也因此設計了對應的一系列算子以及查詢優化器。

BAT Algebra

MonetDB 獨有的列式計算是通過 BAT(Binary Association Table)的運算組成的,BAT 之間通過算子產生新的 BAT,最終生成查詢結果。每個 BAT 可以簡單地理解為一列帶有編號的數據 <oid, value>,有些 BAT 來自用戶的邏輯表,其他則是運算的結果。每個算子被設計地很緊湊、高效,能充分利用 CPU 流水線的計算能力,這和 CPU 設計的 RISC 思想頗為相似,所以被稱為“數據庫查詢的 RISC 方案”。

如上圖,對于用戶一條 SELECT 查詢,MonetDB 先將其分解為多次 BAT 的運算,執行計劃中的每一步的輸入和輸出都是 BAT。圖中藍框中為輸入的 BAT,其他則是執行產生的運算結果。

MonetDB 的設計決定了它的計算過程十分耗費內存。MonetDB 利用操作系統的 Memory Mapped File 進行內存管理,不使用的頁面可以被換出內存,為執行查詢騰出空間。但顯然這并不是一個徹底的解決方案。

VectorWise 使用類似的向量化執行模型,但它嘗試在 full materialization 和 Valcano 模型中間尋求一個平衡——它將整個列劃分成較小的 block,對 block 進行上述的 column algebra 計算。

Apache Kudu (2015)

Kudu 是 Cloudera 研發的處理實時數據的 OLAP 數據庫。上文提到的 Parquet / ORC 是開源界常用的處理靜態數據的方式,為什么說是靜態數據呢?因為這些緊湊的格式對數據修改很不友好,且隨機讀寫性能極差,通常只能用于后臺 OLAP。

所以我們看到,很多數據系統都采用動態、靜態兩套數據,例如:把在線業務數據放在 HBase 中,定期通過 ETL 程序產生Parquet 格式文件放到 HDFS 上,再對其進行統計、歸檔等。這種定期導入的方式不可避免地會帶來小時級的延遲,而且,眾所周知維護 ETL 代碼是一件費時費力的事情。

Kudu 試圖在 OLAP 與 OLTP 之間尋求一個平衡點——在保持同一份數據的情況下,既能提供在線業務實時寫入的能力,又能支持高效的 OLAP 查詢。

Kudu 采用我們熟悉的半關系型模型,允許用戶定義 schema,但是目前并不支持二級索引。

事務方面,Kudu 默認使用 Snapshot Isolation 一致性模型。此外,如果用戶需要一個更強的一致性保證(例如 read own's writes),Kudu 也允許用戶指定特定的時間戳,讀取這個時間戳的 snapshot。這項功能被集成在 Kudu 的 API 層面,用戶可以方便地獲得因果(causality)一致性保證。

系統設計

Kudu 采用了類似 HBase 的 master-slave 架構:中心節點被稱作 Kudu Master,數據節點被稱作 Tablet Server。一個表的數據被分割成多個 tablets,由它們對應的 Tablet Server 來提供數據讀寫服務。

與 HBase 相比,中心節點 Kudu Master 除了存放了 Tablet 的分布信息,還身兼了如下角色:

  • Catalog 管理:同步各個庫、表的 schema 等元信息、負責協調完成建表等 DDL 操作
  • 集群協調者:各個 Tablet Server 向其匯報自己的狀態、replica 變更等

Kudu 底層數據文件并沒有存儲在 HDFS 這樣的分布式文件系統上,而是基于 Raft 算法實現了一套副本同步機制,保障數據不丟失及高可用性。其中 Raft 算法用于同步數據修改操作的 log,這點和大多數 shared-nothing 架構分布式數據庫并無二致。對 Raft 算法有興趣的同學可以參考原論文。

作為列式 OLAP 數據庫,Kudu 的磁盤存儲是常見的列式方案,很多地方直接復用了 Parquet 的代碼。我們知道,緊湊的列式存儲難以實現高效的更新操作。Kudu 為了提供實時寫入功能,采用了類似 C-Store 中的方案——在不可變的基線數據上,疊加后續的更新數據。

具體來說,Tablet 由 RowSet 組成,而 RowSet 既可以是內存中的 MemRowSet,也可以是存儲在磁盤上的 DiskRowSet。一個 RowSet 包含兩部分數據:基礎數據通常以 DiskRowSet 形式保存在磁盤上;而變更數據先以 MemRowSet 的形式暫存在內存中,后續再異步地刷寫到磁盤上。和 C-Store 類似,內存中的數據使用 B 樹存儲。

與 C-Store 不同的是,Delta 數據并不會立即和磁盤上的基線數據進行合并,而是由后臺的 compaction 線程異步完成。值得注意的是,為了保證 compaction 操作不影響過去的 snapshot read,被覆蓋的舊數據也會以 UNDO 記錄的形式保存在另外的文件中。

PowerDrill (2012)

PowerDrill 是 Google 研發用于快速處理 ad-hoc 查詢的 OLAP 數據庫,為前端的 Web 交互式分析軟件提供支持。PowerDrill 的數據放在內存中,為了盡可能節約空間,PowerDrill 引入一種全新的分區的存儲格式,在節省內存占用的同時提供了類似索引的功能,能過濾掉無關的分區、避免全表掃描。

同是 Google 家的產品,和 Dremel 相比,PowerDrill 有以下幾點差異:

  • 定位不同:Dremel 用于查詢“大量的大數據集”(數據集的規模都大,數據集很多),PowerDrill 用于查詢“少量的大數據集”(數據集的規模大,但數據集不多)
  • Dremel 用全表掃描(full scan)處理查詢,而 PowerDrill 對數據做了分區,并能根據查詢只掃描用到的分區。
  • Dremel 使用類似 Protobuf 的嵌套數據模型;PowerDrill 使用關系模型
  • Dremel 的數據直接放在分布式文件系統上,而 PowerDrill 需要一個 load 過程將數據載入內存

數據分區

Ad-hoc 查詢常常包含 GROUP BY 子句,在這些 group key 上進行分區,能很好的過濾掉不需要的數據。PowerDrill 需要 DBA 根據自己對數據的理解,選出用于用于分區的一組屬性 Key1 Key2 Key3 ...(優先級依次遞減)。分區是一個遞歸的過程:一開始把整個數據集視為一個分區(Chunk),如果 Key1 能將數據分開就用 Key1,否則用 Key2、Key3—……直到分區大小小于一個閾值。

以下是一個分區的例子,***次使用 Age 分區、第二次使用 Salary 分區。

數據結構

PowerDrill 的數據組織以列為單位。對于每個列有一個全局字典表,列的每個分區有一個分區字典表:

  • 全局字典表(global dictionary)存儲列中所有 distinct 的字符串,按字典順序排序。字典結構是雙向的,既能將 string 映射到 global-id,也能從 global-id 查 string。
  • 分區字典表(chunk dictionary)存儲一個分區中 chunk-id 到 global-id 的雙向映射。相應地,數據列(elements)存儲 chunk-id 而不是 global-id。

如果要將 chunk 中的一個 element 也就是 chunk-id 還原成數據,***步需要查分區字典表,得到 global-id;第二步查全局字典表,得到原本的字符串數據。以上圖舉例而言:

  1. Chunk 0 存儲的 chunk-id 數據 [3, 2, 0, ...]
  2. 根據分區字典表,查出 global-id:[5, 4, 1, ...]
  3. 根據全局字典表,查出 search string: ['ebay', 'cheap flights', 'amazon', ...]

這樣的兩層映射保證 chunk-id 盡可能的小,所以可以用更緊湊的編碼,比如用 8bit、16bit 整數存儲。這不僅能節省空間,也能加快掃描速度。

此外,相同的數據只會在全局字典表中存一份。而且全局字典表中的字符串數據已經被排序,相比不排序,排序后用 Snappy 等算法的壓縮比更高。

分區索引

上述的數據結構還有一個額外的好處:它能快速算出某個分區是否包含有用的數據,幫助執行器跳過無關的分區。以下面的 SQL 為例(數據參考上一張圖 Figure XXXX):

步驟如下:

  1. 在 search_string 列的全局字典表中查找 "[la redoute", "voyages sncf"],得到 global-id [9, 11]
  2. 在各個分區中查找 global-id [9, 11]: Chunk 0,Chunk 1 中都沒有找到,所以可以直接跳過;而 Chunk 2 中出現了 [11],對應 chunk-id 為 [4]
  3. 在 Chunk 2 中的 elements 掃描查出 chunk-id = 4 的元素數量一共有 3 次,作為 COUNT(*) 的結果返回。

總結

本文介紹了幾個知名的列式存儲系統。與上一篇文章不同,本文的系統大多重新設計了存儲層。與此同時,系統的復雜性也大大提升。

在構建自己的數據系統時,除了存儲方式本身,以下幾個地方是著重需要考慮清楚的地方,上述的幾個系統也給我們提供了很好的參考:

  • 系統需要處理的查詢是怎樣的模式?C-Store 主要服務于企業級 HTAP 場景,Kudu 在提供 OLAP 查詢能力的同時保持了一定的實時寫入能力,PowerDrill 著重處理 ad-hoc 的分析型查詢。
  • 系統如何保證數據的持久性和高可用性?C-Store 在 projection 上保留了一定的冗余,Kudu 用 Raft 協議保持各個副本的數據一致性及可用性,PowerDrill 則直接把數據放在分布式文件系統上,因為不需要對數據作修改。
  • 系統提供怎樣的數據一致性保證?對于只讀的系統來說,這不是個問題。但是一旦支持寫入,數據的一致性、事務隔離性都需要精心的考慮和權衡。Kudu 和 C-Store 的 Snapshot Read 實現可作為參考。
責任編輯:武曉燕 來源: DRDS樂園
相關推薦

2022-11-30 09:18:26

Wi-Fi 7)網絡

2021-07-10 08:29:13

Docker內核Namespace

2013-01-25 13:13:06

激光車載

2009-05-22 14:11:06

JavaOneSunJava 7

2021-07-14 10:33:22

Docker內核Mount Names

2020-04-02 15:50:26

無線頻譜CBRS公民寬帶

2018-05-19 15:04:11

WOT2018OpenStackAR

2018-07-02 09:32:36

OceanBase列式存儲

2012-03-28 13:45:48

傲游英特爾

2009-03-22 21:29:11

多核技術

2010-08-09 09:09:43

Flex技術

2016-06-20 16:10:11

無內核技術Node.js

2024-07-12 08:03:18

2023-08-10 14:02:15

2009-03-02 13:24:38

2021-02-08 08:34:55

存儲列式 OLAP

2010-04-01 09:29:14

2010-06-30 16:52:23

UML數據建模

2010-09-27 15:26:17

JVM for Lin
點贊
收藏

51CTO技術棧公眾號

毛片免费在线观看| 91看片在线播放| 蜜桃在线一区| 姬川优奈aav一区二区| 精品99999| 成人在线免费在线观看| 在线免费观看黄色网址| 国产a精品视频| 日本久久久久久久久| 手机看片国产日韩| 凹凸成人在线| 欧美日本一道本| 妺妺窝人体色777777| 成人动漫在线播放| 大白屁股一区二区视频| 国产精品成人国产乱一区| 91日韩中文字幕| 国产亚洲一区二区三区啪| 日韩一卡二卡三卡四卡| 欧美精品第三页| 伊人福利在线| 中文字幕一区二区三区av| 国产日韩欧美亚洲一区| 中文字幕一区2区3区| 在线视频观看日韩| 久久香蕉频线观| av黄色免费网站| 中文一区二区三区四区| 欧美日韩国产中文| 日本一本二本在线观看| 欧美日韩在线视频免费观看| 中文字幕精品一区二区精品绿巨人| 国产精品日韩一区二区免费视频| 6—12呦国产精品| 久久午夜视频| 欧美激情喷水视频| 国产免费久久久久| 日韩成人影院| 亚洲图片欧美日产| 亚洲乱码国产乱码精品精大量| 精品国产乱码久久久久久樱花| 91久久奴性调教| 国产免费黄视频| www555久久| 一本色道精品久久一区二区三区 | 中文字幕制服丝袜成人av| 好吊色欧美一区二区三区视频 | 亚洲福利视频在线| 又色又爽又黄18网站| 国产成人免费av一区二区午夜| 在线观看视频欧美| 北条麻妃视频在线| 免费成人直播| 日韩欧美在线视频免费观看| 欧美亚洲精品一区二区| 不卡av免费观看| 亚洲最大色网站| 国产又粗又猛又爽又黄的网站| av在线app| 一区二区三区在线不卡| 337p亚洲精品色噜噜狠狠p| 超碰人人在线| 亚洲精品欧美二区三区中文字幕| 日韩美女视频免费在线观看| 日本三级视频在线| 一区二区福利| 日本a级片电影一区二区| 9i精品福利一区二区三区| 久久国产日韩| 国产精品狼人色视频一区| 性色av一区二区三区四区| 免费在线视频一区| 成人两性免费视频| xxxwww在线观看| av不卡一区二区三区| 久久青青草原| 川上优的av在线一区二区| 欧美激情一区不卡| 久久av秘一区二区三区| 久久一卡二卡| 一本色道综合亚洲| 中文字幕22页| 天堂va欧美ⅴa亚洲va一国产| 欧美不卡一区二区| 国产麻豆天美果冻无码视频| 国产一区不卡| 九九久久国产精品| 精品欧美一区二区三区免费观看| 三级精品在线观看| 亚洲最大的成人网| 五月婷婷免费视频| 国产精品色噜噜| 97久久国产亚洲精品超碰热| 免费看男女www网站入口在线| 欧美在线制服丝袜| 久久久久中文字幕亚洲精品| 午夜先锋成人动漫在线| 日韩中文av在线| 国产一级特黄aaa大片| 日本强好片久久久久久aaa| 5g国产欧美日韩视频| 欧美视频综合| 亚洲视频一区二区在线观看| 欧美变态另类刺激| 国产精品视频一区视频二区 | caoporn国产精品免费视频| 亚洲乱码国产乱码精品精98午夜 | 黄色视屏在线免费观看| 欧美日韩免费视频| 亚洲国产精品无码久久久久高潮| 日韩电影免费网站| 性欧美办公室18xxxxhd| 伊人影院中文字幕| 99精品国产91久久久久久| 在线视频不卡国产| 偷拍精品精品一区二区三区| 欧美sm极限捆绑bd| 欧美日韩色视频| 一区二区三区福利| 成人黄视频免费| 男女啪啪在线观看| 欧美中文字幕亚洲一区二区va在线| 日本不卡视频一区| 欧美在线亚洲综合一区| 国产精品嫩草影院一区二区| 水莓100在线视频| 亚洲国产日产av| 中文字幕欧美视频| 99精品在线观看| 国产成人在线一区二区| 天堂av中文在线资源库| 亚洲va欧美va国产va天堂影院| 中文字幕亚洲影院| 久久影院100000精品| 国产成人拍精品视频午夜网站| 少妇精品高潮欲妇又嫩中文字幕 | 欧美丰满熟妇bbbbbb百度| 91麻豆精品国产91久久久久推荐资源| 色99之美女主播在线视频| 欧美三级网站在线观看| 久久久久久久综合狠狠综合| 91九色在线观看视频| 国产+成+人+亚洲欧洲在线| 九九热这里只有在线精品视| 国产手机精品视频| 亚洲丝袜制服诱惑| 福利片一区二区三区| 成人精品中文字幕| 国产精品丝袜白浆摸在线| 国产高清一区在线观看| 在线一区二区观看| 免费黄在线观看| 日本伊人午夜精品| 亚洲高清资源综合久久精品| 欧美日韩女优| 中文字幕日韩在线播放| 伊人久久亚洲综合| 中文字幕欧美一区| 中文字幕55页| 香蕉av一区二区| 91免费版网站在线观看| 日本高清在线观看| 一区二区三区四区视频精品免费 | 日韩亚洲精品在线观看| 欧美日本中文字幕| 色婷婷av一区二区三区之红樱桃 | 国产视频九色蝌蚪| 伊人成综合网伊人222| 国产精品久久久久久亚洲影视| 成黄免费在线| 91精品国产免费久久综合| 免费在线看黄网址| 2020国产精品久久精品美国| 北条麻妃av高潮尖叫在线观看| 日产精品一区二区| 亚洲www在线观看| 国产精品论坛| 国产一区二区三区在线视频| 国产欧美一区二区三区视频在线观看| 一区二区高清免费观看影视大全| 精品影片一区二区入口| 久久黄色影院| 国产精品波多野结衣| 精品三级av| 国产成人精品日本亚洲专区61| 婷婷五月在线视频| 精品国产乱码久久| 一级黄色av片| 亚洲男人的天堂一区二区| 亚洲图片综合网| 久久精品国产色蜜蜜麻豆| 久久久国内精品| 国产剧情在线观看一区| 亚洲影影院av| 中文字幕21页在线看| 色噜噜久久综合伊人一本| 亚洲免费不卡视频| 欧美手机在线视频| 国产精品999久久久| 欧美极品xxx| a级一a一级在线观看| 久久成人精品无人区| 18禁免费无码无遮挡不卡网站| 日韩欧美字幕| 麻豆亚洲一区| 日韩在线观看中文字幕| 国产精品高清网站| 国产中文在线播放| 久久99精品国产99久久6尤物 | 国产亚洲精久久久久久| 亚洲911精品成人18网站| 丝袜亚洲精品中文字幕一区| 中文精品无码中文字幕无码专区| 九色精品国产蝌蚪| 国产伦精品一区二区三毛| 欧美风情在线视频| 国产不卡精品视男人的天堂 | 国产成人在线精品| 看黄在线观看| 欧美激情精品在线| 超碰在线观看免费| 日韩亚洲国产中文字幕| 九九在线视频| 亚洲精品视频网上网址在线观看| 国产精品欧美亚洲| 欧美日韩一区在线| 欧美性猛交xxxx乱大交hd| 亚洲444eee在线观看| 精品爆乳一区二区三区无码av| 欧美国产日本视频| 干b视频在线观看| 91免费看`日韩一区二区| 性猛交╳xxx乱大交| 国产一区二区三区综合| 日本不卡一区在线| 日韩av网站在线观看| 欧美亚洲国产成人| 亚洲欧美日本视频在线观看| 丰满爆乳一区二区三区| 中日韩男男gay无套| 高清欧美精品xxxxx| 欧美破处大片在线视频| 伊人再见免费在线观看高清版| 欧美国产一区二区三区激情无套| 亚洲第一在线综合在线| 狠狠综合久久av一区二区蜜桃| 久久另类ts人妖一区二区| 香蕉久久夜色精品国产更新时间| 黑人巨大精品欧美一区二区小视频| aaa国产精品| 国产精品免费一区二区三区观看| 国产乱人伦丫前精品视频| 国产一区在线免费| 欧美日韩看看2015永久免费 | 国产欧美精品一区二区三区-老狼| 蜜桃成人精品| 国产精品中文字幕在线| 日韩av黄色| 91视频免费进入| 精品少妇3p| 欧美lavv| 欧美日韩在线观看视频小说| 一区二区三区四区欧美| 亚洲自拍偷拍网| www.成年人视频| 一区二区日韩免费看| 国产熟人av一二三区| 美女精品自拍一二三四| 91精产国品一二三产区别沈先生| 国产一区二区三区高清播放| 欧美熟妇精品一区二区| 91美女片黄在线观看91美女| 中字幕一区二区三区乱码| 国产精品国产三级国产普通话三级| 26uuu成人网| 亚洲国产日韩综合久久精品| 久久精品视频1| 欧美日韩五月天| 亚洲精品一区二区三区四区| 日韩电影中文字幕一区| 9191在线观看| 久久久久亚洲精品国产| 成人免费av电影| 1区1区3区4区产品乱码芒果精品| 欧美成人基地| 亚洲国产综合自拍| 国内久久精品| 久久午夜夜伦鲁鲁一区二区| 国产一区二区三区免费看 | 成人午夜激情av| 精品一区二区三区免费| 黄色激情在线观看| 国产精品嫩草影院com| 精品视频在线观看免费| 色噜噜久久综合| 99精品视频免费看| 亚洲精品久久久一区二区三区 | 亚洲欧美一区二区三区极速播放| 九九九国产视频| 欧美日韩视频第一区| 视频一区 中文字幕| 日韩中文字幕av| 欧美男人天堂| 97国产超碰| 欧美国产小视频| 99久久久无码国产精品6| 国产剧情一区二区三区| 一级肉体全黄裸片| 五月婷婷色综合| aa视频在线免费观看| 一区二区亚洲精品国产| 久久男人av资源站| 亚洲一区二区三区四区在线播放| 国产综合久久久| 六月丁香激情网| 成人免费av资源| 国产精品三区在线观看| 欧美在线视频全部完| 亚洲AV成人无码一二三区在线| 欧美老少配视频| 深夜福利亚洲| 亚洲v国产v在线观看| 日韩精品免费一区二区夜夜嗨| 在线国产伦理一区| 免费国产亚洲视频| 国产免费看av| 欧美性极品xxxx做受| 色香蕉在线视频| 久久免费福利视频| 中文字幕一区二区三区四区久久 | 老牛影视免费一区二区| 狠狠入ady亚洲精品| 亚洲精品国产久| 中文字幕永久在线不卡| 凹凸精品一区二区三区| 亚洲精品自拍偷拍| 中国色在线日|韩| 精品1区2区| 国产欧美日韩综合一区在线播放 | 欧美日韩在线二区| 成人性做爰aaa片免费看不忠| 久久久久国产精品麻豆ai换脸| 精品人妻一区二区三区免费看| 日韩精品免费综合视频在线播放| xxxx成人| 免费国产一区| 久久亚洲色图| 精品一区二区三区蜜桃在线| 欧洲一区在线电影| av网站在线免费观看| 国产精品直播网红| 66久久国产| 91精品人妻一区二区三区蜜桃2 | 91视频免费看| 一级成人黄色片| 国产亚洲aⅴaaaaaa毛片| 亚洲不卡系列| 中文精品一区二区三区 | 999精品视频一区二区三区| 欧美~级网站不卡| 亚洲图片欧美另类| 欧美日韩中文在线| 国产黄色在线播放| 91精品久久久久久久久不口人| 一区二区日韩欧美| 91传媒理伦片在线观看| 欧美日韩国产影院| 国产高清在线| 91在线观看免费高清| 尹人成人综合网| 黄色国产在线观看| 欧美午夜在线一二页| h片在线免费观看| 精品国产乱码久久久久久108| 老司机精品久久| 日本福利片在线观看| 亚洲国产精品电影| 全球最大av网站久久| 可以免费看的黄色网址| 成人精品国产免费网站| 少妇高潮av久久久久久| 精品国模在线视频| 精品国内亚洲2022精品成人| www.色偷偷.com| 亚洲综合免费观看高清在线观看| 网站黄在线观看| 国产精品入口尤物| 激情综合自拍| avhd101老司机| 亚洲大尺度美女在线| 99久久精品一区二区成人| 日本高清视频免费在线观看| 久久嫩草精品久久久久| 99久久精品国产成人一区二区| 91精品国产自产91精品| 9999国产精品| 中文字幕5566| 日韩三级视频在线看| 欧美精品高清| 国产黄色片免费在线观看|