mondrianSchema編寫(xiě)指南_第1頁(yè)
mondrianSchema編寫(xiě)指南_第2頁(yè)
mondrianSchema編寫(xiě)指南_第3頁(yè)
mondrianSchema編寫(xiě)指南_第4頁(yè)
mondrianSchema編寫(xiě)指南_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、如何設(shè)計(jì)一個(gè)蒙德里安架構(gòu)1. 什么是架構(gòu)?2. schema文件1. 注解3. 邏輯模型1. 立方體2. 措施3. 維度,層次,水平1. 上表的映射維度和層次結(jié)構(gòu)2. “全部”成員3. 時(shí)間維度4. 命令和顯示級(jí)別5. 多層次結(jié)構(gòu)6. 退化的維度7. 內(nèi)聯(lián)表8. 會(huì)員性能和格式化9. 近似水平基數(shù)10. 默認(rèn)度量屬性11. 函數(shù)依賴(lài)的優(yōu)化12. 表提示4. 星型和雪花模式1. 共享維度2. 加入優(yōu)化5. 先進(jìn)的邏輯結(jié)構(gòu)1. 虛擬多維數(shù)據(jù)集2. 父子層次結(jié)構(gòu)1. 調(diào)整父子層次結(jié)構(gòu)2. 暫停辦理股份過(guò)戶(hù)表格3. 填充關(guān)閉表3. 成員屬性4. 計(jì)算成員5. 命名集6. 插件1. 用戶(hù)定義的函數(shù)2.

2、會(huì)員讀者3. 手機(jī)閱讀器4. 手機(jī)格式化5. 會(huì)員格式化6. 物業(yè)格式化7. 架構(gòu)處理器8. 數(shù)據(jù)源的變化監(jiān)聽(tīng)器9. 動(dòng)態(tài)數(shù)據(jù)源xmla的servlet7. 國(guó)際化8. 聚合表9. 訪問(wèn)控制1. 定義角色2. 匯總政策3. 聯(lián)盟的作用4. 設(shè)置一個(gè)連接的作用10. 附錄a:xml元素1。什么是架構(gòu)?一個(gè)模式定義了一個(gè)多維數(shù)據(jù)庫(kù)。它包含了一個(gè)邏輯模型,由立方體,層次結(jié)構(gòu)和成員組成的,這個(gè)模型到物理模型的映射。的邏輯模型的構(gòu)造用于在mdx語(yǔ)言編寫(xiě)查詢(xún):立方體,維度,層次,水平,和成員組成。的物理模型是通過(guò)邏輯模型的數(shù)據(jù)源。它通常是一個(gè)星型模式,它是一組在關(guān)系數(shù)據(jù)庫(kù)中的表后,我們將看到其它類(lèi)型的映射

3、的例子。2。schema文件蒙德里安架構(gòu)是在一個(gè)xml文件中表示。一個(gè)例子模式,包含幾乎所有的結(jié)構(gòu),我們?cè)谶@里討論,提供作為演示/ foodmart.xml在蒙德里安分布。該數(shù)據(jù)集來(lái)填充這個(gè)模式中的分布。目前,只有這樣,才能創(chuàng)建一個(gè)模式是在文本編輯器中編輯一個(gè)架構(gòu)的xml文件。xml語(yǔ)法不是太復(fù)雜,所以這并不困難,因?yàn)樗穆曇?,特別是如果你使用的foodmart模式為指導(dǎo)的例子。的xml文檔的結(jié)構(gòu)如下所示:aggelementsaggelements關(guān)系有關(guān): =關(guān)系aggelement : =注:xml元素的順序是非常重要的。例如,的的元素有發(fā)生內(nèi)的元素后所有集合,和元素。如果包括它前第一元

4、素,其余的架構(gòu)將被忽略。每個(gè)xml元素的內(nèi)容在附錄a中的xml架構(gòu)。2.1注釋主要元素類(lèi)型(模式,多維數(shù)據(jù)集,虛擬多維數(shù)據(jù)集,共享維度,維度,層次結(jié)構(gòu),水平,測(cè)量,計(jì)算成員)支持注釋。注解是一個(gè)用戶(hù)定義的屬性相關(guān)聯(lián)的元數(shù)據(jù)元素的方式,特別是,允許工具來(lái)添加元數(shù)據(jù),而不延伸官方蒙德里安架構(gòu)。創(chuàng)建一個(gè)希望注釋的元素(通常是第一個(gè)子元素,但檢查的架構(gòu)定義詳細(xì)信息)的一個(gè)子元素,包括一個(gè)數(shù)量的元素。元素的名稱(chēng)在他們的元素必須是唯一的。如果您要添加注釋?zhuān)灾С帜惚3忠粋€(gè)特定的工具,仔細(xì)選擇注釋的名稱(chēng),以確保它們不沖突具有與其他工具所使用的注釋。以下示例顯示了“作者”和“日期”標(biāo)注連接到一個(gè)對(duì)象。弗雷德打

5、火石 10,000 bc.3。邏輯模型最重要的組成模式的多維數(shù)據(jù)集,措施和尺寸: 一個(gè)多維數(shù)據(jù)集是一個(gè)集合在一個(gè)特定的學(xué)科領(lǐng)域的尺寸和措施。 一個(gè)措施是,你有興趣在測(cè)量的數(shù)量,例如,單位銷(xiāo)售的產(chǎn)品或存貨項(xiàng)目的成本價(jià)。 一個(gè)維度是屬性或?qū)傩约?,通過(guò)它可以劃分成子類(lèi)的措施。例如,您可能希望打破產(chǎn)品銷(xiāo)售它們的顏色,性別的顧客,商店在出售該產(chǎn)品,膚色,性別,和存儲(chǔ)所有尺寸。讓我們來(lái)看看在xml定義一個(gè)簡(jiǎn)單的模式。尺寸名稱(chēng)=“時(shí)間”foreignkey =的“time_id”和層次hasall =“假”的primarykey =的“time_id”此架構(gòu)包含一個(gè)多維數(shù)據(jù)集,名為“銷(xiāo)售”。銷(xiāo)售多維數(shù)據(jù)集有

6、兩個(gè)維度,“時(shí)間”,“性別”和四項(xiàng)措施,“銷(xiāo)量”,“店鋪銷(xiāo)售”,“存儲(chǔ)成本”和“利潤(rùn)”。在此模式中,我們可以寫(xiě)一個(gè)mdx查詢(xún):select 措施 銷(xiāo)量,措施。店面銷(xiāo)售 on columns, 后代(時(shí)間。1997 q1) on rowsfrom 銷(xiāo)售where 性別。 f這個(gè)查詢(xún)是指銷(xiāo)售多維數(shù)據(jù)集(銷(xiāo)售),每個(gè)尺寸措施,時(shí)間,性別,和各成員的那些尺寸。結(jié)果如下:時(shí)間措施 單位銷(xiāo)售措施 店面銷(xiāo)售1997 q1001997 q1 2010年12月001997 q1 2010年12月001997年 q1 日00現(xiàn)在,讓我們來(lái)看看更詳細(xì)的架構(gòu)定義。3.1立方多維數(shù)據(jù)集(見(jiàn))的命名集合的措施和尺寸。的措

7、施和尺寸有共同的一件事是事實(shí)表,在這里“sales_fact_1997”。正如我們將要看到的,事實(shí)表保存列計(jì)算哪些措施,并包含持有的尺寸表。.該事實(shí)表定義使用元素的。如果事實(shí)表是不是在默認(rèn)模式中,你可以使用“模式”屬性提供一個(gè)明確的模式,例如您也可以使用建設(shè),以建立更復(fù)雜的sql語(yǔ)句。不支持結(jié)構(gòu)的事實(shí)表。3.2措施銷(xiāo)售多維數(shù)據(jù)集定義了若干措施,包括“單位銷(xiāo)售”和“店鋪銷(xiāo)售”。每個(gè)測(cè)量(見(jiàn))都有一個(gè)名字,在事實(shí)表中的列和聚合。聚合通常是“求和”,但“計(jì)數(shù)”,“最小值”,“最大值”,“平均”,和“不同的數(shù)”也是允許的,“不同的數(shù)”有一定的局限性,如果您的多維數(shù)據(jù)集包含父父子層次結(jié)構(gòu)。可選的數(shù)據(jù)類(lèi)型

8、屬性指定單元格的值表示在蒙德里安的緩存,以及它們是如何通過(guò)xml返回分析。數(shù)據(jù)類(lèi)型屬性的值可以有“字符串“,”整數(shù)“,”數(shù)字“,”布爾“,”日期“,”時(shí)間“和”時(shí)間戳“。默認(rèn)值是“數(shù)字“,除了”數(shù)“和”獨(dú)特的計(jì)數(shù)“的措施,這是”整數(shù)“。一個(gè)可選的formatstring屬性指定的值是如何被打印。在這里,我們選擇了輸出單元的銷(xiāo)售沒(méi)有小數(shù)位(因?yàn)樗且粋€(gè)整數(shù)),以及同店銷(xiāo)售額(因?yàn)樗且粋€(gè)貨幣值)小數(shù)點(diǎn)后兩位。,和。符號(hào)是語(yǔ)言環(huán)境敏感,所以如果你是在意大利,同店銷(xiāo)售額可能會(huì)出現(xiàn)“48.123,45”。您可以實(shí)現(xiàn)更野的影響,采用先進(jìn)的格式字符串。一項(xiàng)措施可以有一個(gè)標(biāo)題的名稱(chēng)member.getcap

9、tion()方法,而不是要返回的屬性。定義一個(gè)特定的標(biāo)題有一定道理特殊字母(如:或)要顯示:的措施,而不是來(lái)自一列,可以使用一個(gè)細(xì)胞器,或測(cè)量可以使用sql表達(dá)式來(lái)計(jì)算其價(jià)值?!按龠M(jìn)銷(xiāo)售”的措施是一個(gè)這樣的例子。(時(shí)sales_fact_1997.promotion_id =0,那么0的其他sales_fact_1997.store_sales結(jié)束)在這種情況下,銷(xiāo)售僅包括在求和,如果它們對(duì)應(yīng)到一個(gè)促進(jìn)銷(xiāo)售。可以使用任意的sql表達(dá)式,包括子查詢(xún)。但是,基本的數(shù)據(jù)庫(kù)必須能夠支持sql表達(dá)式的一個(gè)總的背景下。不同的數(shù)據(jù)庫(kù)之間的語(yǔ)法變化是由指定的sql標(biāo)簽的方言。為了提供一個(gè)特定的格式的單元格的值

10、,這一措施可以使用一個(gè)信元格式化器。3.3尺寸,層級(jí),級(jí)別一些更多的定義: 一個(gè)成員是由一組特定的屬性值的維度內(nèi)的一個(gè)點(diǎn)。性別等級(jí)的兩名成員“m”和“f”?!芭f金山”,“加州”和“美國(guó)”的存儲(chǔ)層次結(jié)構(gòu)的所有成員。 一個(gè)層次是一組的成員組織成一個(gè)結(jié)構(gòu),方便地進(jìn)行分析。例如,存儲(chǔ)層次結(jié)構(gòu)由商店的名稱(chēng),城市,州和國(guó)家。層次結(jié)構(gòu)允許你形成中間小計(jì)的分的總的狀態(tài)是在該州的所有的城市總數(shù)的總和,其中每個(gè)子的門(mén)店總數(shù)的總和這個(gè)城市。 甲水平的部件具有相同的距離從該層次結(jié)構(gòu)的根目錄是一個(gè)集合。 一個(gè)維度是一家集區(qū)分同一的事實(shí)表的屬性(比方說(shuō),當(dāng)天發(fā)生的銷(xiāo)售)的層次結(jié)構(gòu)。對(duì)于均勻性的原因,措施被視為一個(gè)特殊的維

11、度成員,被稱(chēng)為“辦法”。一個(gè)例子讓我們來(lái)看看一個(gè)簡(jiǎn)單的尺寸。此維由一個(gè)單一的層次結(jié)構(gòu),它由一個(gè)單一的稱(chēng)為性別。(正如我們將要看到以后,有一個(gè)特殊的稱(chēng)為(所有)包含總計(jì))。從性別“列的值的尺寸來(lái)在客戶(hù)表?!靶詣e”列包含兩個(gè)值,f和m,因此性別維包含的成員性別 f和性別 m。對(duì)于任何給定的銷(xiāo)售,性別層面的性別,購(gòu)買(mǎi)的顧客。加入的事實(shí)表“sales_fact_1997.customer_id的”,以尺寸表“customer.customer_id的”,這是表示。3.3.1到表的映射維度和層次結(jié)構(gòu)通過(guò)一對(duì)列,一個(gè)事實(shí)表,維度表中的其他維度是加入到多維數(shù)據(jù)集。的元素有一個(gè)的foreignkey的屬性,這

12、是一個(gè)事實(shí)表中的列的名稱(chēng),在元素有一個(gè)primarykey的屬性。如果層次結(jié)構(gòu)中有一個(gè)以上的表,你可以消除歧義使用primarykeytable屬性。列屬性定義的關(guān)鍵水平。它必須是水平的表中的列的名稱(chēng)。如果該鍵是一個(gè)表達(dá)式,你可以改用的元素內(nèi)的水平。以下是等同于上述的例子: customer.gender 其他屬性的,的有相應(yīng)的嵌套元素:父元素屬性等效嵌套元素描述柱關(guān)鍵的水平。的namecolumn表達(dá)式定義此級(jí)別的成員的名稱(chēng)。如果未指定,水平的關(guān)鍵。ordinalcolumn表達(dá)式定義的成員順序。如果未指定,水平的關(guān)鍵。captioncolumn形成的標(biāo)題成員的表達(dá)。如果未指定,則使用級(jí)別名

13、稱(chēng)。parentcolumn表達(dá)一個(gè)父子層次結(jié)構(gòu)中的子成員引用他們的父成員。中未指定的定期的層次結(jié)構(gòu)。柱sql表達(dá)式來(lái)計(jì)算的測(cè)量值(sql聚合函數(shù)的參數(shù))。柱sql表達(dá)式來(lái)計(jì)算屬性的值。uniquemembers屬性是用來(lái)優(yōu)化sql生成。如果你知道一個(gè)給定的維度表中的列的值是唯一的,所有其他值在該列在的父級(jí),然后設(shè)置uniquemembers的“真”,否則,設(shè)置為“假”。例如,一個(gè)時(shí)間維度,如年,月有uniquemembers =“假”,在每月的水平,在同一個(gè)月出現(xiàn)在不同年份。另一方面,如果你有一個(gè)產(chǎn)品類(lèi)別 產(chǎn)品名稱(chēng)層次,和你一定產(chǎn)品名稱(chēng)是獨(dú)一無(wú)二的,那么你可以設(shè)置uniquemembers

14、=“true”。如果你不知道,然后設(shè)置uniquemembers =“假”。在頂層,這將永遠(yuǎn)是uniquemembers =“true”,有沒(méi)有父級(jí)。highcardinality屬性用于通知蒙德里安有此維度的元素的數(shù)量是不確定的和非常高的??山邮艿闹凳钦婊蚣俚模ㄗ詈笠粋€(gè)是默認(rèn)值)。維度元素在整個(gè)組執(zhí)行的動(dòng)作時(shí),不能執(zhí)行使用highcardinality =“true”的。3.3.2“所有”成員默認(rèn)情況下,每個(gè)層次都包含一個(gè)頂級(jí)水平,被稱(chēng)為“(全部)“,其中包含一個(gè)單一的成員被稱(chēng)為”(所有的hierarchyname)。此會(huì)員是父母的所有其他成員的層次結(jié)構(gòu),從而代表了總計(jì)。它也是默認(rèn)成員的層次

15、結(jié)構(gòu)中,即,用于計(jì)算單元格的值時(shí)不包括一個(gè)軸或在限幅器的層次結(jié)構(gòu)的構(gòu)件,其。的allmembername和alllevelname屬性將覆蓋所有級(jí)別和所有成員的默認(rèn)名稱(chēng)。如果元件具有hasall =“假”,“所有”的電平被抑制。該維度的默認(rèn)成員將現(xiàn)在的第一級(jí)中的第一個(gè)成員,例如,它會(huì)在時(shí)間層次結(jié)構(gòu),層次結(jié)構(gòu)中的第一年。更改默認(rèn)的成員可以是混亂的,因此你通常應(yīng)該使用hasall =“true”。元素也有defaultmember的屬性,覆蓋的層次結(jié)構(gòu)的默認(rèn)成員:.3.3.3時(shí)間維度時(shí)間維度不同編碼的年/月/周/日的基礎(chǔ)上的蒙德里安架構(gòu)中,由于mdx與時(shí)間相關(guān)的功能,例如: parallelper

16、iod(水平,指數(shù)注冊(cè)會(huì)員) periodstodate(級(jí)成員) wtd(成員) mtd(成員) qtd(成員) ytd(成員) lastperiod(指數(shù)注冊(cè)會(huì)員)時(shí)間維度鍵入=“timedimension”,。的電平在時(shí)間維度中的作用是由水平的leveltype的屬性,其允許的值如下所示:leveltype值意思timeyears級(jí)為一年timequarters級(jí)為四分之一timemonths級(jí)為一個(gè)月timeweeks級(jí)為一個(gè)星期timedays級(jí)別代表天下面是一個(gè)例子的時(shí)間維度:尺寸名稱(chēng)=“時(shí)間”類(lèi)型=“timedimension”層次hasall =“true”allmembern

17、ame =“期間”的primarykey =的“dateid”3.3.4順序和顯示的水平請(qǐng)注意,在上面的例子的ordinalcolumn的namecolumn屬性的元素的時(shí)間層次。這些影響的結(jié)果顯示在水平如何。ordinalcolumn屬性指定層次結(jié)構(gòu)表中的一列,提供的順序在一個(gè)給定的水平,而名稱(chēng)列指定 的列將顯示。例如,在上面本月水平,datehierarchy表具有個(gè)月(1 . 12)和month_name(一月,二月,.)的列。將在內(nèi)部使用的mdx月列的列值,所以有效的成員規(guī)格的形式為:時(shí)間 2005。q1。1。月水平的成員,將顯示的順序一月,二月,等在父子層次結(jié)構(gòu),成員總是按層次結(jié)構(gòu)順

18、序。ordinalcolumn屬性控制的順序出現(xiàn)在他們的父母兄弟姐妹。序列可能是任何數(shù)據(jù)類(lèi)型,可以合法地使用在order by子句中。訂購(gòu)的范圍是每母公司,因此,在上面的例子中,day_in_month列應(yīng)周期的每一個(gè)月。返回值的jdbc驅(qū)動(dòng)程序應(yīng)該非空的情況下,java.lang.comparable的其中產(chǎn)量所需的訂貨時(shí),他們的cpareto方法被調(diào)用。級(jí)別包含一個(gè)類(lèi)型屬性,它可以有值“字符串“,”整數(shù)“,”數(shù)字“,”布爾“,”日期“,”時(shí)間“和”時(shí)間戳“。默認(rèn)值是“數(shù)字”,因?yàn)殒I列通常有一個(gè)數(shù)字類(lèi)型。如果它是一個(gè)不同的類(lèi)型,蒙德里安需要知道,這樣它可以正確生成s

19、ql語(yǔ)句,例如,字符串值,將產(chǎn)生單引號(hào)括起來(lái):其中,productsku = 123-455-aa3.3.5多層次結(jié)構(gòu)維度可以包含多個(gè)層次:尺寸名稱(chēng)=“時(shí)間”foreignkey =的“time_id”和層次hasall =“假”的primarykey =的“time_id”層次名稱(chēng)=“時(shí)代周刊”hasall,“假”的primarykey =的“time_id”請(qǐng)注意,第一層次不有一個(gè)名字。默認(rèn)情況下,層次結(jié)構(gòu)具有相同的名稱(chēng)作為它的尺寸,因此,第一層次是所謂的“時(shí)間”。這些層次都沒(méi)有太多的共同之處-他們甚至不具有相同的表!-除了他們加入事實(shí)數(shù)據(jù)表中的同一列,的“time_id”。主要的原因是因

20、為它把兩個(gè)在同一維度中的層次結(jié)構(gòu)更有意義的最終用戶(hù),最終用戶(hù)都知道,它是沒(méi)有意義的“時(shí)代”一軸“時(shí)代周刊”的層次上層次另一軸。如果兩個(gè)層次都是一樣的尺寸,mdx語(yǔ)言的強(qiáng)制執(zhí)行常識(shí),不允許你在同一查詢(xún)中使用它們。3.3.6退化的維度一個(gè)退化的維度是一個(gè)維度是如此簡(jiǎn)單,這是不值得創(chuàng)建自己的尺寸表。例如,請(qǐng)考慮以下事實(shí)數(shù)據(jù)表:產(chǎn)品資料time_idpayment_methodcustomer_idstore_iditem_count美元5520040106信用1232233.54美元7820040106現(xiàn)金8922120.00美元19920040107自動(dòng)取款機(jī)32222.99美元552004010

21、6現(xiàn)金1222211.18美元并假設(shè)我們創(chuàng)造了一個(gè)維度表的值在payment_method列:payment_method信用現(xiàn)金自動(dòng)取款機(jī)這是相當(dāng)沒(méi)有意義的維度表中。它有3個(gè)值,不會(huì)增加任何額外的信息,和一個(gè)額外的連接所產(chǎn)生的成本。相反,你可以創(chuàng)建一個(gè)退化的維度。要做到這一點(diǎn),不表,申報(bào)的尺寸和蒙德里安將承擔(dān)來(lái)自事實(shí)數(shù)據(jù)表的列。多維數(shù)據(jù)集名稱(chēng)=“結(jié)帳”表名=“結(jié)帳”請(qǐng)注意,因?yàn)闆](méi)有加入,“foreignkey屬性尺寸是沒(méi)有必要的,并且層 次元素沒(méi)有的子元素或primarykey的屬性。3.3.7內(nèi)聯(lián)表inlinetable結(jié)構(gòu)允許你定義一個(gè)數(shù)據(jù)集架構(gòu)中的文件。您必須聲明的名字列,列類(lèi)型(“字

22、符串”或“數(shù)字”),以及一組行。和,你必須提供一個(gè)唯一的別名,參考的數(shù)據(jù)集。下面是一個(gè)例子:columndef名稱(chēng)=“desc”類(lèi)型=“字符串”/ 1 高 2 中 3 這具有相同的效果,如果你有一個(gè)表,在你的數(shù)據(jù)庫(kù)被稱(chēng)為“嚴(yán)重程度”:id遞減1高2中3低和聲明要指定null值的列,省略的,該列,該列的值將默認(rèn)為null。3.3.8會(huì)員性能和格式化正如我們將在后面看到的,水平清晰度也可以定義成員屬性和成員格式化。3.3.9近似水平基數(shù)元素允許,指定可選屬性“approxrowcount”的。指定approxrowcount可以提高性能,減少了需要來(lái)確定級(jí)別,層次結(jié)構(gòu)和尺寸基數(shù)。通過(guò)xmla連接時(shí)

23、,蒙德里安,這可以有一個(gè)顯著的影響。3.3.10默認(rèn)度量屬性的和元素讓指定可選屬性的“defaultmeasure”的。指定defaultmeasure元素,允許用戶(hù)顯式地指定任何基礎(chǔ)的措施,作為一個(gè)默認(rèn)的措施。指定defaultmeasure元素,讓用戶(hù),明確地指定任何virtualcube的測(cè)量,作為一個(gè)默認(rèn)的措施。需要注意的是,如果未指定一個(gè)默認(rèn)的措施,它采取的第一項(xiàng)措施中定義的多維數(shù)據(jù)集作為默認(rèn)的措施。在虛擬多維數(shù)據(jù)集的情況下,便拿起一壘措施的第一個(gè)多維數(shù)據(jù)集內(nèi)定義的默認(rèn)。指定defaultmeasure明確的情況下,你會(huì)想拿起一個(gè)計(jì)算成員作為默認(rèn)的措施將是有益的。為方便起見(jiàn),計(jì)算出的

24、構(gòu)件可以被定義在一個(gè)基地立方體,并指定為在虛擬數(shù)據(jù)集defaultmeasure。多維數(shù)據(jù)集的名稱(chēng)=“銷(xiāo)售”defaultmeasure中“單位銷(xiāo)售”. 措施 銷(xiāo)售賣(mài)場(chǎng) - 措施 保存費(fèi)用 .virtualcube名稱(chēng)=“倉(cāng)庫(kù)及銷(xiāo)售”defaultmeasure,“利潤(rùn)”.3.3.11函數(shù)依賴(lài)的優(yōu)化在某些情況下,有可能通過(guò)利用已知的函數(shù)依賴(lài)于正在處理的數(shù)據(jù),以?xún)?yōu)化性能。這種依賴(lài)是典型的生產(chǎn)數(shù)據(jù)系統(tǒng)相關(guān)的業(yè)務(wù)規(guī)則的結(jié)果,往往并不能推斷說(shuō),只是看數(shù)據(jù)本身。功能依賴(lài)關(guān)系被宣布為蒙德里安使用的dependsonlevelvalue的元素的屬性和屬性的元素uniquekeylevelname的。的dep

25、endsonlevelvalue屬性的成員屬性是用來(lái)表示的成員屬性的值在功能上依賴(lài)于該成員屬性被定義的的價(jià)值。換言之,對(duì)于一個(gè)給定的電平值,該屬性值是不變的。的uniquekeylevelname一個(gè)屬性用于指示給定的電平的(如果有的話(huà))一起在層次結(jié)構(gòu)中的所有較高級(jí)別作為一個(gè)獨(dú)特的候補(bǔ)鍵,確保這些電平值的任何獨(dú)特的組合,是完全有一個(gè)組合值低于它的級(jí)別。為了說(shuō)明這一點(diǎn),考慮的層次結(jié)構(gòu)模型的構(gòu)建和許可在美國(guó)的汽車(chē):在上面的例子中,我們知道,一個(gè)給定的生產(chǎn)廠只存在于一個(gè)單一的城市和國(guó)家,一個(gè)給定的車(chē)只有一個(gè)配色方案和一個(gè)修剪水平,并與一個(gè)單一的國(guó)家,許可證號(hào)。因此,我們可以說(shuō),所有的這些成員屬性在功

26、能上依賴(lài)于相關(guān)的值。此外,我們知道車(chē)輛識(shí)別號(hào)碼唯一地標(biāo)識(shí)每節(jié)車(chē)廂,每節(jié)車(chē)廂只有一個(gè)許可證。因此,我們知道的品牌,型號(hào),生產(chǎn)廠,以及車(chē)輛識(shí)別號(hào)碼的組合唯一地標(biāo)識(shí)每個(gè)車(chē)輛的牌照號(hào)碼是多余的。這些特點(diǎn)使優(yōu)化的group by子句中的sql語(yǔ)句蒙德里安產(chǎn)生。如果沒(méi)有任何功能依賴(lài)信息,一個(gè)典型的查詢(xún)的汽車(chē)尺寸上看起來(lái)是這樣的:選擇automotive_dimmake_id為c0,automotive_dim。model_id為c1,automotive_dim。plant_id為c2,automotive_dim。plant_state_id為c3,automotive_dim。plant_city_i

27、d為c4,automotive_dim。vehicle_id為c5,automotive_dim。color_idc6,automotive_dim。trim_id為c7,automotive_dim。license_id為c8,automotive_dim。license_state_id為c9從automotive_dim:automotive_dim,group byautomotive_dim。make_id,automotive_dim。model_id,automotive_dim。plant_id,automotive_dim。plant_state_id,automotive_

28、dim。plant_city_id,automotive_dim。vehicle_id,automotive_dim。color_id,automotive_dim。trim_id,automotive_dim。license_id,automotive_dim。license_state_idorder by.然而,由于功能的依賴(lài)屬性的架構(gòu)上面的例子中,我們知道該查詢(xún)選擇的深度,包括“唯一鍵”的水平,而且所有屬性的查詢(xún)功能也依賴(lài)于他們的水平。在這種情況下,group by子句是多余的,完全可能會(huì)被淘汰,顯著提高sql查詢(xún)的性能在某些數(shù)據(jù)庫(kù):選擇automotive_dimmake_id為c0

29、,automotive_dim。model_id為c1,automotive_dim。plant_id為c2,automotive_dim。plant_state_id為c3,automotive_dim。plant_city_id為c4,automotive_dim。vehicle_id為c5,automotive_dim。color_idc6,automotive_dim。trim_id為c7,automotive_dim。license_id為c8,automotive_dim。license_state_id為c9從automotive_dim:automotive_dim,order

30、 by.如果查詢(xún)沒(méi)有得到足夠深,包括“唯一鍵”的水平,或有任何成員屬性不優(yōu)化功能依賴(lài)于自己的水平,這是不可能的。在某些情況下,不同的優(yōu)化可以由那里是沒(méi)有“唯一鍵”電平,但成員屬性中的一些或所有的功能依賴(lài)于他們的水平。有些數(shù)據(jù)庫(kù)(尤其是mysql)的允許被列在select子句中不也出現(xiàn)在group by子句中的列。在這樣的數(shù)據(jù)庫(kù)中,蒙德里安可以簡(jiǎn)單地離開(kāi)功能相關(guān)的成員屬性的group by,這可能會(huì)降低sql查詢(xún)處理時(shí)間明顯:選擇automotive_dimmake_id為c0,automotive_dim。model_id為c1,automotive_dim。plant_id為c2,autom

31、otive_dim。plant_state_id為c3,automotive_dim。plant_city_id為c4,automotive_dim。vehicle_id為c5,automotive_dim。color_idc6,automotive_dim。trim_id為c7,automotive_dim。license_id為c8,automotive_dim。license_state_id為c9從automotive_dim:automotive_dim,group byautomotive_dim。make_id,automotive_dim。model_id,automotive

32、_dim。plant_id,automotive_dim。vehicle_id,automotive_dim。license_id,order by.請(qǐng)注意重大變化預(yù)計(jì)將在蒙德里安4.0語(yǔ)法的模式,包括一種新的方法來(lái)聲明函數(shù)依賴(lài)。雖然期待的是,與蒙德里安3.1架構(gòu)開(kāi)發(fā)的4.0架構(gòu)的處理器將保持向后兼容性,這些都是過(guò)渡性的屬性,在此期間推出可支持4.0將不會(huì)向后兼容。因此,使用這些屬性的任何模式都需要升級(jí)到蒙德里安4.0的一部分遷移到新的語(yǔ)法。3.3.12表提示蒙德里安支持一組有限的數(shù)據(jù)庫(kù)特定的提示的元素,然后將其傳遞給sql查詢(xún)的表。這些提示如下:數(shù)據(jù)庫(kù)提示類(lèi)型允許的值描述mysql的forc

33、e_index該表上的索引的名稱(chēng)強(qiáng)制選擇電平值時(shí),從該表中使用的命名的索引。例如: my_index 與依賴(lài)的功能優(yōu)化,支持表提示是一個(gè)過(guò)渡階段,有可能改變,在蒙德里安4.0。任何使用它們的架構(gòu),可能需要遷移到新的架構(gòu)語(yǔ)法升級(jí)到蒙德里安4.0的一部分。4。星型和雪花模式前面我們看到如何建立一個(gè)基于多維數(shù)據(jù)集的事實(shí)表和事實(shí)表中的(“付款方式”),并在一個(gè)表中的尺寸,加入到事實(shí)表(“性別”)。這是最常見(jiàn)的一種映射,被稱(chēng)為一個(gè)星型模式。但尺寸可以根據(jù)一個(gè)以上的表,有一個(gè)明確的路徑加入到這些表到事實(shí)表中。這種尺寸被稱(chēng)為雪花,是指用加入操作符。例如:.加入leftkey =“product_class_key”的rightalias 的“product_class”rightkey =的“product_class_id”加入leftkey =“product_type_id的”rightkey =的“product_type_id”這定義了一個(gè)“產(chǎn)品”維度,包括三個(gè)表。事實(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論