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

[淺入淺出]MongoDB和WiredTiger

數(shù)據(jù)庫(kù) SQL Server MongoDB
MongoDB 是目前主流的 NoSQL 數(shù)據(jù)庫(kù)之一,與關(guān)系型數(shù)據(jù)庫(kù)和其它的 NoSQL 不同,MongoDB 使用了面向文檔的數(shù)據(jù)存儲(chǔ)方式,將數(shù)據(jù)以類似 JSON 的方式存儲(chǔ)在磁盤上,因?yàn)轫?xiàng)目上的一些歷史遺留問題,作者在最近的工作中也不得不經(jīng)常與 MongoDB 打交道,這也是這篇文章出現(xiàn)的原因。

MongoDB 是目前主流的 NoSQL 數(shù)據(jù)庫(kù)之一,與關(guān)系型數(shù)據(jù)庫(kù)和其它的 NoSQL 不同,MongoDB 使用了面向文檔的數(shù)據(jù)存儲(chǔ)方式,將數(shù)據(jù)以類似 JSON 的方式存儲(chǔ)在磁盤上,因?yàn)轫?xiàng)目上的一些歷史遺留問題,作者在最近的工作中也不得不經(jīng)常與 MongoDB 打交道,這也是這篇文章出現(xiàn)的原因。

[淺入淺出]MongoDB和WiredTiger

雖然在之前也對(duì) MongoDB 有所了解,但是真正在項(xiàng)目中大規(guī)模使用還是***次,使用過程中也暴露了大量的問題,不過在這里,我們主要對(duì) MongoDB 中的一些重要概念的原理進(jìn)行介紹,也會(huì)與 MySQL 這種傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)做一個(gè)對(duì)比,讓讀者自行判斷它們之間的優(yōu)勢(shì)和劣勢(shì)。

概述

MongoDB 雖然也是數(shù)據(jù)庫(kù),但是它與傳統(tǒng)的 RDBMS 相比有著巨大的不同,很多開發(fā)者都認(rèn)為或者被灌輸了一種思想,MongoDB 這種無 Scheme 的數(shù)據(jù)庫(kù)相比 RDBMS 有著巨大的性能提升,這個(gè)判斷其實(shí)是一種誤解;因?yàn)閿?shù)據(jù)庫(kù)的性能不止與數(shù)據(jù)庫(kù)本身的設(shè)計(jì)有關(guān)系,還與開發(fā)者對(duì)表結(jié)構(gòu)和索引的設(shè)計(jì)、存儲(chǔ)引擎的選擇和業(yè)務(wù)有著巨大的關(guān)系,如果認(rèn)為 僅進(jìn)行了數(shù)據(jù)庫(kù)的替換就能得到數(shù)量級(jí)的性能提升 ,那還是太年輕了。

[[202745]]

架構(gòu)

現(xiàn)有流行的數(shù)據(jù)庫(kù)其實(shí)都有著非常相似的架構(gòu),MongoDB 其實(shí)就與 MySQL 中的架構(gòu)相差不多,底層都使用了『可插拔』的存儲(chǔ)引擎以滿足用戶的不同需要。

[淺入淺出]MongoDB和WiredTiger

用戶可以根據(jù)表中的數(shù)據(jù)特征選擇不同的存儲(chǔ)引擎,它們可以在同一個(gè) MongoDB 的實(shí)例中使用;在***版本的 MongoDB 中使用了 WiredTiger 作為默認(rèn)的存儲(chǔ)引擎,WiredTiger 提供了不同粒度的并發(fā)控制和壓縮機(jī)制,能夠?yàn)椴煌N類的應(yīng)用提供了***的性能和存儲(chǔ)效率。

在不同的存儲(chǔ)引擎上層的就是 MongoDB 的數(shù)據(jù)模型和查詢語(yǔ)言了,與關(guān)系型數(shù)據(jù)庫(kù)不同,由于 MongoDB 對(duì)數(shù)據(jù)的存儲(chǔ)與 RDBMS 有較大的差異,所以它創(chuàng)建了一套不同的查詢語(yǔ)言;雖然 MongoDB 查詢語(yǔ)言非常強(qiáng)大,支持的功能也很多,同時(shí)也是可編程的,不過其中包含的內(nèi)容非常繁雜、API 設(shè)計(jì)也不是非常優(yōu)雅,所以還是需要一些學(xué)習(xí)成本的,對(duì)于長(zhǎng)時(shí)間使用 MySQL 的開發(fā)者肯定會(huì)有些不習(xí)慣。

 

  1. db.collection.updateMany( 
  2.    <filter>, 
  3.    <update>, 
  4.    { 
  5.      upsert: <boolean>, 
  6.      writeConcern: <document>, 
  7.      collation: <document> 
  8.    } 

查詢語(yǔ)言的復(fù)雜是因?yàn)?MongoDB 支持了很多的數(shù)據(jù)類型,同時(shí)每一條數(shù)據(jù)記錄也就是文檔有著非常復(fù)雜的結(jié)構(gòu),這點(diǎn)是從設(shè)計(jì)上就沒有辦法避免的,所以還需要使用 MongoDB 的開發(fā)者花一些時(shí)間去學(xué)習(xí)各種各樣的 API。

RDBMS 與 MongoDB

MongoDB 使用面向文檔的的數(shù)據(jù)模型,導(dǎo)致很多概念都與 RDBMS 有一些差別,雖然從總體上來看兩者都有相對(duì)應(yīng)的概念,不過概念之間細(xì)微的差別其實(shí)也會(huì)影響我們對(duì) MongoDB 的理解:

[淺入淺出]MongoDB和WiredTiger

傳統(tǒng)的 RDBMS 其實(shí)使用 Table 的格式將數(shù)據(jù)邏輯地存儲(chǔ)在一張二維的表中,其中不包括任何復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但是由于 MongoDB 支持嵌入文檔、數(shù)組和哈希等多種復(fù)雜數(shù)據(jù)結(jié)構(gòu)的使用,所以它最終將所有的數(shù)據(jù)以 BSON 的數(shù)據(jù)格式存儲(chǔ)起來。

RDBMS 和 MongoDB 中的概念都有著相互對(duì)應(yīng)的關(guān)系,數(shù)據(jù)庫(kù)、表、行和索引的概念在兩中數(shù)據(jù)庫(kù)中都非常相似,唯獨(dú)***的 JOIN 和 Embedded Document 或者 Reference 有著巨大的差別。這一點(diǎn)差別其實(shí)也影響了在使用 MongoDB 時(shí)對(duì)集合(Collection)Schema 的設(shè)計(jì),如果我們?cè)?MongoDB 中遵循了與 RDBMS 中相同的思想對(duì) Collection 進(jìn)行設(shè)計(jì),那么就不可避免的使用很多的 "JOIN" 語(yǔ)句,而 MongoDB 是不支持 "JOIN" 的,在應(yīng)用內(nèi)做這種查詢的性能非常非常差,在這時(shí)使用嵌入式的文檔其實(shí)就可以解決這種問題了,嵌入式的文檔雖然可能會(huì)造成很多的數(shù)據(jù)冗余導(dǎo)致我們?cè)诟聲r(shí)會(huì)很痛苦,但是查詢時(shí)確實(shí)非常迅速。

 

  1.   _id: <ObjectId1>, 
  2.   name"draveness"
  3.   books: [ 
  4.     { 
  5.       _id: <ObjectId2>, 
  6.       name"MongoDB: The Definitive Guide" 
  7.     }, 
  8.     { 
  9.       _id: <ObjectId3>, 
  10.       name"High Performance MySQL" 
  11.     } 
  12.   ] 

在 MongoDB 的使用時(shí),我們一定要忘記很多 RDBMS 中對(duì)于表設(shè)計(jì)的規(guī)則,同時(shí)想清楚 MongoDB 的優(yōu)勢(shì),仔細(xì)思考如何對(duì)表進(jìn)行設(shè)計(jì)才能利用 MongoDB 提供的諸多特性提升查詢的效率。

數(shù)據(jù)模型

MongoDB 與 RDBMS 之間***的不同,就是數(shù)據(jù)模型的設(shè)計(jì)有著非常明顯的差異,數(shù)據(jù)模型的不同決定了它有著非常不同的特性,存儲(chǔ)在 MongoDB 中的數(shù)據(jù)有著非常靈活的 Schema,我們不需要像 RDBMS 一樣,在插入數(shù)據(jù)之前就決定并且定義表中的數(shù)據(jù)結(jié)構(gòu),MongoDB 的結(jié)合不對(duì) Collection 的數(shù)據(jù)結(jié)構(gòu)進(jìn)行任何限制,但是在實(shí)際使用中,同一個(gè) Collection 中的大多數(shù)文檔都具有類似的結(jié)構(gòu)。

[淺入淺出]MongoDB和WiredTiger

在為 MongoDB 應(yīng)用設(shè)計(jì)數(shù)據(jù)模型時(shí),如何表示數(shù)據(jù)模型之間的關(guān)系其實(shí)是需要開發(fā)者需要仔細(xì)考慮的,MongoDB 為表示文檔之間的關(guān)系提供了兩種不同的方法:引用和嵌入。

標(biāo)準(zhǔn)化數(shù)據(jù)模型

引用(Reference)在 MongoDB 中被稱為標(biāo)準(zhǔn)化的數(shù)據(jù)模型,它與 MySQL 的外鍵非常相似,每一個(gè)文檔都可以通過一個(gè) xx_id 的字段『鏈接』到其他的文檔:

[淺入淺出]MongoDB和WiredTiger

但是 MongoDB 中的這種引用不像 MySQL 中可以直接通過 JOIN 進(jìn)行查找,我們需要使用額外的查詢找到該引用對(duì)應(yīng)的模型,這雖然提供了更多的靈活性,不過由于增加了客戶端和 MongoDB 之間的交互次數(shù)(Round-Trip)也會(huì)導(dǎo)致查詢變慢,甚至非常嚴(yán)重的性能問題。

MongoDB 中的引用并不會(huì)對(duì)引用對(duì)應(yīng)的數(shù)據(jù)模型是否真正存在做出任何的約束,所以如果在應(yīng)用層級(jí)沒有對(duì)文檔之間的關(guān)系有所約束,那么就可能會(huì)出現(xiàn)引用了指向不存在的文檔的問題:

[淺入淺出]MongoDB和WiredTiger

雖然引用有著比較嚴(yán)重的性能問題并且在數(shù)據(jù)庫(kù)層面沒有對(duì)模型是否被刪除加上限制,不過它提供的一些特點(diǎn)是嵌入式的文檔無法給予了,當(dāng)我們需要表示多對(duì)多關(guān)系或者更加龐大的數(shù)據(jù)集時(shí),就可以考慮使用標(biāo)準(zhǔn)化的數(shù)據(jù)模型 — 引用了。

嵌入式數(shù)據(jù)模型

除了與 MySQL 中非常相似的引用,MongoDB 由于其獨(dú)特的數(shù)據(jù)存儲(chǔ)方式,還提供了嵌入式的數(shù)據(jù)模型,嵌入式的數(shù)據(jù)模型也被認(rèn)為是不標(biāo)準(zhǔn)的數(shù)據(jù)模型:

[淺入淺出]MongoDB和WiredTiger

因?yàn)?MongoDB 使用 BSON 的數(shù)據(jù)格式對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),而嵌入式數(shù)據(jù)模型中的子文檔其實(shí)就是父文檔中的另一個(gè)值,只是其中存儲(chǔ)的是一個(gè)對(duì)象:

 

  1.   _id: <ObjectId1>, 
  2.   username: "draveness"
  3.   age: 20, 
  4.   contact: [ 
  5.     { 
  6.       _id: <ObjectId2>, 
  7.       email: "i@draveness.me" 
  8.     } 
  9.   ] 

嵌入式的數(shù)據(jù)模型允許我們將有相同的關(guān)系的信息存儲(chǔ)在同一個(gè)數(shù)據(jù)記錄中,這樣應(yīng)用就可以更快地對(duì)相關(guān)的數(shù)據(jù)進(jìn)行查詢和更新了;當(dāng)我們的數(shù)據(jù)模型中有『包含』這樣的關(guān)系或者模型經(jīng)常需要與其他模型一起出現(xiàn)(查詢)時(shí),比如文章和評(píng)論,那么就可以考慮使用嵌入式的關(guān)系對(duì)數(shù)據(jù)模型進(jìn)行設(shè)計(jì)。

總而言之,嵌入的使用讓我們?cè)诟俚恼?qǐng)求中獲得更多的相關(guān)數(shù)據(jù),能夠?yàn)樽x操作提供更高的性能,也為在同一個(gè)寫請(qǐng)求中同時(shí)更新相關(guān)數(shù)據(jù)提供了支持。

MongoDB 底層的 WiredTiger 存儲(chǔ)引擎能夠保證對(duì)于同一個(gè)文檔的操作都是原子的,任意一個(gè)寫操作都不能原子性地影響多個(gè)文檔或者多個(gè)集合。

主鍵和索引

在這一節(jié)中,我們將主要介紹 MongoDB 中不同類型的索引,當(dāng)然也包括每個(gè)文檔中非常重要的字段 _id ,可以 理解 為 MongoDB 的『主鍵』,除此之外還會(huì)介紹單字段索引、復(fù)合索引以及多鍵索引等類型的索引。

MongoDB 中索引的概念其實(shí)與 MySQL 中的索引相差不多,無論是底層的數(shù)據(jù)結(jié)構(gòu)還是基本的索引類型都幾乎完全相同,兩者之間的區(qū)別就在于因?yàn)? MongoDB 支持了不同類型的數(shù)據(jù)結(jié)構(gòu),所以也理所應(yīng)當(dāng)?shù)靥峁┝烁嗟乃饕N類。

[淺入淺出]MongoDB和WiredTiger

默認(rèn)索引

MySQL 中的每一個(gè)數(shù)據(jù)行都具有一個(gè)主鍵,數(shù)據(jù)庫(kù)中的數(shù)據(jù)都是按照以主鍵作為鍵物理地存儲(chǔ)在文件中的;除了用于數(shù)據(jù)的存儲(chǔ),主鍵由于其特性也能夠加速數(shù)據(jù)庫(kù)的查詢語(yǔ)句。

而 MongoDB 中所有的文檔也都有一個(gè)唯一的 _id 字段,在默認(rèn)情況下所有的文檔都使用一個(gè)長(zhǎng) 12 字節(jié)的 ObjectId 作為默認(rèn)索引:

[淺入淺出]MongoDB和WiredTiger

前四位代表當(dāng)前 _id 生成時(shí)的 Unix 時(shí)間戳,在這之后是三位的機(jī)器標(biāo)識(shí)符和兩位的處理器標(biāo)識(shí)符,***是一個(gè)三位的計(jì)數(shù)器,初始值就是一個(gè)隨機(jī)數(shù);通過這種方式代替遞增的 id 能夠解決分布式的 MongoDB 生成唯一標(biāo)識(shí)符的問題,同時(shí)可以在一定程度上保證 id 的的增長(zhǎng)是遞增的。

單字段索引(Single Field)

除了 MongoDB 提供的默認(rèn) _id 字段之外,我們還可以建立其它的單鍵索引,而且其中不止支持順序的索引,還支持對(duì)索引倒排:

  1. db.users.createIndex( { age: -1 } ) 

MySQL8.0 之前的索引都只能是正序排列的,在 8.0 之后才引入了逆序的索引,單一字段索引可以說是 MySQL 中的輔助(Secondary)索引的一個(gè)子集,它只是對(duì)除了 _id 外的任意單一字段建立起正序或者逆序的索引樹。

[淺入淺出]MongoDB和WiredTiger

復(fù)合索引(Compound)

除了單一字段索引這種非常簡(jiǎn)單的索引類型之外,MongoDB 還支持多個(gè)不同字段組成的復(fù)合索引(Compound Index),由于 MongoDB 中支持對(duì)同一字段的正逆序排列,所以相比于 MySQL 中的輔助索引就會(huì)出現(xiàn)更多的情況:

 

  1. db.users.createIndex( { username: 1, age: -1 } )  
  2. db.users.createIndex( { username: 1, age: 1 } ) 

上面的兩個(gè)索引是完全不同的,在磁盤上的 B+ 樹其實(shí)也按照了完全不同的順序進(jìn)行存儲(chǔ),雖然 username 字段都是升序排列的,但是對(duì)于 age 來說,兩個(gè)索引的處理是完全相反的:

[淺入淺出]MongoDB和WiredTiger

這也就造成了在使用查詢語(yǔ)句對(duì)集合中數(shù)據(jù)進(jìn)行查找時(shí),如果約定了正逆序,那么其實(shí)是會(huì)使用不同的索引的,所以在索引創(chuàng)建時(shí)一定要考慮好使用的場(chǎng)景,避免創(chuàng)建無用的索引。

多鍵索引(Multikey)

由于 MongoDB 支持了類似數(shù)組的數(shù)據(jù)結(jié)構(gòu),所以也提供了名為多鍵索引的功能,可以將數(shù)組中的每一個(gè)元素進(jìn)行索引,索引的創(chuàng)建其實(shí)與單字段索引沒有太多的區(qū)別:

  1. db.collection.createIndex( { address: 1 } ) 

如果一個(gè)字段是值是數(shù)組,那么在使用上述代碼時(shí)會(huì)自動(dòng)為這個(gè)字段創(chuàng)建一個(gè)多鍵索引,能夠加速對(duì)數(shù)組中元素的查找。

文本索引(Text)

文本索引是 MongoDB 為我們提供的另一個(gè)比較實(shí)用的功能,不過在這里也只是對(duì)這種類型的索引提一下,也不打算深入去談?wù)勥@東西的性能如何,如果真的要做全文索引的話,還是推薦使用 Elasticsearch 這種更專業(yè)的東西來做,而不是使用 MongoDB 提供的這項(xiàng)功能。

存儲(chǔ)

如何存儲(chǔ)數(shù)據(jù)就是一個(gè)比較重要的問題,在前面我們已經(jīng)提到了 MongoDB 與 MySQL 一樣都提供了插件化的存儲(chǔ)引擎支持,作為 MongoDB 的主要組件之一,存儲(chǔ)引擎全權(quán)負(fù)責(zé)了 MongoDB 對(duì)數(shù)據(jù)的管理。

[淺入淺出]MongoDB和WiredTiger

WiredTiger

MongoDB3.2 之后 WiredTiger 就是默認(rèn)的存儲(chǔ)引擎了,如果對(duì)各個(gè)存儲(chǔ)引擎并不了解,那么還是不要改變 MongoDB 的默認(rèn)存儲(chǔ)引擎;它有著非常多的優(yōu)點(diǎn),比如擁有效率非常高的緩存機(jī)制:

[淺入淺出]MongoDB和WiredTiger

WiredTiger 還支持在內(nèi)存中和磁盤上對(duì)索引進(jìn)行壓縮,在壓縮時(shí)也使用了前綴壓縮的方式以減少 RAM 的使用,在后面的文章中我們會(huì)詳細(xì)介紹和分析 WiredTiger 存儲(chǔ)引擎是如何對(duì)各種數(shù)據(jù)進(jìn)行存儲(chǔ)的。

Journaling

為了在數(shù)據(jù)庫(kù)宕機(jī)保證 MongoDB 中數(shù)據(jù)的持久性,MongoDB 使用了 Write Ahead Logging 向磁盤上的 journal 文件預(yù)先進(jìn)行寫入;除了 journal 日志,MongoDB 還使用檢查點(diǎn)(Checkpoint)來保證數(shù)據(jù)的一致性,當(dāng)數(shù)據(jù)庫(kù)發(fā)生宕機(jī)時(shí),我們就需要 Checkpoint 和 journal 文件協(xié)作完成數(shù)據(jù)的恢復(fù)工作:

  • 在數(shù)據(jù)文件中查找上一個(gè)檢查點(diǎn)的標(biāo)識(shí)符;
  • 在 journal 文件中查找標(biāo)識(shí)符對(duì)應(yīng)的記錄;
  • 重做對(duì)應(yīng)記錄之后的全部操作;

MongoDB 會(huì)每隔 60s 或者在 journal 數(shù)據(jù)的寫入達(dá)到 2GB 時(shí)設(shè)置一次檢查點(diǎn),當(dāng)然我們也可以通過在寫入時(shí)傳入 j: true 的參數(shù)強(qiáng)制 journal 文件的同步。

[淺入淺出]MongoDB和WiredTiger

這篇文章并不會(huì)介紹 Journal 文件的格式以及相關(guān)的內(nèi)容,作者可能會(huì)在之后介紹分析 WiredTiger 的文章中簡(jiǎn)單分析其存儲(chǔ)格式以及一些其它特性。

總結(jié)

這篇文章中只是對(duì) MongoDB 的一些基本特性以及數(shù)據(jù)模型做了簡(jiǎn)單的介紹,雖然『***』擴(kuò)展是 MongoDB 非常重要的特性,但是由于篇幅所限,我們并沒有介紹任何跟 MongoDB 集群相關(guān)的信息,不過會(huì)在之后的文章中專門介紹多實(shí)例的 MongoDB 是如何協(xié)同工作的。

在這里,我想說的是,如果各位讀者接收到了類似 MongoDB 比 MySQL 性能好很多的斷言,但是在使用 MongoDB 的過程中仍然遵循以往 RDBMS 對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)方式,那么我相信性能在最終也不會(huì)有太大的提升,反而可能會(huì)不升反降;只有真正理解 MongoDB 的數(shù)據(jù)模型,并且根據(jù)業(yè)務(wù)的需要進(jìn)行設(shè)計(jì)才能很好地利用類似嵌入式文檔等特性并提升 MongoDB 的性能。

責(zé)任編輯:未麗燕 來源: DeltaX
相關(guān)推薦

2021-02-07 08:02:33

Linux內(nèi)核開源

2011-04-22 10:23:50

Server Push

2021-05-17 09:58:00

MySQL索引數(shù)據(jù)庫(kù)

2022-01-06 07:59:32

WebGPUOpenGL引擎

2020-03-06 10:16:55

Spring數(shù)據(jù)庫(kù)框架

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2021-06-21 08:58:14

MySQL數(shù)據(jù)庫(kù)Pages

2021-08-11 07:54:47

Commonjs

2021-07-20 15:20:02

FlatBuffers阿里云Java

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2012-05-21 10:06:26

FrameworkCocoa

2022-09-26 09:01:15

語(yǔ)言數(shù)據(jù)JavaScript

2013-09-16 09:56:29

TCP協(xié)議網(wǎng)絡(luò)協(xié)議send

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2009-11-30 16:46:29

學(xué)習(xí)Linux

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計(jì)算云系統(tǒng)

2021-04-27 08:54:43

ConcurrentH數(shù)據(jù)結(jié)構(gòu)JDK8

2022-11-09 08:06:15

GreatSQLMGR模式
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美三级网色| 久久精品国产91精品亚洲| 久久国产亚洲精品无码| 国产在线黄色| 久久er99热精品一区二区| 大量国产精品视频| 国产精品一区二区入口九绯色| 久久久人成影片一区二区三区在哪下载| 国产精品妹子av| 国产精品一区二区三区免费观看| 亚洲精品无码久久久久| 中文精品久久| 亚洲午夜精品久久久久久性色| 亚洲免费成人在线视频| 在线看片福利| 一区二区三区欧美| 日韩国产在线一区| 色婷婷在线视频| 久久国产免费看| 午夜精品久久久久久久久久久久| 午夜黄色福利视频| 老司机在线精品视频| 欧美日韩成人在线一区| 免费无码国产v片在线观看| 欧美成人精品一区二区男人看| 99精品久久99久久久久| 成人国产精品免费视频| 高清乱码免费看污| 亚洲激情二区| 久久亚洲精品一区二区| 亚洲综合色一区| 高清精品xnxxcom| 欧美一级二级三级乱码| 爱情岛论坛亚洲首页入口章节| 2018av在线| 亚洲免费观看高清完整版在线| 日韩国产伦理| 九色在线观看| 91麻豆精品视频| 国产伦精品一区二区三区免| 99热这里只有精品在线| 看电视剧不卡顿的网站| 国产成人精品视频在线| 可以免费在线观看的av| 99热在线精品观看| 国内揄拍国内精品| 国产网址在线观看| 欧美日韩国产在线一区| 另类视频在线观看| 国产精品久久久久久久精| 国产精品福利在线观看播放| 最近2019免费中文字幕视频三| 丰满的亚洲女人毛茸茸| 国内精品久久久久久久影视简单| 国产婷婷色综合av蜜臀av| 国产高清成人久久| 欧美一区 二区| 日韩精品在线免费观看视频| 成人精品在线观看视频| 九色精品国产蝌蚪| 亚洲免费视频一区二区| 级毛片内射视频| 精品久久精品| 正在播放欧美一区| www.xx日本| 亚洲一区二区| 日韩综合视频在线观看| 黄色录像一级片| 你懂的亚洲视频| 久久久久久中文字幕| 日产亚洲一区二区三区| 免费中文字幕日韩欧美| 国产精品18久久久久久首页狼| 综合久久中文字幕| 国产乱子伦一区二区三区国色天香| 92看片淫黄大片看国产片| 91精品国产乱码久久| 国产成a人无v码亚洲福利| 国内外成人免费视频| 欧美色综合一区二区三区| 国产女人18毛片水真多成人如厕 | 欧美精品少妇videofree| 国产成人av免费在线观看| 亚洲天堂偷拍| 欧美一级电影在线| 一道本在线视频| 豆国产96在线|亚洲| 久久综合婷婷综合| 午夜在线视频播放| 精品高清美女精品国产区| 午夜免费高清视频| 秋霞一区二区| 国产午夜精品视频| 欧美黄色免费看| 巨乳诱惑日韩免费av| 成人欧美一区二区三区在线| 欧美一区二区黄片| 亚洲国产精品成人久久综合一区 | 亚洲全部视频| 国产精品成人一区二区三区吃奶| av片免费播放| 久久久噜噜噜久久中文字幕色伊伊| 一本久道久久综合狠狠爱亚洲精品| 亚洲区欧洲区| 欧美日韩一区二区三区高清| 熟妇高潮一区二区| 国产精品毛片一区二区在线看| 97精品国产97久久久久久免费| 日本妇乱大交xxxxx| 国产91丝袜在线18| 亚洲欧美日韩在线综合| 成人黄色动漫| 欧美一区二区二区| 国产亚洲欧美一区二区| 国产裸舞福利在线视频合集| 一区二区免费在线| 亚洲综合日韩欧美| 偷拍精品福利视频导航| 美女福利精品视频| 少妇一级淫片日本| aaa国产一区| 97在线免费视频观看| 国产精品久久久久77777丨| 亚洲成人av在线| 日本精品人妻无码77777| 石原莉奈在线亚洲三区| 精品在线不卡| 岛国在线视频网站| 日韩欧美专区在线| 午夜国产福利视频| 日韩电影免费一区| 欧美精品免费观看二区| 91超碰在线播放| 日韩一级高清毛片| 91杏吧porn蝌蚪| 乱一区二区av| 亚洲国产精品久久久久婷婷老年 | 成人有码在线播放| 91成人高清| 欧美图区在线视频| 丰满的亚洲女人毛茸茸| 日韩不卡一区二区| 日韩久久不卡| 992tv国产精品成人影院| 精品在线小视频| 欧美日韩乱国产| 99久久精品免费看| 国产精品又粗又长| 久久资源综合| 538国产精品视频一区二区| 色哟哟国产精品色哟哟| 亚洲sss视频在线视频| 成人做爰www看视频软件| 国内精品99| 国产精品乱码| 欧美一级鲁丝片| 亚洲欧美日韩国产中文专区| 亚洲va在线观看| 国产人伦精品一区二区| 91看片在线免费观看| 日韩国产综合| 51成人做爰www免费看网站| 国产精品扒开做爽爽爽的视频| 欧美日韩国产高清一区二区三区 | 99精品国产高清在线观看| 免费影视亚洲| 日韩精品久久久久久久玫瑰园| 久久久久久久久久免费视频 | 久久99国内精品| 中文字幕日韩一区二区三区不卡| 国产精品美女久久久久| 欧美日本黄视频| 神马久久精品| 国产精品免费网站在线观看| 乌克兰美女av| 欧美精品网站| 久久精品magnetxturnbtih| 黑人巨大精品| 久久精品中文字幕电影| 亚洲乱码精品久久久久..| 欧美日韩国产一区中文午夜| 免费视频91蜜桃| 国产伦精品一区二区三区视频青涩| cao在线观看| 狠狠做深爱婷婷综合一区| 91亚洲国产精品| 日本三级一区| xxxxx成人.com| 日韩性xxxx| 欧美日韩在线电影| 国产在线视频99| 欧美高清一级片在线观看| 佐佐木明希电影| 日日噜噜夜夜狠狠视频欧美人| 懂色av粉嫩av蜜臀av| 天堂av一区二区三区在线播放| 国产在线a不卡| 美女高潮在线观看| 欧美成人免费网| 国产日韩精品在线看| 欧美tickling挠脚心丨vk| 亚洲图片欧美日韩| 亚洲午夜在线电影| 二区三区四区视频| www一区二区| 亚洲丝袜在线观看| 日韩精品高清不卡| 人妻熟妇乱又伦精品视频| 99久久久久| 日韩激情视频| 欧美sss在线视频| 69堂成人精品视频免费| 日韩毛片一区| 欧美性高清videossexo| 色悠悠久久88| 九一国产在线观看| 中文字幕综合网| 伊人网在线视频观看| 国产成人亚洲综合a∨婷婷| 不卡av免费在线| 亚洲区一区二| 欧美一区二区激情| 亚洲国产精品久久久久蝴蝶传媒| 日韩精品一区二区三区四区五区| 国内自拍欧美| 国产精品一区二区三区在线 | 亚洲已满18点击进入在线看片| 色综合一本到久久亚洲91| 97激碰免费视频| 福利网站在线观看| 久久91亚洲精品中文字幕奶水| 在线观看完整版免费| 亚洲情综合五月天| 偷拍自拍在线| 日韩av在线网| 天堂网av2014| 日韩精品极品毛片系列视频| 日本激情一区二区| 精品欧美一区二区久久| 亚洲国产剧情在线观看| 欧美一区二区免费| 国产欧美久久久精品免费| 欧美日韩成人激情| 亚洲天堂自拍偷拍| 91麻豆精品国产91| 国产精品无码久久av| 91精品国产综合久久福利 | 精品一区二区三区在线视频| 青青青国产在线视频| 日韩国产精品久久久久久亚洲| 欧美韩国日本在线| 久久精品卡一| 免费看黄色一级大片| 日本中文字幕不卡| 杨幂毛片午夜性生毛片| 美腿丝袜在线亚洲一区| 日本免费色视频| 韩国成人福利片在线播放| 日韩不卡的av| 成人毛片老司机大片| 好吊一区二区三区视频| 久久影院视频免费| 波多野结衣av在线观看| 国产精品久久久久影院亚瑟| 91视频最新网址| 亚洲免费毛片网站| 国产一级淫片a| 色天天综合久久久久综合片| 最新中文字幕免费| 欧美一区二区观看视频| 免费观看国产视频| 亚洲人成在线电影| 乱人伦中文视频在线| 欧美高清在线视频观看不卡| 51精品在线| 国产精品第1页| 成人国产精品久久| 韩国一区二区三区美女美女秀| 婷婷五月色综合香五月| 一本一本a久久| 亚洲东热激情| 91国产精品视频在线观看| 国精品**一区二区三区在线蜜桃| www.四虎在线| 99精品久久免费看蜜臀剧情介绍 | 一区二区三区四区蜜桃| 欧美一级特黄视频| 欧美美女激情18p| 五月婷婷六月丁香综合| 日韩在线观看网站| xxxx成人| 国产日韩av高清| 视频小说一区二区| 女女同性女同一区二区三区按摩| 日韩天天综合| 欧美成人手机在线视频| 本田岬高潮一区二区三区| 免费成人深夜天涯网站| 亚洲成在线观看| 亚洲最大成人av| 精品视频中文字幕| 曰本三级在线| 国产精品网红直播| 欧美偷窥清纯综合图区| 欧美少妇一区二区三区| 日韩av午夜在线观看| 手机免费看av片| 亚洲三级在线免费观看| 免费又黄又爽又猛大片午夜| 欧美变态口味重另类| √天堂资源地址在线官网| 78色国产精品| 香蕉大人久久国产成人av| 四虎一区二区| 性久久久久久| 中文字幕天堂av| 一区二区三区在线看| 91亚洲国产成人精品一区| 亚洲欧美一区二区三区在线| 欧美草逼视频| 91在线视频一区| 日韩理论电影| 手机看片福利盒子久久| 91丨porny丨蝌蚪视频| 久久久国产精品黄毛片| 欧美裸体一区二区三区| 成人影院免费观看| 日韩av手机在线| 婷婷成人综合| 无码aⅴ精品一区二区三区浪潮| 成人高清视频免费观看| 久久精品99国产精| 日韩视频在线一区二区| 看女生喷水的网站在线观看| 国产精品美女在线| 精品久久美女| 天天操天天爱天天爽| 久久久91精品国产一区二区精品 | 强制高潮抽搐sm调教高h| 色老头久久综合| 国产永久免费高清在线观看视频| 2019最新中文字幕| 亚洲v天堂v手机在线| 日本一区二区黄色| 91色综合久久久久婷婷| 日韩手机在线视频| 国产一区二区三区在线视频 | 91麻豆精品国产91| 2024最新电影免费在线观看| 91精品美女在线| 亚洲成av人片乱码色午夜| 中文字幕avav| 一区二区三区不卡视频在线观看| 国产综合无码一区二区色蜜蜜| 久久久久久中文字幕| 秋霞蜜臀av久久电影网免费| 18禁免费无码无遮挡不卡网站| 91免费观看视频| 男操女视频网站| 成人444kkkk在线观看| 日本在线视频一区二区三区| 免费看日本黄色| av亚洲精华国产精华精华| 黄色一级视频免费看| 国产亚洲一区精品| 国产情侣一区在线| 国产av熟女一区二区三区| 99精品偷自拍| 国产精品无码一区| 欧美精品在线免费| 红杏成人性视频免费看| 日本精品久久久久中文字幕| 中文字幕av不卡| 精品国产va久久久久久久| 性欧美xxxx| 日韩av有码| 成人啪啪18免费游戏链接| 欧美日韩在线视频观看| 91在线高清| av资源一区二区| 亚洲欧美日韩国产一区| 一本一本久久a久久| 欧美精品一区二区高清在线观看| 成人美女视频| 中文字幕人成一区| 2022国产精品视频| 97精品久久人人爽人人爽| 97在线看福利| 日韩大片在线| 亚洲精品在线视频免费观看| 欧美午夜影院一区| 91白丝在线| 日本一区二区免费高清视频| av欧美精品.com| 国产精品久久久久久免费| 69av成年福利视频| 欧美激情日韩| 91狠狠综合久久久久久| 亚洲精品不卡在线| 国产精品亚洲欧美一级在线|