999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

異構(gòu)數(shù)據(jù)庫(kù)更新同步研究與實(shí)現(xiàn)

2019-12-04 01:47:08肖剛
軟件導(dǎo)刊 2019年10期

肖剛

摘要:數(shù)據(jù)庫(kù)同步是實(shí)現(xiàn)不同系統(tǒng)之間數(shù)據(jù)共享的有效方法?,F(xiàn)有異構(gòu)數(shù)據(jù)庫(kù)同步模型能有效解決記錄的同步新增,但由于同步記錄查詢基于數(shù)據(jù)表名和關(guān)鍵字值,若不考慮同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)變化,將導(dǎo)致數(shù)據(jù)庫(kù)不適用于某些遺留系統(tǒng)。針對(duì)該問(wèn)題,提出同步控制和主從記錄映射方法,在同步控制層記錄主從記錄映射關(guān)系。在采用雙向中間件方法的同步技術(shù)基礎(chǔ)上,設(shè)計(jì)基于標(biāo)準(zhǔn)數(shù)據(jù)格式的數(shù)據(jù)轉(zhuǎn)換,降低數(shù)據(jù)轉(zhuǎn)換模塊開(kāi)發(fā)維護(hù)成本,并根據(jù)模型應(yīng)用WCF框架實(shí)現(xiàn)系統(tǒng)。實(shí)踐應(yīng)用表明,該模型可實(shí)現(xiàn)異構(gòu)數(shù)庫(kù)之間同步更新。

關(guān)鍵詞:異構(gòu)數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)同步;主從記錄映射;標(biāo)準(zhǔn)數(shù)據(jù)格式

DOI:10.11907/ejdk.182416開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

中圖分類(lèi)號(hào):TP392文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2019)010-0182-04

0引言

信息化建設(shè)具有階段性和分布性的特點(diǎn),由于缺乏統(tǒng)一的總體建設(shè)規(guī)劃及技術(shù)水平有限等原因,企業(yè)內(nèi)部各應(yīng)用系統(tǒng)相互獨(dú)立、結(jié)構(gòu)各異,采用不同的數(shù)據(jù)庫(kù)環(huán)境,缺乏統(tǒng)一的數(shù)據(jù)模型,系統(tǒng)之間數(shù)據(jù)共享困難。異構(gòu)數(shù)據(jù)庫(kù)同步是實(shí)現(xiàn)應(yīng)用系統(tǒng)數(shù)據(jù)共享的一種常見(jiàn)方法,尤其是對(duì)于遺留或無(wú)法獲取源碼的系統(tǒng),在明確數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)上,即可在不修改原有系統(tǒng)代碼和數(shù)據(jù)庫(kù)結(jié)構(gòu)的情況下實(shí)現(xiàn)數(shù)據(jù)共享。

為解決異構(gòu)數(shù)據(jù)庫(kù)同步問(wèn)題,目前主要方法有以下3種:

(1)使用數(shù)據(jù)庫(kù)廠商提供的同步功能。該方法簡(jiǎn)單易用、可靠性高,但不同數(shù)據(jù)庫(kù)系統(tǒng)之間的同步無(wú)法完全實(shí)現(xiàn)。

(2)基于數(shù)據(jù)復(fù)制合并技術(shù)的同步方案。通過(guò)在主從數(shù)據(jù)庫(kù)之間的雙向數(shù)據(jù)交換,定期將修改的數(shù)據(jù)進(jìn)行合并,該方法能有效實(shí)現(xiàn)主從數(shù)據(jù)的雙向交換,但需要修改主數(shù)據(jù)庫(kù)的表結(jié)構(gòu),增加數(shù)據(jù)表記錄的操作時(shí)間戳數(shù)據(jù)字段,以解決數(shù)據(jù)沖突。

(3)基于日志技術(shù)的同步方案,把對(duì)數(shù)據(jù)更新操作的更新信息保存下來(lái),然后傳輸、轉(zhuǎn)換、重放實(shí)現(xiàn)數(shù)據(jù)同步,但該方案數(shù)據(jù)安全存在問(wèn)題。

這些模型能有效實(shí)現(xiàn)新增操作記錄同步,對(duì)于記錄更新操作(修改、刪除)、同步記錄的查詢是通過(guò)匹配在同步節(jié)點(diǎn)數(shù)據(jù)表記錄的主關(guān)鍵字ID,并且根據(jù)當(dāng)前同步配置確定同步發(fā)送的節(jié)點(diǎn)信息實(shí)現(xiàn)的,但該方法不適用于主關(guān)鍵字段復(fù)雜、節(jié)點(diǎn)發(fā)送動(dòng)態(tài)變化的情況。

本文設(shè)計(jì)同步控制和主從記錄映射機(jī)制,通過(guò)保存主記錄的同步發(fā)送節(jié)點(diǎn)信息和主從記錄同步映射關(guān)系,解決同步更新中的問(wèn)題。數(shù)據(jù)同步技術(shù)采用雙向中間件方法,在每?jī)蓚€(gè)異構(gòu)數(shù)據(jù)庫(kù)間建立一個(gè)中間件,該方法傳輸效率高,但開(kāi)發(fā)成本高、難于維護(hù)、擴(kuò)展性差。通過(guò)設(shè)計(jì)標(biāo)準(zhǔn)數(shù)據(jù)格式,異構(gòu)數(shù)據(jù)庫(kù)基于標(biāo)準(zhǔn)數(shù)據(jù)格式進(jìn)行數(shù)據(jù)轉(zhuǎn)換,可降低開(kāi)發(fā)維護(hù)成本、提高擴(kuò)展性。

1異構(gòu)數(shù)據(jù)庫(kù)同步

異構(gòu)數(shù)據(jù)庫(kù)指相關(guān)多個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的集合,異構(gòu)性包括操作系統(tǒng)異構(gòu)、數(shù)據(jù)庫(kù)管理系統(tǒng)異構(gòu)、數(shù)據(jù)庫(kù)表結(jié)構(gòu)異構(gòu)。

數(shù)據(jù)庫(kù)同步指不同數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)交換,使一個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù)記錄改變以同樣方式出現(xiàn)在另一個(gè)數(shù)據(jù)庫(kù)中。按信息同步方向可分為單向和雙向同步。單向同步也叫主從同步,其中一個(gè)數(shù)據(jù)庫(kù)是主數(shù)據(jù)庫(kù),另一個(gè)數(shù)據(jù)庫(kù)是從數(shù)據(jù)庫(kù),只有主數(shù)據(jù)庫(kù)的改變可以被復(fù)制到從數(shù)據(jù)庫(kù);雙向同步指數(shù)據(jù)庫(kù)沒(méi)有主從之分,任何一個(gè)數(shù)據(jù)庫(kù)的變化均會(huì)復(fù)制到另一個(gè)數(shù)據(jù)庫(kù)中。按傳輸模式可分為同步和異步傳輸模式,同步數(shù)據(jù)同步(實(shí)時(shí)數(shù)據(jù)同步)指實(shí)時(shí)更新數(shù)據(jù)的同步模式,異步數(shù)據(jù)同步(批量數(shù)據(jù)同步)是一種延遲數(shù)據(jù)更新的模式,數(shù)據(jù)庫(kù)間會(huì)臨時(shí)出現(xiàn)數(shù)據(jù)不一致,但最終會(huì)保持?jǐn)?shù)據(jù)一致。

2同步模型

本文討論的異構(gòu)數(shù)據(jù)庫(kù)同步限定為單向同步傳輸數(shù)據(jù)同步,同步數(shù)據(jù)單元限定為單個(gè)數(shù)據(jù)表記錄,主數(shù)據(jù)庫(kù)與從數(shù)據(jù)庫(kù)是一對(duì)多的關(guān)系,即一個(gè)主數(shù)據(jù)庫(kù)可將一個(gè)數(shù)據(jù)記錄同步到多個(gè)從數(shù)據(jù)庫(kù)。約定數(shù)據(jù)庫(kù)節(jié)點(diǎn)指網(wǎng)絡(luò)節(jié)點(diǎn)中的數(shù)據(jù)庫(kù)存儲(chǔ),包括節(jié)點(diǎn)IP地址和數(shù)據(jù)庫(kù)名,主、從記錄分別指同步數(shù)據(jù)在主、從數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)表記錄。

2.1現(xiàn)有模型同步更新存在的問(wèn)題

主數(shù)據(jù)庫(kù)記錄發(fā)生更新操作時(shí),同步更新操作需要確定:①哪些同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)要進(jìn)行更新?②同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)中哪個(gè)記錄要進(jìn)行更新?現(xiàn)有同步模型在這兩個(gè)問(wèn)題的處理上存在問(wèn)題。

2.1.1同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)動(dòng)態(tài)變化

現(xiàn)有模型沒(méi)有考慮同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)變化,同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)相對(duì)固定,但仍有可能發(fā)生變化,如果在數(shù)據(jù)更新前同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)發(fā)生變化,則同步更新失敗。具體原因?yàn)椋孩僭黾恿送綌?shù)據(jù)庫(kù)節(jié)點(diǎn),由于新增數(shù)據(jù)庫(kù)節(jié)點(diǎn)沒(méi)有對(duì)應(yīng)記錄,更新操作將導(dǎo)致數(shù)據(jù)庫(kù)操作異常;②刪除同步數(shù)據(jù)庫(kù)節(jié)點(diǎn),數(shù)據(jù)更新操作將不能同步到被刪除的數(shù)據(jù)庫(kù)節(jié)點(diǎn)中,節(jié)點(diǎn)中對(duì)應(yīng)記錄將保持不變。

2.1.2主從記錄映射

現(xiàn)有同步模型中,主從記錄的映射關(guān)系通過(guò)主關(guān)鍵字ID的一致性進(jìn)行判斷,其前提條件是主從數(shù)據(jù)表的主關(guān)鍵字是單屬性,數(shù)據(jù)特性相同,并且在同步新增記錄時(shí),設(shè)置從記錄的主關(guān)鍵字ID等于主記錄的主關(guān)鍵字ID,該方法不適合下列情況:①主關(guān)鍵字是自增加字段,字段值由數(shù)據(jù)庫(kù)自動(dòng)生成;②主關(guān)鍵字包含多個(gè)字段,單個(gè)字段不能唯一標(biāo)識(shí)記錄;③主關(guān)鍵字有自定義的構(gòu)造方法,主從數(shù)據(jù)庫(kù)構(gòu)造方法不同。

2.2基于標(biāo)準(zhǔn)數(shù)據(jù)格式的數(shù)據(jù)轉(zhuǎn)換

由于不同數(shù)據(jù)庫(kù)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)模型不同,在數(shù)據(jù)命名、數(shù)據(jù)類(lèi)型、數(shù)據(jù)結(jié)構(gòu)方面存在差異,數(shù)據(jù)同步需要對(duì)不同數(shù)據(jù)模型進(jìn)行轉(zhuǎn)換。在雙向中間件方法的兩個(gè)異構(gòu)數(shù)據(jù)庫(kù)之間直接進(jìn)行數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)同步實(shí)時(shí)更新,數(shù)據(jù)轉(zhuǎn)換效率高,但n個(gè)異構(gòu)數(shù)據(jù)庫(kù)節(jié)點(diǎn)的雙向同步需要n*(n-1)個(gè)數(shù)據(jù)轉(zhuǎn)換模塊,增加、修改一個(gè)數(shù)據(jù)表存儲(chǔ)模型不僅涉及本地?cái)?shù)據(jù)轉(zhuǎn)換模塊,還涉及所有同步節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)換模塊,導(dǎo)致數(shù)據(jù)庫(kù)開(kāi)發(fā)維護(hù)成本高、擴(kuò)展性差。

基于標(biāo)準(zhǔn)數(shù)據(jù)格式轉(zhuǎn)換的數(shù)據(jù)流如圖1所示。數(shù)據(jù)發(fā)送前,主節(jié)點(diǎn)將主記錄轉(zhuǎn)換為標(biāo)準(zhǔn)數(shù)據(jù)格式,從節(jié)點(diǎn)在更新數(shù)據(jù)前,將接收的標(biāo)準(zhǔn)數(shù)據(jù)轉(zhuǎn)換為從記錄的數(shù)據(jù)格式。這樣n個(gè)數(shù)據(jù)節(jié)點(diǎn)的雙向同步只需要2*n個(gè)轉(zhuǎn)換模塊,增加、修改一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)模型,只需開(kāi)發(fā)維護(hù)新數(shù)據(jù)模型與標(biāo)準(zhǔn)數(shù)據(jù)模型的數(shù)據(jù)轉(zhuǎn)換處理模塊,其它同步節(jié)點(diǎn)的數(shù)據(jù)轉(zhuǎn)換模塊保持不變。標(biāo)準(zhǔn)數(shù)據(jù)格式要包含同步數(shù)據(jù)表分組中所有數(shù)據(jù)表字段,并考慮一定的擴(kuò)展性,以保證數(shù)據(jù)轉(zhuǎn)換不會(huì)造成數(shù)據(jù)丟失,各同步數(shù)據(jù)表分組的標(biāo)準(zhǔn)數(shù)據(jù)格式互不相同。

2.3模型描述

同步模型分為3層:同步控制層、轉(zhuǎn)換層、傳輸層。

(1)同步控制層。管理數(shù)據(jù)同步任務(wù)啟動(dòng)和數(shù)據(jù)同步更新,主節(jié)點(diǎn)啟動(dòng)數(shù)據(jù)同步任務(wù),保存記錄同步發(fā)送信息;從節(jié)點(diǎn)更新本地?cái)?shù)據(jù)庫(kù),保存主從記錄映射信息。

(2)數(shù)據(jù)轉(zhuǎn)換層。主節(jié)點(diǎn)將主記錄轉(zhuǎn)換為標(biāo)準(zhǔn)數(shù)據(jù)格式,從節(jié)點(diǎn)將標(biāo)準(zhǔn)格式數(shù)據(jù)轉(zhuǎn)換為從記錄的本地格式。

(3)傳輸層。將傳輸數(shù)據(jù)由主節(jié)點(diǎn)通過(guò)網(wǎng)絡(luò)發(fā)送到所有同步從節(jié)點(diǎn)。

主、從同步節(jié)點(diǎn)各層功能邏輯對(duì)應(yīng),互相協(xié)作完成主從數(shù)據(jù)庫(kù)同步。將主從同步節(jié)點(diǎn)互換,并增加相應(yīng)的處理模塊,即可實(shí)現(xiàn)兩個(gè)異構(gòu)數(shù)據(jù)庫(kù)的雙向同步。

2.4同步基本流程

假設(shè)主數(shù)據(jù)庫(kù)同步數(shù)據(jù)表是tm,從數(shù)據(jù)庫(kù)同步數(shù)據(jù)表是ts,如果對(duì)數(shù)據(jù)表tm進(jìn)行操作(對(duì)數(shù)據(jù)表變化捕獲參考相關(guān)文獻(xiàn)),則數(shù)據(jù)同步基本流程如下所示。

2.4.1主節(jié)點(diǎn)基本流程

(1)主節(jié)點(diǎn)獲取表tm操作的相關(guān)信息(包括記錄關(guān)鍵字ID、操作類(lèi)型)如果是新增記錄,則讀取tm的同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)配置信息,每個(gè)同步數(shù)據(jù)節(jié)點(diǎn)構(gòu)造一條同步發(fā)送數(shù)據(jù)并保存到同步發(fā)送表中。

(2)如果是新增或修改操作,查詢表tm,獲取記錄的實(shí)體數(shù)據(jù)并轉(zhuǎn)換為對(duì)應(yīng)的標(biāo)準(zhǔn)數(shù)據(jù)格式。

(3)將實(shí)體標(biāo)準(zhǔn)數(shù)據(jù)(如果是刪除操作,標(biāo)準(zhǔn)數(shù)據(jù)為null)、同步控制數(shù)據(jù),包括主節(jié)點(diǎn)IP、數(shù)據(jù)庫(kù)名、數(shù)據(jù)表名、記錄關(guān)鍵字ID、操作類(lèi)型,組合成傳輸數(shù)據(jù),查詢同步發(fā)送表獲取記錄的同步節(jié)點(diǎn)信息,依次調(diào)用相應(yīng)數(shù)據(jù)傳輸服務(wù)代理方法,將傳輸數(shù)據(jù)發(fā)送到從節(jié)點(diǎn)。

2.4.2從節(jié)點(diǎn)基本流程

(1)接收主節(jié)點(diǎn)發(fā)送的傳輸數(shù)據(jù)。

(2)解析同步傳輸數(shù)據(jù),如果操作類(lèi)型是新增或修改,將標(biāo)準(zhǔn)數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)的從記錄數(shù)據(jù)格式。

(3)如果是新增記錄,增加記錄到表ts,獲取新增同步記錄的主關(guān)鍵字ID,并將主從記錄映射關(guān)系保存到主從記錄映射表中;如果是更新記錄,查詢主從記錄映射表,獲取同步記錄在ts的對(duì)應(yīng)記錄,對(duì)該記錄執(zhí)行相同更新操作。

3設(shè)計(jì)與實(shí)現(xiàn)

設(shè)計(jì)與實(shí)現(xiàn)主要包括3個(gè)關(guān)鍵方面:①同步發(fā)送表設(shè)計(jì);②主從記錄映射表設(shè)計(jì);③數(shù)據(jù)傳輸服務(wù)。

3.1同步發(fā)送數(shù)據(jù)表

同步發(fā)送數(shù)據(jù)表保存特定表記錄的同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)信息,為同步更新操作提供同步信息,數(shù)據(jù)表結(jié)構(gòu)定義如表1所示。其中,SlaveNode記錄同步從節(jié)點(diǎn)IP地址,SlaveDbName記錄同步從數(shù)據(jù)庫(kù)表名,這樣同一記錄可同步到多個(gè)節(jié)點(diǎn)的多個(gè)數(shù)據(jù)庫(kù)中。MasterKeyId是主記錄關(guān)鍵字ID,如果主數(shù)據(jù)表主關(guān)鍵字是單屬性,MasterKeyId直接保存主記錄關(guān)鍵字ID,如果主數(shù)據(jù)表主關(guān)鍵字是多屬性,則MasterKeyld是多屬性組合,組合規(guī)則由系統(tǒng)自行確定,只要保證MasterKeyld的唯一性,如主數(shù)據(jù)表關(guān)鍵字屬性包括“keyl”和“key2”,自定義組合規(guī)則是在關(guān)鍵字之間加上“#”作為分隔符,則Masterkeyld為"keyl#key2”。

3.2主從記錄映射數(shù)據(jù)表

主從記錄映射數(shù)據(jù)表保存同步記錄在主數(shù)據(jù)庫(kù)節(jié)點(diǎn)與從數(shù)據(jù)庫(kù)節(jié)點(diǎn)間的對(duì)應(yīng)關(guān)系,為同步更新操作提供主記錄在同步從數(shù)據(jù)庫(kù)節(jié)點(diǎn)中的對(duì)應(yīng)記錄,數(shù)據(jù)表結(jié)構(gòu)見(jiàn)表2。其中,MasterNode字段記錄主節(jié)點(diǎn)IP地址,MasterDb-Name記錄主數(shù)據(jù)庫(kù)名,則從數(shù)據(jù)庫(kù)節(jié)點(diǎn)可以從多個(gè)節(jié)點(diǎn)、節(jié)點(diǎn)的多個(gè)數(shù)據(jù)庫(kù)中同步更新數(shù)據(jù)。SlaveKeyId字段記錄同步記錄在從數(shù)據(jù)表中對(duì)應(yīng)記錄的關(guān)鍵字值,如果從數(shù)據(jù)表主關(guān)鍵字是多屬性,處理方式與同步發(fā)送數(shù)據(jù)表相同,只需保證可從SlaveKeyId值還原出原始的多個(gè)關(guān)鍵字值。

3.3數(shù)據(jù)傳輸服務(wù)

數(shù)據(jù)傳輸可以采用不同的實(shí)現(xiàn)技術(shù),如JMS、SOA、web中間件等,本文采用WCF實(shí)現(xiàn)數(shù)據(jù)傳輸服務(wù)。WCF(Windows Communication Foundation)是由微軟開(kāi)發(fā)的一系列支持?jǐn)?shù)據(jù)通信的應(yīng)用程序框架,WCF以契約(Contraet)定義雙方溝通的協(xié)議。

3.3.1數(shù)據(jù)契約

數(shù)據(jù)契約(Data Contract)定義雙方信息交換的格式和內(nèi)容,數(shù)據(jù)傳輸服務(wù)的數(shù)據(jù)契約包含記錄實(shí)體和同步控制數(shù)據(jù)契約。記錄實(shí)體數(shù)據(jù)契約定義記錄實(shí)體數(shù)據(jù)格式,契約成員變量與實(shí)體標(biāo)準(zhǔn)數(shù)據(jù)格式的成員變量——對(duì)應(yīng),不同實(shí)體數(shù)據(jù)契約的定義和命名不同。同步控制數(shù)據(jù)契約定義同步任務(wù)控制信息,所有同步任務(wù)的同步控制數(shù)據(jù)契約定義與命名相同,同步控制數(shù)據(jù)契約定義如下:

3.3.2服務(wù)契約

服務(wù)契約(Service Contract)定義服務(wù)向外公開(kāi)的功能,服務(wù)由從節(jié)點(diǎn)實(shí)現(xiàn),主節(jié)點(diǎn)調(diào)用服務(wù)代理(WCF ServiceProxy)執(zhí)行。數(shù)據(jù)傳輸服務(wù)契約功能是將數(shù)據(jù)從主節(jié)點(diǎn)傳輸?shù)綇墓?jié)點(diǎn),主節(jié)點(diǎn)根據(jù)同步節(jié)點(diǎn)IP和同步數(shù)據(jù)庫(kù)名構(gòu)造相應(yīng)服務(wù)終結(jié)點(diǎn)數(shù)據(jù)。系統(tǒng)要為每個(gè)從同步數(shù)據(jù)庫(kù)節(jié)點(diǎn)定義一個(gè)服務(wù)契約接口,為數(shù)據(jù)庫(kù)每個(gè)同步數(shù)據(jù)表定義一個(gè)數(shù)據(jù)傳輸方法。

4結(jié)語(yǔ)

本文提出的異構(gòu)數(shù)據(jù)庫(kù)同步更新方案,通過(guò)記錄同步發(fā)送和主從記錄映射數(shù)據(jù),解決了現(xiàn)有同步模型中數(shù)據(jù)無(wú)法同步更新的問(wèn)題,并用實(shí)例證明該同步更新方案可行。在數(shù)據(jù)存儲(chǔ)中,一個(gè)實(shí)體數(shù)據(jù)可能分散在不同的數(shù)據(jù)表中,每次單獨(dú)同步一個(gè)數(shù)據(jù)表會(huì)破壞實(shí)體數(shù)據(jù)的一致性,該方案可實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)單表間同步,但還不適用于多表同步。因此下一步研究對(duì)象為多對(duì)多、一對(duì)多、多對(duì)一數(shù)據(jù)表同步。

主站蜘蛛池模板: 国产特一级毛片| 亚洲国产日韩欧美在线| 99er这里只有精品| 亚洲国产中文精品va在线播放 | 亚洲天堂首页| 欧美视频二区| 老汉色老汉首页a亚洲| 在线观看无码av五月花| 玖玖精品在线| 亚洲一区二区三区香蕉| 91探花国产综合在线精品| 美女高潮全身流白浆福利区| 久久性妇女精品免费| 人妻一区二区三区无码精品一区| 高清亚洲欧美在线看| 91精品人妻互换| 亚洲精品动漫在线观看| 伊人久久久大香线蕉综合直播| 中文字幕无码电影| 亚洲中文无码av永久伊人| 高清无码一本到东京热| 国产区人妖精品人妖精品视频| 中日韩欧亚无码视频| 91久久性奴调教国产免费| 天天婬欲婬香婬色婬视频播放| 久久综合结合久久狠狠狠97色 | 亚洲天堂久久新| 女人爽到高潮免费视频大全| 国产手机在线小视频免费观看 | 国产视频久久久久| 国产精品香蕉| 免费不卡在线观看av| 亚洲欧美一区二区三区蜜芽| 亚洲人成网线在线播放va| 日韩欧美国产中文| 亚洲av成人无码网站在线观看| 国产成人一区免费观看| 国产免费福利网站| 国产凹凸视频在线观看| 91无码人妻精品一区二区蜜桃 | 精品夜恋影院亚洲欧洲| 国产网站免费看| 四虎免费视频网站| 色偷偷av男人的天堂不卡| 在线va视频| 国产欧美日韩精品综合在线| 4虎影视国产在线观看精品| 精品国产成人国产在线| 亚洲啪啪网| 亚洲Va中文字幕久久一区 | 狠狠亚洲五月天| 97国产成人无码精品久久久| 国产本道久久一区二区三区| 日韩av高清无码一区二区三区| 免费一级毛片| 日本午夜视频在线观看| 亚洲国产黄色| 她的性爱视频| 国产精品手机在线播放| 制服丝袜一区| 欧亚日韩Av| 欧美a√在线| 91口爆吞精国产对白第三集| 夜夜操狠狠操| 亚洲一道AV无码午夜福利| 91免费国产在线观看尤物| 久久久久亚洲AV成人网站软件| 日韩小视频在线播放| 亚洲乱强伦| 伊人精品成人久久综合| 一级不卡毛片| 亚洲永久精品ww47国产| 国产黄在线观看| 成人另类稀缺在线观看| 欧美午夜视频在线| 精品国产成人a在线观看| 欧美精品二区| 97视频免费在线观看| 亚洲成a人片7777| 国产色网站| 国产精品浪潮Av| 成人毛片免费观看|