<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5000字,基于OneData體系的數(shù)據(jù)倉庫建設(shè)!

          共 5561字,需瀏覽 12分鐘

           ·

          2021-12-17 11:48

          來源:五分鐘學(xué)大數(shù)據(jù)

          全文共5253個(gè)字,建議閱讀10分鐘


          本文目錄:


          一、指導(dǎo)思想
          二、數(shù)據(jù)調(diào)研
          三、架構(gòu)設(shè)計(jì)
          四、指標(biāo)體系搭建
          五、模型設(shè)計(jì)
          六、維度設(shè)計(jì)
          七、事實(shí)表設(shè)計(jì)
          八、其他規(guī)范


          OneData是阿里巴巴內(nèi)部進(jìn)行數(shù)據(jù)整合和管理方法體系和工具。




          一、指導(dǎo)思想


          首先,要進(jìn)行充分的業(yè)務(wù)調(diào)研和需求分析。

          其次,進(jìn)行數(shù)據(jù)總體架構(gòu)設(shè)計(jì),主要是根據(jù)數(shù)據(jù)域?qū)?shù)據(jù)進(jìn)行劃分;按照維度建模理論,構(gòu)建總線矩陣,抽象出業(yè)務(wù)過程和維度。

          再次,對(duì)報(bào)表需求進(jìn)行抽象整理出相關(guān)指標(biāo)體系,使用OneData工具完成指標(biāo)規(guī)范定義和模型設(shè)計(jì)。最后,是代碼研發(fā)和運(yùn)維。

          其實(shí)施流程主要分為:數(shù)據(jù)調(diào)研、架構(gòu)設(shè)計(jì)、規(guī)范定義和模型設(shè)計(jì)。



          二、數(shù)據(jù)調(diào)研

          1. 業(yè)務(wù)調(diào)研

          需要確認(rèn)要規(guī)劃進(jìn)數(shù)倉的業(yè)務(wù)領(lǐng)域,以及各業(yè)務(wù)領(lǐng)域包含的功能模塊,以阿里的業(yè)務(wù)為例,可規(guī)劃如下矩陣:



          2. 需求調(diào)研

          了解需求方關(guān)系哪些指標(biāo)?需要哪些維度、度量?數(shù)據(jù)是否沉淀到匯總層等到。



          三、架構(gòu)設(shè)計(jì)

          1. 數(shù)據(jù)域的劃分

          數(shù)據(jù)域是將業(yè)務(wù)過程或者維度進(jìn)行抽象的集合,一般數(shù)據(jù)域和應(yīng)用系統(tǒng)(功能模塊)有聯(lián)系,可以考慮將同一個(gè)功能模塊系統(tǒng)的業(yè)務(wù)過程劃分到一個(gè)數(shù)據(jù)域:



          2. 構(gòu)建總線矩陣

          在進(jìn)行充分的業(yè)務(wù)調(diào)研和需求調(diào)研后,就要構(gòu)建總線矩陣了,需要做兩件事情:

          1. 明確每個(gè)數(shù)據(jù)域下有哪些業(yè)務(wù)過程。
          2. 業(yè)務(wù)過程與哪些維度相關(guān),并通過總線矩陣定義每個(gè)數(shù)據(jù)域下的業(yè)務(wù)過程和維度:



          四、指標(biāo)體系搭建

          1. 基本概念

          數(shù)據(jù)域:指面向業(yè)務(wù)分析,將業(yè)務(wù)過程或者維度進(jìn)行抽象的集合。

          業(yè)務(wù)過程:指企業(yè)的業(yè)務(wù)活動(dòng)中的事件。

          時(shí)間周期:用來明確數(shù)據(jù)統(tǒng)計(jì)的事件范圍或者時(shí)間點(diǎn),如近30天、截至當(dāng)前。

          修飾類型:對(duì)修飾詞的一種抽象劃分。

          修飾詞:指除統(tǒng)計(jì)維度外指標(biāo)的業(yè)務(wù)場景限定抽象。抽象詞隸屬于一種抽象類型,如訪問終端類型下的pc、安卓、蘋果。

          度量/原子指標(biāo):具有明確含義的業(yè)務(wù)名詞。如:支付金額。

          維度:維度是度量的環(huán)境,用來反應(yīng)業(yè)務(wù)的一類屬性,這類屬性的集合稱為一個(gè)維度,也可以稱為實(shí)體對(duì)象,如地理維度、時(shí)間維度。

          維度屬性:對(duì)維度的描述,隸屬于一個(gè)維度。如:地理維度下的國家、省份。

          派生指標(biāo):原子指標(biāo)+多個(gè)修飾詞(可選)+時(shí)間周期。

          明確原子指標(biāo)、修飾詞、時(shí)間周期和派生指標(biāo)的定義。



          2. 操作細(xì)則

          派生指標(biāo)來源于三類指標(biāo):事務(wù)型指標(biāo)、存量型指標(biāo)和復(fù)合型指標(biāo)。

          事務(wù)型指標(biāo):指對(duì)業(yè)務(wù)活動(dòng)進(jìn)行衡量的指標(biāo)。

          存量型指標(biāo):指對(duì)實(shí)體對(duì)象某些狀態(tài)的統(tǒng)計(jì)。

          復(fù)合型指標(biāo),在上述兩種指標(biāo)基礎(chǔ)上復(fù)合而成的。



          五、模型設(shè)計(jì)

          1. 數(shù)據(jù)分層

          業(yè)界對(duì)數(shù)倉分層的看法大同小異,大體上認(rèn)為分為接入層、中間層和應(yīng)用層三層,不過對(duì)中間層的理解有些差異。



          2. 接入層(ods)

          業(yè)務(wù)數(shù)據(jù)一般是采用dataX或者sqoop等以固定頻率同步到數(shù)倉中構(gòu)建ODS層;

          如果是日志數(shù)據(jù)則通過flume或者Kafka等同步到數(shù)倉中。

          接入層一般不會(huì)對(duì)源數(shù)據(jù)做任何處理、清洗,便于之后回溯。

          3. 明細(xì)層(dwd)

          理論上明細(xì)層數(shù)據(jù)是對(duì)ods層數(shù)據(jù)進(jìn)行清洗加工,提高ods層數(shù)據(jù)的可用性,對(duì)于dwd層數(shù)據(jù)是否同層引用的觀點(diǎn)需要權(quán)衡:

          1. 一般情況下dwd層不建議同層引用,這樣做可以減少明細(xì)層任務(wù)之間的依賴,減少節(jié)點(diǎn)深度。
          2. 但是在某些場景下,ods層到dwd層數(shù)據(jù)加工邏輯復(fù)雜,計(jì)算開銷大,這時(shí)可以權(quán)衡考慮適當(dāng)復(fù)用dwd表來構(gòu)建新的dwd表。

          4. 匯總層(dws)

          這一層依賴我們的指標(biāo)體系,將dwd層的數(shù)據(jù)按照各個(gè)維度進(jìn)行聚合計(jì)算。

          5. 數(shù)據(jù)集市層(dwm)

          當(dāng)我們有一些跨業(yè)務(wù)域的聚合統(tǒng)計(jì)需求時(shí),放到這一層。

          6. 應(yīng)用層(app)

          這一層主要針對(duì)匯總層,進(jìn)行相關(guān)指標(biāo)的組合,生成報(bào)表。


          六、維度設(shè)計(jì)

          維度建模中,將度量稱為事實(shí),維度用于分析事實(shí)所需要的多樣環(huán)境。維度的作用一般是查詢、分類匯總以及排序。

          通過報(bào)表的約束條件,以及之前數(shù)據(jù)調(diào)研和業(yè)務(wù)方的溝通,我們可以獲得維度。

          維度通過主鍵與事實(shí)表進(jìn)行關(guān)聯(lián),維度表的主鍵分為代理鍵和自然鍵兩種;代理鍵不具有業(yè)務(wù)含義,一般用于處理緩慢變化維度,自然鍵則具有業(yè)務(wù)含義。

          1. 維度設(shè)計(jì)基本方法

          1. 選擇或者新建一個(gè)維度,通過之前總線矩陣的構(gòu)建掌握了目前數(shù)倉架構(gòu)中的維度。
          2. 確定主維表。此處主維表一般是ODS表,直接與業(yè)務(wù)系統(tǒng)同步。
          3. 確定相關(guān)維表。數(shù)倉是業(yè)務(wù)源系統(tǒng)的數(shù)據(jù)整合,不同業(yè)務(wù)系統(tǒng)或者同一業(yè)務(wù)系統(tǒng)中的表之間存在關(guān)聯(lián)性。跟據(jù)對(duì)業(yè)務(wù)的梳理,我們可以確認(rèn)哪些表和主維表存在關(guān)聯(lián)關(guān)系,并選擇其中的某些表用于生成維度屬性。
          4. 確定維度屬性。本步驟分為兩階段,第一階段是從主維表中選擇維度屬性或生成新的維度屬性;第二階段是從相關(guān)維表中選擇維度屬性或生成新的維度屬性。

          2. 規(guī)范化和反規(guī)范化

          當(dāng)具有多層次的維度屬性,按照第三范式進(jìn)行規(guī)范化后形成一系列維度表,而非單一維度表,這種建模稱為雪花模式。

          將維度的屬性層次合并到單個(gè)維度中的操作稱為反規(guī)范化。

          3. 一致性維度和交叉探查

          我們存在很多需求是對(duì)于不同數(shù)據(jù)域的業(yè)務(wù)過程或同一數(shù)據(jù)域的不同業(yè)務(wù)過程合并在一起觀察。例如:對(duì)于日志數(shù)據(jù)域統(tǒng)計(jì)商品維度的近一天PV和UV;對(duì)于交易數(shù)據(jù)域統(tǒng)計(jì)商品維度近一天的GMV。

          這種將不同數(shù)據(jù)域的商品事實(shí)合并在一起進(jìn)行數(shù)據(jù)探查,稱為交叉探查。

          數(shù)倉能進(jìn)行交叉探查的前提是,不同數(shù)據(jù)域要具有一致性維度。

          4. 維度整合

          由于數(shù)倉的數(shù)據(jù)源來源于不同的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)之間相互獨(dú)立,因此對(duì)同一信息的描述、存儲(chǔ)都可能具有差異。

          而這些具有差異的數(shù)據(jù)進(jìn)入數(shù)倉后需要整合在一起:

          1. 命名規(guī)范的統(tǒng)一。表名、字段名等統(tǒng)一。
          2. 字段類型的統(tǒng)一。相同和相似字段的字段類型統(tǒng)一。
          3. 公共代碼以及代碼值的統(tǒng)一。
          4. 業(yè)務(wù)含義相同的表的統(tǒng)一。主要依據(jù)高內(nèi)聚、低耦合的理念,將業(yè)務(wù)關(guān)系大,源系統(tǒng)影響差異小的表進(jìn)行整合。

          表級(jí)別的整合主要有兩種形式:

          垂直整合,即不同來源表包含相同的數(shù)據(jù)集,只是存儲(chǔ)的信息不同,可以整合到同一個(gè)維度模型中。

          水平整合,即不同來源表包含不同的數(shù)據(jù)集,這些子集之間無交叉或存在部分交叉,如果有交叉則去重;如果無交叉,考慮不同子集的自然鍵是否沖突,不沖突則可以將各子集自然鍵作為整合后的自然鍵,或者將各自然鍵加工成一個(gè)超自然鍵。

          5. 拉鏈表

          拉鏈表,又稱為極限存儲(chǔ)技術(shù)。假設(shè)某一張表是用來存儲(chǔ)全量用戶信息的,一般我們的處理方式是,用每個(gè)分區(qū)去存儲(chǔ)每天全量數(shù)據(jù)的快照,這種方式的問題是,如果我希望保存用戶的所有歷史狀態(tài),我可能需要永久保存每一個(gè)歷史分區(qū)。

          如果使用拉鏈表,每個(gè)分區(qū)可以保存每個(gè)用戶在當(dāng)天的歷史狀態(tài),同時(shí)歷史分區(qū)也可以進(jìn)行清理。

          這樣,雖然單個(gè)分區(qū)中存儲(chǔ)的數(shù)據(jù)變多了,但是某些歷史分區(qū)的數(shù)據(jù)被清理后,整個(gè)表存儲(chǔ)的數(shù)據(jù)會(huì)變少了,因?yàn)楹芏鄾]有變化的用戶信息快照被清理了。

          6. 微型維度

          微型維度的創(chuàng)建是通過將一部分不穩(wěn)定的屬性從相對(duì)穩(wěn)定的主維度中移除,放置到擁有自己代理鍵的新表來實(shí)現(xiàn)。

          7. 遞歸層次

          遞歸層次指的是某維表的實(shí)例值的層次關(guān)系,維度的遞歸層次分為有固定數(shù)量級(jí)別的均衡層次結(jié)構(gòu)和無固定數(shù)量級(jí)別的非均衡層次結(jié)構(gòu)。

          由于數(shù)倉中一般不支持遞歸SQL的功能來處理這種層次結(jié)構(gòu),所以需要用到其他方式。

          1. 層次結(jié)構(gòu)扁平化,適合均衡層次結(jié)構(gòu)維度。
          2. 層次橋接表,適合非均衡層次結(jié)構(gòu)維度。



          8. 多值維度

          多值維度指事實(shí)表的一條記錄在某維度表中有多條記錄與之對(duì)應(yīng)。

          針對(duì)多值維度,常見的處理方式有三種:

          1. 降低事實(shí)表的粒度。
          2. 列擴(kuò)展。
          3. 較為通用的方式,采用橋接表。

          9. 雜項(xiàng)維度

          雜項(xiàng)維度是由操作型系統(tǒng)中的指示符或者標(biāo)志字段組合而成,一般不在一致性維度之列。

          這些維度如果作為事實(shí)存在事實(shí)表中,則會(huì)導(dǎo)致事實(shí)表占用空間變大;如果單獨(dú)建立維表,則會(huì)出現(xiàn)許多零碎的小維表。

          這時(shí),通常的解決方案是建立雜項(xiàng)維度,將這些字段建立到一個(gè)維表中,在事實(shí)表中只需保存一個(gè)外鍵即可,雜項(xiàng)維度可以理解為將許多小維表通過行轉(zhuǎn)列的方式存儲(chǔ)到一張大維表中的處理方案。

          10. 退化維度

          指維度屬性直接存儲(chǔ)到事實(shí)表中的維度。


          七、事實(shí)表設(shè)計(jì)

          事實(shí)表中一條記錄所表達(dá)的業(yè)務(wù)細(xì)節(jié)程度稱為粒度。

          1. 事實(shí)類型

          作為度量業(yè)務(wù)過程的事實(shí),有可加性、半可加性和不可加性三種類型:

          可加性事實(shí)指可以按照與事實(shí)表關(guān)聯(lián)的任意維度進(jìn)行匯總。

          半可加事實(shí)只能按照特定維度匯總,不能對(duì)所有維度匯總。

          不可加性事實(shí)完全不具備可加性,比如比例事實(shí)。對(duì)于不可加性事實(shí)可考慮分解為可加的組件來實(shí)現(xiàn)聚合。

          2. 事實(shí)表類型

          最常見的事實(shí)表有三種類型:事務(wù)事實(shí)表、周期快照事實(shí)表和累積快照事實(shí)表。

          事務(wù)事實(shí)表用來描述業(yè)務(wù)過程,表示對(duì)應(yīng)時(shí)空上某點(diǎn)的度量事件,保存的是最原子的數(shù)據(jù),也稱為原子事實(shí)表。在實(shí)際使用中,一般作為明細(xì)層使用,例如下單明細(xì)、支付明細(xì)等。

          周期快照事實(shí)表的一行,以具有規(guī)律性的時(shí)間間隔記錄事實(shí)。如每日庫存快照表、每日用戶余額快照表。

          累積快照事實(shí)表用來表述過程開始和結(jié)束之間的關(guān)鍵步驟事件,覆蓋過程的整個(gè)生命周期,通常具有多個(gè)日期字段來記錄關(guān)鍵時(shí)間點(diǎn),當(dāng)過程隨著生命周期不斷變化時(shí),記錄也會(huì)隨著過程的變化而被修改。以事務(wù)事實(shí)表中提到的訂單例子為例,可以做一個(gè)和訂單相關(guān)的,涉及訂單下單、推單、搶單、支付等各個(gè)環(huán)節(jié)的一張訂單全生命周期快照表。

          此外,還有一種無事實(shí)的事實(shí)表,單純只記錄某一動(dòng)作發(fā)生,其事件的量化是非數(shù)字的,比較典型的例子是訪問點(diǎn)擊日志。

          3. 事實(shí)表設(shè)計(jì)原則

          • 盡可能包含所有與業(yè)務(wù)過程相關(guān)的事實(shí)。
          • 只選擇與業(yè)務(wù)過程相關(guān)的事實(shí)。
          • 分解不可加性事實(shí)為可加的組件。
          • 在選擇維度和事實(shí)之前必須先聲明粒度。
          • 在同一個(gè)事實(shí)表中不能有多種不同粒度的事實(shí)。
          • 事實(shí)的單位要保持一致。
          • 對(duì)事實(shí)的null值要處理,建議用0填充。
          • 使用退化維度提高事實(shí)表的易用性。

          4. 事實(shí)表設(shè)計(jì)方法

          1. 選擇業(yè)務(wù)過程及確認(rèn)事實(shí)表類型。
          2. 聲明粒度。
          3. 確定維度。
          4. 確定事實(shí)。
          5. 冗余維度。

          5. 事實(shí)表

          單事務(wù)事實(shí)表,針對(duì)每個(gè)業(yè)務(wù)過程設(shè)計(jì)一個(gè)事實(shí)表。這樣方便對(duì)每個(gè)業(yè)務(wù)過程進(jìn)行獨(dú)立的分析研究。

          多事務(wù)事實(shí)表,將不同的事實(shí)放到同一個(gè)事實(shí)表中,即同一個(gè)事實(shí)表包含不同的業(yè)務(wù)過程。

          多事務(wù)事實(shí)表有兩種方法進(jìn)行事實(shí)處理:

          1. 不同業(yè)務(wù)過程的事實(shí)使用不同的事實(shí)字段進(jìn)行存放;如果不是不是當(dāng)前業(yè)務(wù)過程的度量,可以考慮用0值填充。
          2. 不同業(yè)務(wù)過程的事實(shí)使用同一個(gè)事實(shí)字段進(jìn)行存放,但增加一列作為業(yè)務(wù)過程標(biāo)簽,記錄該事務(wù)是否在當(dāng)天完成。

          關(guān)于多事務(wù)事實(shí)表具體采用哪種方式進(jìn)行事實(shí)處理:

          在實(shí)際應(yīng)用中,當(dāng)業(yè)務(wù)過程度量比較相似、差異不打時(shí),可以采取第二種多事務(wù)事實(shí)表的設(shè)計(jì)方式,使用同一個(gè)字段來表示度量數(shù)據(jù)。但這種方式存在一個(gè)問題,在同一個(gè)周期內(nèi)會(huì)存在多條記錄。

          當(dāng)不同業(yè)務(wù)過程的度量差異較大時(shí),可以選擇第一種多事務(wù)事實(shí)表的設(shè)計(jì)方式,將不同業(yè)務(wù)過程的度量使用不同字段冗余到表中,非當(dāng)前業(yè)務(wù)過程則置為0,這種方式存在的問題是度量字段0值會(huì)比較多。

          具體使用單事務(wù)事實(shí)表還是多事務(wù)事實(shí)表,需要從以下幾點(diǎn)分析:

          1. 業(yè)務(wù)過程

          多個(gè)業(yè)務(wù)過程是否放到同一個(gè)事實(shí)表中,首先需要分析不同業(yè)務(wù)過程之間的相似性和業(yè)務(wù)源系統(tǒng)。

          比如淘寶交易的下單、支付和成功完結(jié)三個(gè)業(yè)務(wù)過程存在相似性,并且都來自于一個(gè)應(yīng)用系統(tǒng)-交易系統(tǒng),適合放到同一個(gè)事務(wù)事實(shí)表。

          2. 粒度和維度

          在考慮是采用單事務(wù)表還是多事務(wù)表時(shí),一個(gè)關(guān)鍵點(diǎn)是粒度和維度。

          在確定好業(yè)務(wù)過程后,需要基于不同的業(yè)務(wù)過程確定粒度和維度,當(dāng)不同業(yè)務(wù)過程的粒度相同,同時(shí)擁有相似維度時(shí),可以考慮采用多事務(wù)事實(shí)表。如果粒度不同,必定是存存儲(chǔ)在不同事務(wù)表中的。

          3. 事實(shí)

          如果單一業(yè)務(wù)過程的事實(shí)較多,同時(shí)不同業(yè)務(wù)過程的事實(shí)又不相同,則考慮使用單事務(wù)事實(shí)表,處理更加清晰;

          若使用多事務(wù)事實(shí)表,則會(huì)導(dǎo)致事實(shí)表零值或空值字段較多。

          4. 下游業(yè)務(wù)使用

          單事務(wù)事實(shí)表對(duì)于下游用戶而言更容易理解,關(guān)注哪個(gè)業(yè)務(wù)過程就使用相應(yīng)的事務(wù)事實(shí)表;而多事務(wù)事實(shí)表包含多個(gè)業(yè)務(wù)過程,用戶使用時(shí)往往較為困惑。

          5. 周期快照事實(shí)表

          事務(wù)事實(shí)表可以很好的跟蹤一個(gè)事件,并進(jìn)行度量分析。

          然后,當(dāng)需要一些狀態(tài)度量時(shí),比如賬戶余額、商品庫存、賣家累積交易額等,則需要聚集與之相關(guān)的事務(wù)才能進(jìn)行識(shí)別計(jì)算,也就是周期快照事實(shí)表。

          周期快照事實(shí)表在確定的間隔內(nèi)對(duì)實(shí)體的度量進(jìn)行抽樣,以研究實(shí)體的度量值,而不需要聚集長期的事務(wù)歷史。

          6.?累積快照事實(shí)表

          對(duì)于類似于研究事件之間時(shí)間間隔的需求,事務(wù)事實(shí)表處理邏輯復(fù)雜且性能差,采用累積快照事實(shí)表可以很好解決。

          快照事實(shí)表中收集到到狀態(tài)度量都是半可加到,不能根據(jù)時(shí)間維度獲得有意義到匯總結(jié)果。

          數(shù)倉在進(jìn)行維度建模時(shí),對(duì)于事務(wù)事實(shí)表和快照事實(shí)表往往都是成對(duì)設(shè)計(jì),互相補(bǔ)充,以滿足更多下游統(tǒng)計(jì)分析需求,特別是在事務(wù)事實(shí)表基礎(chǔ)上可以加工快照事實(shí)表。

          八、其他規(guī)范

          1. 層次調(diào)研約定

          1. 應(yīng)用層優(yōu)先調(diào)用公共層數(shù)據(jù)。
          2. 已經(jīng)存在的中間層數(shù)據(jù),不允許應(yīng)用層跨中間層從ODS層重復(fù)加工數(shù)據(jù)。
          3. 中間層團(tuán)隊(duì)?wèi)?yīng)該積極了解應(yīng)用層數(shù)據(jù)的建設(shè)需求,將公用的數(shù)據(jù)沉淀到公共層,為其他團(tuán)隊(duì)提供數(shù)據(jù)服務(wù)。
          4. 應(yīng)用層團(tuán)隊(duì)也需要積極配合中間層團(tuán)隊(duì)進(jìn)行數(shù)據(jù)公共層建設(shè)的改造和遷移。
          5. 必須避免過度使用ODS層引用和不合理的數(shù)據(jù)復(fù)制和子集合冗余。

          2. 命名規(guī)范

          表命名規(guī)范:<層次><業(yè)務(wù)域名稱><數(shù)據(jù)域名稱><業(yè)務(wù)過程名稱|自定義表名><刷新周期+存儲(chǔ)策略>

          字段命名規(guī)范:



          3. 開發(fā)規(guī)范

          • 總原則
          1. 原則上不能依賴非數(shù)據(jù)團(tuán)隊(duì)節(jié)點(diǎn)。
          2. 未獲得節(jié)點(diǎn)owner許可的情況下,不能擅自修改別人的節(jié)點(diǎn)。
          3. 不能隨意變更節(jié)點(diǎn)owner,必須知會(huì)接收人并得到同意。


          END


          免責(zé)聲明:本文來源公眾號(hào)五分鐘學(xué)大數(shù)據(jù),僅供讀者交流學(xué)習(xí),版權(quán)歸原作者所有,且僅代表作者個(gè)人觀點(diǎn),與本號(hào)立場無關(guān)。若所引用的圖片、數(shù)據(jù)、文字等來源標(biāo)注有誤或涉及侵權(quán)或內(nèi)容不完整,請(qǐng)及時(shí)聯(lián)系小編處理。

          瀏覽 52
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  激情开心成人 | 天天操天天干,天天撸 | 性爱无码免费 | 一级片AA | 青青草在线视频免费观看 |