《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于XML異構(gòu)數(shù)據(jù)訪問中間件的設(shè)計(jì)與實(shí)現(xiàn)
基于XML異構(gòu)數(shù)據(jù)訪問中間件的設(shè)計(jì)與實(shí)現(xiàn)
楊金璽1,2,柏文陽1
1.南京大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,江蘇 南京210093; 2.大慶榆樹林油田開發(fā)有限責(zé)任公司,黑龍
摘要: 提出了一個(gè)基于XML的異構(gòu)數(shù)據(jù)訪問中間件模型,給出了該模型的體系結(jié)構(gòu)并對(duì)各部分功能做了定義。詳細(xì)介紹了模型中XML模板與包裝器的設(shè)計(jì)和實(shí)現(xiàn)。
Abstract:
Key words :

摘  要: 提出了一個(gè)基于XML的異構(gòu)數(shù)據(jù)訪問中間件模型,給出了該模型的體系結(jié)構(gòu)并對(duì)各部分功能做了定義。詳細(xì)介紹了模型中XML模板與包裝器的設(shè)計(jì)和實(shí)現(xiàn)。
關(guān)鍵詞: XML語言  中間件  異構(gòu)數(shù)據(jù)

  隨著信息化建設(shè)的不斷深入,不少企業(yè)與組織建立了各種應(yīng)用系統(tǒng)。由于這些系統(tǒng)是在不同階段開發(fā)的,每個(gè)系統(tǒng)都有自己的運(yùn)行環(huán)境和數(shù)據(jù)存儲(chǔ)方式,這些數(shù)據(jù)的格式不統(tǒng)一,各個(gè)應(yīng)用系統(tǒng)彼此封閉,數(shù)據(jù)難以交換和共享。為了使這些數(shù)據(jù)能夠更好地實(shí)現(xiàn)資源共享,迫切需要建立一個(gè)公共的集成環(huán)境,對(duì)用戶提供統(tǒng)一和透明的訪問界面。利用中間件(Middleware)技術(shù)集成各種異構(gòu)數(shù)據(jù)時(shí),不用改變?cè)紨?shù)據(jù)的存儲(chǔ)和管理方式,可集中為異構(gòu)數(shù)據(jù)源提供一個(gè)統(tǒng)一的高層檢索服務(wù),是實(shí)現(xiàn)異構(gòu)數(shù)據(jù)集成的理想解決方案。
異構(gòu)數(shù)據(jù)訪問中間件系統(tǒng)的核心就是要解決異構(gòu)數(shù)據(jù)源的分布性、自制性和異構(gòu)性。隨著分布式計(jì)算技術(shù)(如CORBA、XML等)的迅猛發(fā)展,使得原來的系統(tǒng)可以通過它們進(jìn)行封裝,隱藏內(nèi)部結(jié)構(gòu),采用公共數(shù)據(jù)模型將局部共享數(shù)據(jù)進(jìn)行封裝,對(duì)外提供公共訪問接口。異構(gòu)數(shù)據(jù)訪問中間件為企業(yè)提供一致的、便于訪問的數(shù)據(jù)集合,從而解決信息孤島、數(shù)據(jù)質(zhì)量差、數(shù)據(jù)不一致等問題。
1  XML全局?jǐn)?shù)據(jù)模式
  異構(gòu)數(shù)據(jù)訪問中間件必須提供一種全局?jǐn)?shù)據(jù)模式來統(tǒng)一異構(gòu)源數(shù)據(jù)模式。異構(gòu)數(shù)據(jù)集成的全局模式必須滿足:①能夠描述各種數(shù)據(jù)格式,無論其為結(jié)構(gòu)化還是半結(jié)構(gòu)化,無論它是支持所有的查詢語言還是簡(jiǎn)單的文本查詢;②易于發(fā)布和進(jìn)行數(shù)據(jù)交換,集成后的數(shù)據(jù)可以方便地以多種格式發(fā)布和便于應(yīng)用交換數(shù)據(jù)。
早期異構(gòu)數(shù)據(jù)的集成系統(tǒng)通常采用關(guān)系或?qū)ο蟮臄?shù)據(jù)模式作為全局模式。然而,它們并不能滿足網(wǎng)絡(luò)時(shí)代的Intranet/Internet應(yīng)用所提出的高標(biāo)準(zhǔn)。隨著可擴(kuò)展標(biāo)記語言XML及其相關(guān)技術(shù)的發(fā)展,XML不僅成為了應(yīng)用間交換數(shù)據(jù)的一種標(biāo)準(zhǔn),也是萬維網(wǎng)重要的信息交換標(biāo)準(zhǔn)和表示技術(shù)之一[1]。
XML是一種具有很強(qiáng)的數(shù)據(jù)描述能力的標(biāo)記語言,它第一次提供了一種信息交換模式,此格式是可編輯、易理解并且可表示任何類型的結(jié)構(gòu)化或半結(jié)構(gòu)化的信息。XML 提供了豐富的數(shù)據(jù)構(gòu)造和解析方法,能夠適應(yīng)多樣并且不斷變化的網(wǎng)絡(luò)應(yīng)用環(huán)境,被廣泛用于異構(gòu)系統(tǒng)間的數(shù)據(jù)交換和互操作應(yīng)用中。
2  系統(tǒng)框架
  中間件是一種支持分布式應(yīng)用的重要組件,它是一種獨(dú)立的系統(tǒng)軟件和服務(wù)程序。分布式應(yīng)用借助中間件在不同的技術(shù)間共享資源,為應(yīng)用提供統(tǒng)一的編程模型,處理異構(gòu)、分布問題和管理計(jì)算資源及網(wǎng)絡(luò)通信。
  大多數(shù)基于 XML 的數(shù)據(jù)集成系統(tǒng)框架采用Mediator/Wrapper架構(gòu),該架構(gòu)的缺點(diǎn)是查詢效率不高。這是由于底層數(shù)據(jù)源的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)模式、存儲(chǔ)方法、查詢能力差別很大。數(shù)據(jù)訪問中間件的設(shè)計(jì)是非常復(fù)雜的,包裝器同時(shí)要兼顧數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)清洗等任務(wù),并且這還僅是在查詢時(shí)觸發(fā)的處理。為此本文采用從原始數(shù)據(jù)源中預(yù)先抽取、轉(zhuǎn)換、加載的思想,對(duì)數(shù)據(jù)源作預(yù)處理。
  基于XML的異構(gòu)數(shù)據(jù)訪問中間件模型XHDAM(XML-based Heterogeneous Data Access Model)的系統(tǒng)結(jié)構(gòu)如圖1所示。XHDAM從分布式對(duì)象操作和異構(gòu)數(shù)據(jù)集成二個(gè)方面解決系統(tǒng)互操作問題。首先,XHDAM基于CORBA技術(shù),通過CORBA提供的ORB(Object Request Broker)實(shí)現(xiàn)分布計(jì)算環(huán)境中對(duì)象操作支持,使不同的應(yīng)用系統(tǒng)能夠方便地與XHDAM交互,達(dá)到不同應(yīng)用系統(tǒng)之間交互的目的,從而實(shí)現(xiàn)系統(tǒng)的透明性。另外CORBA提供了完整的分布式對(duì)象操作環(huán)境,XHDAM通過它可以方便地獲得操作的完整性和安全性保證。另一方面,在系統(tǒng)間數(shù)據(jù)傳遞與互操作上,XHDAM采用XML作為數(shù)據(jù)描述與交換的語言,同時(shí)在XHDAM中通過XML模板來描述異構(gòu)系統(tǒng)之間數(shù)據(jù)的關(guān)系和轉(zhuǎn)換方法。只要適當(dāng)?shù)囟x統(tǒng)一的模板,一種系統(tǒng)的數(shù)據(jù)就能夠方便、準(zhǔn)確地轉(zhuǎn)換為XML數(shù)據(jù)。

  (1)客戶端:向CORBA服務(wù)器發(fā)出訪問請(qǐng)求。客戶端只提供統(tǒng)一的訪問界面,不處理業(yè)務(wù)邏輯關(guān)系和集成管理任務(wù)。
  (2)CORBA公共服務(wù):提供CORBA的標(biāo)準(zhǔn)服務(wù),包括名字服務(wù)、事件服務(wù)、安全服務(wù)等。
  (3)查詢處理器:當(dāng)客戶請(qǐng)求時(shí),分解全局查詢到局部查詢;當(dāng)查詢結(jié)束時(shí),負(fù)責(zé)將局部查詢結(jié)果匯總返回給客戶端。另外還負(fù)責(zé)局部查詢的優(yōu)化,提高查詢效率。
  (4)目錄服務(wù):是XML存儲(chǔ)庫的一個(gè)摘要,包含XML存儲(chǔ)庫的靜態(tài)和動(dòng)態(tài)信息。XML數(shù)據(jù)目錄服務(wù)可以自動(dòng)、智能地建立目錄服務(wù),并對(duì)信息自動(dòng)搜索、自動(dòng)分類、自動(dòng)傳輸。
  (5)事務(wù)服務(wù):負(fù)責(zé)全局模式和局部模式之間的集成與分解關(guān)系,如全局事務(wù)到局部子事務(wù)的處理,全局查詢到局部子查詢的處理。
  (6)包裝器:負(fù)責(zé)解決異構(gòu)數(shù)據(jù)源的包裝問題,將分散在各處的數(shù)據(jù)源按照XML模板進(jìn)行包裝。開始,包裝器一次性將數(shù)據(jù)源中的所有數(shù)據(jù)轉(zhuǎn)換到存儲(chǔ)庫中。當(dāng)有新數(shù)據(jù)源追加到源數(shù)據(jù)庫時(shí),就通過觸發(fā)器觸發(fā)包裝程序?qū)⒃磾?shù)據(jù)庫中的新數(shù)據(jù)包裝成XML數(shù)據(jù)加入存儲(chǔ)庫。客戶端對(duì)數(shù)據(jù)的訪問是通過查詢處理器訪問XML存儲(chǔ)庫實(shí)現(xiàn)的。
3  XML模板和包裝器的設(shè)計(jì)與實(shí)現(xiàn)
  為了提供對(duì)XML 的支持,各大數(shù)據(jù)庫廠商紛紛對(duì)各自的數(shù)據(jù)庫產(chǎn)品進(jìn)行了擴(kuò)展,提供了基于模板的查詢。但各數(shù)據(jù)庫管理系統(tǒng)支持的查詢模板語法差異很大,不能互用。因此,訪問多個(gè)異構(gòu)數(shù)據(jù)源時(shí)需要為不同類型的數(shù)據(jù)庫提供多個(gè)符合其相應(yīng)語法的模板文件,這就增加了項(xiàng)目開發(fā)的復(fù)雜度。針對(duì)各數(shù)據(jù)庫管理系統(tǒng)不能互用的問題,提出一種獨(dú)立于具體數(shù)據(jù)庫管理系統(tǒng)的模板腳本語言XTemplate,以支持各種結(jié)構(gòu)化數(shù)據(jù)源的包裝。包裝器按照XML模板的數(shù)據(jù)模式將異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)包裝成XML數(shù)據(jù)。
3.1 XTemplate模板設(shè)計(jì)
  為了訪問不同的數(shù)據(jù)源,需要在模板文件中定義數(shù)據(jù)源的連接屬性。其中:數(shù)據(jù)庫連接屬性包括servername、dbparm、database、logid、logpass、autocommit;代碼SQL語句屬性為xviewsqlcode;視圖名稱屬性為xviewname;視圖SQL語句屬性為xviewsql。表達(dá)式中的Eq和Attvalue含義分別來自XML元語言[xml25]和[xml10]。
  [1]ServernameAttr∷=′xviewsqlcode′ Eq AttValue
  [2]DbparmAttrr∷=′xviewsqlcode′ Eq AttValue
  [3]DatabaseAttr∷=′xviewsqlcode′ Eq AttValue
  [4]LogidAttr∷=′xviewsqlcode′ Eq AttValue
  [5]LogpassAttr∷=′xviewsqlcode′ Eq AttValue
  [6]AutocommitAttr∷=′xviewsqlcode′ Eq AttValue
  [7]XviewnameAttr∷=′xviewname′ Eq AttValue
  [8]XviewsqlAttr∷=′xviewsql′ Eq AttValue
  [9]XviewsqlcodeAttr∷=′xviewsqlcode′ Eq AttValue
  XTemplate 對(duì)XML元語言中的起始標(biāo)簽Stag[xml40]作了如下擴(kuò)展,其中Name、S、Attribute分別來自[xml15]、[xml3]和[xml41]:
  Stag∷=′<′ Name (S XviewnameAttr | S XviewsqlAttr | S XviewsqlcodeAttr | S Attribute)*? ′>′
  最后,XTemplate 模板文件定義如下,其中prolog、element分別來自[xml39]和[xml22]:
  xtemplatefile∷=prolog ′<xtemplate′ [ServernameAttr] [DbparmAttr] [DatabaseAttr] [LogidAttr] [LogpassAttr] [AutocommitAttr]> [element] ′</xtemplate>′
  使用XTemplate定義的模板文件是格式正確(Well-formed)的XML文檔,且具有根元素<xtemplate>,可用來提供數(shù)據(jù)源連接參數(shù)servername、dbms、dbparm、database、logid、logpass、autocommit。
具有xviewname屬性和xviewsql屬性的子元素稱為視圖模板元素,因?yàn)槠涮峁┝吮碚鲾?shù)據(jù)集的名稱和SQL語句的二個(gè)屬性。xviewname屬性提供視圖名稱,xviewsql屬性提供視圖SELECT語句。SELECT語句中可以用:p_xviewname:p_columnname的形式傳遞父視圖的列名給子視圖,以反映視圖間的連接關(guān)系。
如果子元素和屬性的值對(duì)應(yīng)于數(shù)據(jù)源中的列名,且需要在解析執(zhí)行時(shí)用檢索結(jié)果動(dòng)態(tài)替換,則稱其為列元素和列屬性。列元素可以用xviewsqlcode 屬性指定以實(shí)際值替換代碼值。
  一個(gè)使用XTemplate 定義的模板文件涉及的關(guān)系如表1所示。

  基于表1,使用XTemplate 定義的一個(gè)模板文件如下:
  <?xml version=″1.0″ encoding=″gb2312″?>
  <xtemplate dbms=″odbc″dbparm=″connectstring=′DNS=
  oracle;UID=scott;PWD=tiger′″>
     <員工列表>
         <員工 xviewname=″員工″ xviewsql=″SELECT ENO,ENAME,SAL FROM  WHERE ENO=′E1′ or ENO=′E2′″>
         <編號(hào)>ENO</編號(hào)>
         <姓名>ENAME</姓名>
         <薪水>SAL</薪水>
          </員工>
     </員工列表>
  </xtemplate>
  使用XTemplate解析程序處理上述模板返回XML文檔如下:
  <?xml version=″1.0″ encoding=″gb2312″?>
     <員工列表>
         <員工 員工序號(hào)=″1″>
          <編號(hào)>E1</編號(hào)>
          <姓名>J.Doe</姓名>
          <薪水>4000</薪水>
     </員工>
  <員工 員工序號(hào)=″2″>
          <編號(hào)>E2</編號(hào)>
          <姓名>M.Smith</姓名>
          <薪水>3400</薪水>
  </員工>
  </員工列表>
  使用XTemplate書寫的模板文件獨(dú)立于具體的數(shù)據(jù)庫管理系統(tǒng),無需數(shù)據(jù)庫管理系統(tǒng)內(nèi)置的功能模塊解析執(zhí)行,而是由獨(dú)立于具體數(shù)據(jù)庫管理系統(tǒng)的軟件模塊解析執(zhí)行并返回XML查詢結(jié)果。這樣,針對(duì)不同數(shù)據(jù)庫管理系統(tǒng)設(shè)計(jì)的模板在語法上取得了一致。
  XTemplate定義模板文件可以使沒有內(nèi)置XML查詢功能的數(shù)據(jù)庫管理系統(tǒng)獲得對(duì)XML查詢的支持。采用XTemplate之后,結(jié)構(gòu)化的數(shù)據(jù)源需要解釋執(zhí)行的是XTemplate 解析執(zhí)行軟件傳遞來的SQL語句,這是結(jié)構(gòu)化的數(shù)據(jù)源通常會(huì)提供的標(biāo)準(zhǔn)功能。結(jié)構(gòu)化的數(shù)據(jù)源返回的數(shù)據(jù)集仍由XTemplate解析執(zhí)行軟件轉(zhuǎn)換為XML結(jié)果文檔,并返回給調(diào)用者。
3.2 包裝器的設(shè)計(jì)與實(shí)現(xiàn)
  XML包裝器是整個(gè)模型中的重要組成部分,它將異構(gòu)的數(shù)據(jù)源按照統(tǒng)一的數(shù)據(jù)模型進(jìn)行包裝,在客戶端對(duì)數(shù)據(jù)的訪問都是針對(duì)統(tǒng)一的數(shù)據(jù)模型標(biāo)準(zhǔn)。包裝器結(jié)構(gòu)如圖2所示。

  XML包裝器是一個(gè)模板文件解析程序,只要傳入不同的模板文件即可生成對(duì)應(yīng)的XML文檔。包裝器工作過程如下:從傳來的模板文件建立DOM對(duì)象,取得數(shù)據(jù)庫的連接屬性,進(jìn)而連接數(shù)據(jù)庫;從XTemplate模板文件的xviewsql屬性獲得SELECT語句,在數(shù)據(jù)庫表或視圖中執(zhí)行此查詢語句,建立視圖數(shù)據(jù)集;將數(shù)據(jù)集中的相關(guān)數(shù)據(jù)代入。關(guān)鍵解析算法如下:
  //predealdom方法建立視圖,復(fù)制建立的所有元素
  Void predealdom(domobject& root) {
    //視圖模板元素指有xviewsql屬性的元素
    If (root 不是視圖模板元素){
       對(duì)root所有子元素遞歸調(diào)用predealdom;
    }
    else {
       視圖序號(hào)增加;
       為root添加xviewindex屬性,值為當(dāng)前視圖序號(hào);
       從xviewsql屬性獲得視圖SELECT語句;
       if (SELECT語句中有參數(shù)){
          查找相應(yīng)祖先視圖取得實(shí)際值代入;
       }
       根據(jù)SELECT 語句建立視圖數(shù)據(jù)集;
       if (不能創(chuàng)建視圖數(shù)據(jù)集){
          errmsg=″xviewsql屬性值不是合法的SELECT語句″
          return
       }
       else {
          int RowCount=視圖數(shù)據(jù)集行數(shù);
           //復(fù)制當(dāng)前節(jié)點(diǎn)RowCount
          for (int row=1;row<RowCount;row++){
             復(fù)制root節(jié)點(diǎn)加入DOM;//DOM為模板對(duì)象
             添加xviewindex和xviewrow屬性;
      }
         對(duì)root的所有子元素遞歸調(diào)用predealdom
      }
  }
  //dealdom方法將列元素與列屬性替換為實(shí)際值
  Void dealdom(domobject& root) {
      If (root 有 xviewindex屬性){
         Int index=root元素的xviewindex屬性值;
      }
      int row=root元素的xviewrow屬性值;
      int AttrNums=root屬性數(shù)目;
      int ElemNums=root子元素?cái)?shù)目;
      for (int i=0;i<AttrNums;i++){
         取得root元素第i個(gè)屬性a[i];
         if (a[i]是列屬性){
         查找編號(hào)為xviewindex的視圖數(shù)據(jù)集的row行取得實(shí)際值替換;
         }
        }
        for (int j=0;j< ElemNums;j++){
          取得root元素第j個(gè)屬性e[j];
          if (e[j]是列元素){
        查找編號(hào)為index的視圖數(shù)據(jù)集的row行取得實(shí)際值替換;
       if (e[i]有xviewcodesql屬性{
        根據(jù)代碼SQL語句取得實(shí)際值代替代碼值;
         }
        }
  }
  對(duì)root的所有子元素遞歸調(diào)用dealdom
  }
  行業(yè)標(biāo)記語言用于校驗(yàn)生成的XML文檔是否合法。如果合法,則允許存入XML存儲(chǔ)庫中;否則應(yīng)當(dāng)修改對(duì)應(yīng)的模板文件。
  初始建立XML存儲(chǔ)庫時(shí),一次性將所有歷史數(shù)據(jù)轉(zhuǎn)換裝入XML存儲(chǔ)庫。之后,有數(shù)據(jù)更新時(shí)觸發(fā)轉(zhuǎn)換操作,將相應(yīng)的XML文檔加入到XML存儲(chǔ)庫中。
  對(duì)于企業(yè)應(yīng)用來說,訪問各種異構(gòu)數(shù)據(jù)源是企業(yè)內(nèi)部發(fā)展的需要,也是企業(yè)信息化建設(shè)的要求。本文提出的基于XML異構(gòu)數(shù)據(jù)訪問中間件解決方案通過預(yù)先實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫到XML數(shù)據(jù)的轉(zhuǎn)換,加快了訪問速度。最后,給出包裝器和XML模板的詳細(xì)設(shè)計(jì)和說明。
參考文獻(xiàn)
1   W3C Recommendation.Extensible Markup Language(XML) 1.0.http://www.w3.org/tr/1998/rec-xml-19980210,1998
2   Shanmugasundaram J.Efficienttly Publushing Relational Data as XML Document.In:Proceedings of the VLDB Conference,Egypt,2000
3   莊冠華.基于XML的數(shù)據(jù)集成技術(shù)的研究與應(yīng)用.南京大學(xué)碩士研究生畢業(yè)論文,2004
4   李冠宇,劉軍,張俊.分布式異構(gòu)數(shù)據(jù)集成系統(tǒng)的研究與實(shí)現(xiàn).計(jì)算機(jī)應(yīng)用研究,2004;21(3)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
欧美激情办公室aⅴ_国产欧美综合一区二区三区_欧美午夜精品久久久久免费视_福利视频欧美一区二区三区

          伊人久久大香线蕉综合热线| 国产精品毛片在线看| 狠狠色狠狠色综合人人| 久久综合九色综合网站| 免费看亚洲片| 免费日韩av片| 美女精品一区| 狂野欧美一区| 好吊色欧美一区二区三区四区 | 久久综合九色综合欧美狠狠| 亚洲一区二区三区免费观看| 国产精品日韩久久久| 国产麻豆日韩| 国精品一区二区| 在线观看日韩av电影| 国产婷婷精品| 性xx色xx综合久久久xx| 欧美日韩国产色综合一二三四| 国产自产在线视频一区| 国产日韩久久| 欧美 日韩 国产一区二区在线视频 | 欧美a级片网站| 国产精品美女久久久| 99国内精品| 久久久久久久高潮| 欧美96在线丨欧| 亚洲精品资源| 欧美激情麻豆| 国产视频在线观看一区| 午夜精彩国产免费不卡不顿大片| 极品尤物久久久av免费看| 国产视频久久| 国产主播一区| 久久这里有精品15一区二区三区| 亚洲视频中文| 一区二区三区四区国产| 欧美日韩一区二区视频在线| 国产精品免费在线| 在线精品福利| 国模吧视频一区| 免费久久久一本精品久久区| 狠狠色伊人亚洲综合网站色| 噜噜噜久久亚洲精品国产品小说| 伊人久久亚洲热| 女主播福利一区| 国产伦精品一区| 亚洲三级电影在线观看| 欧美午夜在线| 久久男女视频| 国产一区二区三区免费不卡 | 亚洲影音一区| 影音先锋亚洲精品| 欧美日韩1区| 久久人人九九| 久久国产精品久久w女人spa| 一区二区高清视频| 亚洲第一区色| 影音先锋在线一区| 亚洲午夜精品久久久久久浪潮| 久久精品1区| 亚洲一区二区三区免费观看| 国产精品初高中精品久久| 久久精品三级| 狂野欧美性猛交xxxx巴西| 韩国久久久久| 欧美日韩精品免费看| 亚洲欧美日韩另类精品一区二区三区 | 亚洲精品三级| 亚洲大片在线| 亚洲人人精品| 亚洲精品专区| 在线亚洲观看| 亚洲一区二区三区高清不卡| 国产欧美日韩综合一区在线播放| 亚洲乱码视频| 国产精品免费区二区三区观看| 亚洲美女黄网| 久久av一区二区三区| 乱人伦精品视频在线观看| 久久亚洲图片| 欧美天天视频| 一本一道久久综合狠狠老精东影业 | 国产日韩欧美亚洲一区| 夜久久久久久| 久久精品官网| 韩国精品一区二区三区| 亚洲精品社区| 久久精品动漫| 在线不卡视频| 亚洲欧美视频| 国产综合色产| 亚洲欧美日韩精品综合在线观看| 乱人伦精品视频在线观看| 欧美a级片一区| 亚洲东热激情| 久久久久网址| 亚洲美女色禁图| 久久男女视频| 夜夜爽av福利精品导航| 欧美激情在线| 亚洲一区自拍| 激情综合亚洲| 久久久久一区| 国产精品一卡| 精品不卡一区二区三区| 久久精品五月| 亚洲每日在线| 欧美视频网站| 久久在线精品| 国产视频在线观看一区| 国产精品二区二区三区| 国产精品一二| 亚洲精品视频一区二区三区 | 日韩视频在线观看国产| 久久久99爱| 亚洲深夜影院| 亚洲天堂偷拍| 欧美日韩国产不卡在线看| 国产九区一区在线| 最新日韩在线| 亚洲视频www| 亚欧美中日韩视频| 亚洲区一区二| 美女精品在线观看| 午夜精品剧场| 久久久久久久波多野高潮日日| 日韩视频在线观看国产| 久久人人九九| 国外成人免费视频| 国产九九精品| 亚洲美女黄色| 欧美日韩综合另类| 一级成人国产| 夜夜精品视频| 欧美高清视频一区| 欧美高清视频一区| 亚洲欧美综合| 欧美婷婷久久| 精品动漫3d一区二区三区免费| 欧美日韩99| 欧美不卡视频| 在线视频欧美一区| 妖精视频成人观看www| 欧美日本一区二区高清播放视频| 噜噜噜躁狠狠躁狠狠精品视频| 国产视频欧美| 国产精品久久久久久久久久妞妞| 亚洲国产mv| 日韩视频一区| 国产精品区二区三区日本| 国产乱人伦精品一区二区 | 好吊色欧美一区二区三区视频| 午夜久久资源| 国产一区美女| 99国产精品久久久久久久成人热 | 亚洲欧洲精品一区二区| 亚洲青色在线| 亚洲一区二区三区免费观看| 国产精品综合色区在线观看| 午夜在线一区二区| 欧美~级网站不卡| 久久久久久黄| 亚洲天堂成人| 国产精品视频免费观看| 久久美女性网| 在线免费观看欧美| 亚洲欧美日产图| 欧美婷婷久久| 国产精品久久777777毛茸茸| 久久精品伊人| 亚洲激精日韩激精欧美精品| 免费视频一区| 亚洲久久视频| 欧美激情1区2区| 在线亚洲精品| 狠狠色丁香久久综合频道| 国产精品美女久久久浪潮软件| 午夜国产欧美理论在线播放| 99精品免费| 欧美日韩精品免费观看视频完整| 99精品热6080yy久久| 欧美成人69| 亚洲欧美电影在线观看| 国产一区自拍视频| 噜噜噜噜噜久久久久久91 | 日韩午夜精品| 欧美精品日韩| 久久久久久亚洲精品杨幂换脸| 精品91在线| 久久国产欧美精品| 亚洲激情在线| 欧美日本亚洲| 国产精品一区毛片| 91久久综合| 欧美日韩日本网| 蜜桃av一区| 99精品国产高清一区二区| 你懂的国产精品永久在线| 国产精品一区二区a| 99re热精品| 最新亚洲一区| 精品二区视频| 黄色成人在线网址| 欧美日韩一区二区三区四区在线观看| 亚洲一区二区成人| 亚洲视频www| 99热精品在线观看| 99视频一区| 亚洲电影成人| 狠狠干成人综合网| 欧美黄污视频| 欧美激情一级片一区二区| 久久国产主播| 久久裸体视频| 午夜精品久久| 欧美少妇一区| 韩国一区二区三区在线观看| 亚洲欧美一级二级三级| 欧美成人一品| 国产综合色一区二区三区| 老司机精品导航| 老色鬼久久亚洲一区二区| 欧美在线亚洲| 好吊日精品视频| 亚洲图片在线| 99视频一区| 国产精品一区视频| 久久久av水蜜桃| 午夜精品电影| 伊人蜜桃色噜噜激情综合| 亚洲承认在线| 国产精品亚洲一区| 久久久久国产精品一区三寸| 久久久福利视频| 狠狠综合久久av一区二区老牛| 在线观看一区| 国产精品乱码| 欧美成人日韩| 欧美二区在线| 91久久综合| 亚洲欧美视频一区二区三区| 欧美激情1区| 亚洲人人精品| 久久久夜夜夜| 亚洲看片免费| 久久先锋资源| 日韩一级网站| 午夜欧美理论片| av成人免费观看| 欧美在线视频一区二区三区| 精品成人免费| 久久一区欧美| 一区二区黄色| 国产精品红桃| 销魂美女一区二区三区视频在线| 欧美日韩影院| 亚洲在线电影| 亚洲精品1234| 欧美日韩日本国产亚洲在线| 亚洲少妇一区| 一区在线免费观看| 欧美在线网址| 午夜在线播放视频欧美| 亚洲国产欧美不卡在线观看| 久久蜜桃资源一区二区老牛| 一区二区精品在线观看| 韩国在线一区| 欧美极品一区| 久久亚裔精品欧美| 国产亚洲综合精品| 亚洲精选在线| 亚洲午夜一区| 国产精品国产亚洲精品看不卡15| 久久精品中文| 久久av免费一区| 国产精品有限公司| 在线一区亚洲| 亚洲免费不卡| 亚洲国产精品综合| 亚洲视频一二| 在线欧美一区| 激情自拍一区| 黄色欧美日韩| 精品成人在线| 一区三区视频| 亚洲午夜极品| 国内精品视频在线播放| 午夜久久福利| 午夜精品免费| 欧美精品午夜| 国内精品久久久久久久97牛牛| 欧美区高清在线| 欧美午夜在线视频| 国内精品亚洲| 亚洲国产二区| 中文高清一区| 亚洲女同同性videoxma| 鲁大师成人一区二区三区 | 国产主播一区二区三区四区| 欧美一区成人| 国产精品v亚洲精品v日韩精品 | 亚洲欧洲综合| 99精品视频网| 性伦欧美刺激片在线观看| 国产女主播一区二区| 精品动漫av| 精品不卡在线| 亚洲精品麻豆| 亚洲欧洲精品一区| 亚洲在线播放| 欧美国产专区| 亚洲国产精品一区二区第一页 | 99精品视频免费全部在线| 国产一区白浆| 久久狠狠婷婷| 国产中文一区二区| 在线视频精品| 欧美一区二区三区另类| 国产在线精品一区二区中文| 亚洲欧洲精品一区二区| 亚洲一区二区三区免费在线观看| 久久久久久网| 国产自产在线视频一区| 国产日韩一区二区三区在线播放| 美女日韩在线中文字幕| 午夜亚洲视频| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 先锋亚洲精品| 国产精品国色综合久久| 亚洲深夜激情| 好吊色欧美一区二区三区四区 | 激情婷婷亚洲| 久久精品官网| 99视频+国产日韩欧美| 久久精品男女| 亚洲精品裸体| 欧美视频不卡| 亚洲一区二区三区精品视频| 欧美~级网站不卡| 国产精品入口| 亚洲国产成人不卡| 欧美久久一级| 久久狠狠一本精品综合网| 亚洲国内自拍| 国产在线精品二区| 欧美激情aⅴ一区二区三区| 亚洲色诱最新| 亚洲激情一区二区| 国精品一区二区| 久久狠狠久久综合桃花| 国产欧美丝祙| 日韩亚洲视频| 一区二区自拍| 精品动漫av| 国内精品久久久久久久影视麻豆| 久久精品国产清高在天天线 | 美女精品在线| 男女av一区三区二区色多| 欧美三级午夜理伦三级中文幕| 亚洲在线观看| 国产精品裸体一区二区三区| 欧美日韩精品免费观看视频完整| 亚洲免费黄色| 欧美成人有码| 欧美1区3d| 亚洲精选成人| 欧美精品二区| 午夜精品视频| 国产精品v欧美精品v日本精品动漫| 久久亚洲国产精品日日av夜夜| 每日更新成人在线视频| 久久久精品国产一区二区三区| 先锋影音一区二区三区| 亚洲综合首页| 久久综合中文色婷婷| 久久综合导航| 国产精品久久| 亚洲人成人一区二区三区| 野花国产精品入口| 亚洲一区bb| 欧美在线亚洲综合一区| 国产一区日韩欧美| 亚洲欧洲精品一区| 国产精品日本| 欧美一区久久| 永久久久久久| 国产乱人伦精品一区二区 | 亚洲激情黄色| 久热精品视频| 国产精品视频久久一区| 国产精品豆花视频| 性久久久久久| 99精品国产高清一区二区| 欧美精品一区二区三区在线看午夜 | 亚洲手机在线| 久久人人97超碰人人澡爱香蕉| 亚洲免费不卡| 亚洲国产成人不卡| 国产精品黄色| 久久亚洲国产精品日日av夜夜|