數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的制作方法
【專(zhuān)利說(shuō)明】數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)
【背景技術(shù)】
[0001] 數(shù)據(jù)庫(kù)廣泛用于許多應(yīng)用領(lǐng)域中的數(shù)據(jù)存儲(chǔ)。通過(guò)利用適當(dāng)?shù)牟樵?xún)語(yǔ)言將查詢(xún)發(fā) 送到數(shù)據(jù)庫(kù),可以從數(shù)據(jù)庫(kù)中高效地訪(fǎng)問(wèn)數(shù)據(jù)。查詢(xún)結(jié)果隨后由用于所涉及的特定任務(wù)的 下游進(jìn)程來(lái)使用。然而,典型地,下游進(jìn)程期望來(lái)自數(shù)據(jù)庫(kù)的特定形式的查詢(xún)結(jié)果。這意味 著,典型地需要編寫(xiě)中間或鏈接軟件來(lái)從現(xiàn)有的數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)并且在輸入到下游進(jìn)程之 前操縱該數(shù)據(jù)。結(jié)果,由下游進(jìn)程對(duì)來(lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)訪(fǎng)問(wèn)可能是低效的。而且,中間或鏈 接軟件典型地需要針對(duì)特定下游進(jìn)程專(zhuān)門(mén)編寫(xiě),而這樣耗時(shí)且易于出錯(cuò)。在其中使用大量 數(shù)據(jù)并且其中發(fā)生缺失值、異常值、錯(cuò)誤值以及與數(shù)據(jù)相關(guān)的其他問(wèn)題的應(yīng)用領(lǐng)域中這些 問(wèn)題尤其嚴(yán)重。
[0002] 這些類(lèi)型的應(yīng)用領(lǐng)域包括機(jī)器學(xué)習(xí)應(yīng)用,其中,使用大量的數(shù)據(jù)經(jīng)常是有益的,因 為這使得能夠?qū)崿F(xiàn)更佳的學(xué)習(xí)結(jié)果。然而,在要訪(fǎng)問(wèn)大量的數(shù)據(jù)的情況下,通過(guò)中間或鏈接 軟件進(jìn)行數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)的任何低效都加劇。
[0003] 下述的實(shí)施例不限于用于解決已知數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)系統(tǒng)的任意或全部缺點(diǎn)的實(shí)現(xiàn)方 式。
【發(fā)明內(nèi)容】
[0004] 下面呈現(xiàn)了對(duì)公開(kāi)內(nèi)容的簡(jiǎn)要概述,以便向讀者提供基本的理解。該概述不是對(duì) 公開(kāi)內(nèi)容的泛泛概述,并且其不識(shí)別關(guān)鍵/重要要素或描繪說(shuō)明書(shū)的范圍。其唯一目的是以 簡(jiǎn)化形式提供對(duì)本文公開(kāi)的構(gòu)思的選擇,以作為對(duì)之后呈現(xiàn)的更詳細(xì)說(shuō)明的前序。
[0005] 描述了數(shù)據(jù)庫(kù)訪(fǎng)問(wèn),例如,其中,數(shù)據(jù)庫(kù)中的數(shù)據(jù)是由推斷引擎來(lái)訪(fǎng)問(wèn)的。在各個(gè) 示例中,推斷引擎執(zhí)行推斷算法來(lái)從數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)數(shù)據(jù)并且利用所述數(shù)據(jù)來(lái)執(zhí)行推斷。在示 例中,推斷算法是根據(jù)數(shù)據(jù)庫(kù)的模式來(lái)編譯的,數(shù)據(jù)庫(kù)的模式是由數(shù)據(jù)庫(kù)中的數(shù)據(jù)上的概 率分布的表達(dá)式來(lái)注釋的。在各個(gè)示例中,通過(guò)將一個(gè)或多個(gè)潛在(latent)列或潛在表添 加到模式中以存儲(chǔ)要由推斷引擎推斷的數(shù)據(jù),來(lái)修改數(shù)據(jù)庫(kù)的模式。在示例中,表達(dá)式是組 合的,因此,例如用于注釋數(shù)據(jù)庫(kù)表的列的表達(dá)式可以用作注釋該數(shù)據(jù)庫(kù)的另一列的表達(dá) 式的一部分。
[0006] 由于通過(guò)參考下面結(jié)合附圖考慮的詳細(xì)描述而更好地理解許多伴隨的特征,因此 將更容易地意識(shí)到這些特征。
【附圖說(shuō)明】
[0007] 根據(jù)附圖來(lái)閱讀下面的詳細(xì)描述,將更好地理解本描述,在附圖中:
[0008] 圖1是具有用于訪(fǎng)問(wèn)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件的數(shù)據(jù)庫(kù)管理工具的示 意圖;
[0009] 圖2是關(guān)系數(shù)據(jù)庫(kù)模式以及添加到該關(guān)系數(shù)據(jù)庫(kù)模式中的潛在表和注釋的示意 圖;
[0010] 圖3是圖1的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件處的方法的流程圖;
[0011] 圖4是關(guān)系數(shù)據(jù)庫(kù)的示例;
[0012] 圖5是推斷引擎處的方法的流程圖;
[0013] 圖6是關(guān)系數(shù)據(jù)庫(kù)的示意圖,該關(guān)系數(shù)據(jù)庫(kù)的模式具有添加的潛在列和添加的潛 在表;
[0014] 圖7是另一關(guān)系數(shù)據(jù)庫(kù)的示意圖,該關(guān)系數(shù)據(jù)庫(kù)的模式具有添加的潛在列和添加 的潛在表;
[0015]圖8是在終端用戶(hù)設(shè)備處用于訪(fǎng)問(wèn)圖1的數(shù)據(jù)庫(kù)管理工具的圖形用戶(hù)接口顯示器 的不意圖;
[0016] 圖9是在終端用戶(hù)設(shè)備處用于訪(fǎng)問(wèn)圖1的數(shù)據(jù)庫(kù)管理工具的另一圖形用戶(hù)接口顯 示器的示意圖;
[0017] 圖10示出了示例性的基于計(jì)算的設(shè)備,其中可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理系統(tǒng)或數(shù)據(jù)庫(kù)訪(fǎng) 問(wèn)組件的實(shí)施例。
[0018] 在附圖中,相似的附圖標(biāo)記用于指代相似的部件。
【具體實(shí)施方式】
[0019] 下面結(jié)合附圖提供的發(fā)明詳述旨在作為本示例的描述,而不旨在代表可以以其構(gòu) 造或使用本示例的唯一形式。該描述闡述了示例的功能和用于構(gòu)造和操作示例的步驟序 列。然而,可以通過(guò)不同的示例來(lái)實(shí)現(xiàn)相同或等同的功能和序列。
[0020] 雖然本示例在本文中被描述和圖示為實(shí)現(xiàn)于桌面上計(jì)算系統(tǒng),但是所描述的系統(tǒng) 是作為示例而不是限制而提供的。如本領(lǐng)域技術(shù)人員將意識(shí)到的是,本示例適用于各種不 同類(lèi)型的計(jì)算設(shè)備中的應(yīng)用,包括但不限于智能手機(jī)、臺(tái)式計(jì)算機(jī)、游戲控制臺(tái)、交互式娛 樂(lè)系統(tǒng)、云計(jì)算環(huán)境以及其他。
[0021] 圖1是具有集成的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108的數(shù)據(jù)庫(kù)管理工具106的示意圖。數(shù)據(jù)庫(kù)管 理工具106是計(jì)算機(jī)實(shí)現(xiàn)的,例如,它可以是用于查詢(xún)經(jīng)由諸如互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)或其他通信 網(wǎng)絡(luò)等通信網(wǎng)絡(luò)1〇〇與其通信的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)102的軟件應(yīng)用。數(shù)據(jù)庫(kù)102可以是或者 可以不是關(guān)系數(shù)據(jù)庫(kù)??梢允褂靡粋€(gè)或多個(gè)關(guān)系數(shù)據(jù)庫(kù)102和一個(gè)或多個(gè)非關(guān)系數(shù)據(jù)庫(kù)的 組合。非關(guān)系數(shù)據(jù)庫(kù)的示例的非窮盡列表是:圖形數(shù)據(jù)庫(kù)、對(duì)象數(shù)據(jù)庫(kù)、XML數(shù)據(jù)庫(kù)、JS0N數(shù) 據(jù)庫(kù)。XML(擴(kuò)展標(biāo)記語(yǔ)言)數(shù)據(jù)庫(kù)或JS0N( java腳本對(duì)象記法)數(shù)據(jù)庫(kù)存儲(chǔ)半結(jié)構(gòu)化的數(shù)據(jù)。 數(shù)據(jù)庫(kù)管理工具106具有對(duì)其能夠訪(fǎng)問(wèn)的各個(gè)數(shù)據(jù)庫(kù)102的數(shù)據(jù)庫(kù)模式的訪(fǎng)問(wèn)。在關(guān)系數(shù)據(jù) 庫(kù)的情況下,模式的示例將在本文件中稍后給出。在對(duì)象數(shù)據(jù)庫(kù)的情況下,模式對(duì)應(yīng)于類(lèi) (class)聲明。在下面的示例中,具有表的關(guān)系數(shù)據(jù)庫(kù)中,列和行以及可選地外來(lái)關(guān)鍵字對(duì) 應(yīng)于對(duì)象數(shù)據(jù)庫(kù)中的類(lèi)、成員、對(duì)象和引用。在XML或JS0N數(shù)據(jù)庫(kù)的情況下,術(shù)語(yǔ)"標(biāo)記"或 "集合"、"屬性"、"元素"或"文檔"以及"名稱(chēng)"分別用于指代"表"、"列"、"行"和"外來(lái)關(guān)鍵 字"。
[0022]數(shù)據(jù)庫(kù)管理工具106還可以實(shí)現(xiàn)創(chuàng)建、編輯或刪除數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)管理工具106可 以使得數(shù)據(jù)能夠存儲(chǔ)在一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中,所述數(shù)據(jù)庫(kù)可以是或者可以不是關(guān)系數(shù)據(jù) 庫(kù)。關(guān)系數(shù)據(jù)庫(kù)包括數(shù)據(jù)的多個(gè)表,其中所述表相互鏈接。下面將參考圖2更詳細(xì)地解釋術(shù) 語(yǔ)"關(guān)系數(shù)據(jù)庫(kù)"。
[0023]數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108也是計(jì)算機(jī)實(shí)現(xiàn)的,例如,其實(shí)現(xiàn)為軟件和/或硬件邏輯。數(shù)據(jù) 庫(kù)訪(fǎng)問(wèn)組件被布置成與推斷引擎104-起工作,以高效的方式從至少一個(gè)數(shù)據(jù)庫(kù)的全部或 一部分來(lái)訪(fǎng)問(wèn)數(shù)據(jù),從而推斷引擎能夠利用所訪(fǎng)問(wèn)的數(shù)據(jù)來(lái)執(zhí)行機(jī)器學(xué)習(xí)。數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組 件用下面更詳細(xì)描述的表達(dá)式來(lái)注釋數(shù)據(jù)庫(kù)的模式。數(shù)據(jù)庫(kù)的模式是對(duì)數(shù)據(jù)庫(kù)中如何組織 數(shù)據(jù)的描述。模式可以描述諸如XML或JSON等半結(jié)構(gòu)化的數(shù)據(jù)如何存儲(chǔ)。
[0024] 表達(dá)式描述了數(shù)據(jù)庫(kù)中的數(shù)據(jù)條目上的概率分布。每個(gè)表達(dá)式描述根據(jù)參數(shù)或超 參數(shù)來(lái)生成關(guān)聯(lián)列的條目的過(guò)程,其中超參數(shù)描述了關(guān)于參數(shù)的知識(shí)。表達(dá)式可以是組合 的。例如,表達(dá)式可以描述用于根據(jù)模式的一個(gè)或多個(gè)其他列或表來(lái)生成其關(guān)聯(lián)列的條目 的過(guò)程。數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件還將一個(gè)或多個(gè)潛在列添加到數(shù)據(jù)庫(kù)模式和數(shù)據(jù)庫(kù)中并且可選地 將一個(gè)或多個(gè)潛在表添加到數(shù)據(jù)庫(kù)模式和數(shù)據(jù)庫(kù)中。潛在列是被創(chuàng)建以存儲(chǔ)要由推斷引擎 104推斷的數(shù)據(jù)(而不是觀(guān)察到的數(shù)據(jù)或輸入數(shù)據(jù))的表的列。潛在表是被創(chuàng)建以存儲(chǔ)要由 推斷引擎104推斷的數(shù)據(jù)(而不是觀(guān)察到的數(shù)據(jù)或輸入數(shù)據(jù))的數(shù)據(jù)庫(kù)的表。將參考圖2更詳 細(xì)地解釋輸入列、可觀(guān)察列和潛在列。
[0025] 數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件還具有用于數(shù)據(jù)庫(kù)模式的每列的類(lèi)型,其中類(lèi)型可以是以下各項(xiàng) 中的任意類(lèi)型:整數(shù)型、布爾、實(shí)數(shù)型、字符串、鏈接(在關(guān)系數(shù)據(jù)庫(kù)情況下)、日期-時(shí)間、百 分比或其他。類(lèi)型"鏈接"指示外來(lái)關(guān)鍵字。數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件可以自動(dòng)推斷或解釋列的類(lèi)型, 如下文更詳細(xì)描述的。數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件還具有用于數(shù)據(jù)庫(kù)的每列的標(biāo)簽,所述標(biāo)簽用于指 示其是輸入列、輸出可觀(guān)察列還是輸出潛在列。潛在列是那些由數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件添加的列 并且是輸出列。其他列可以根據(jù)用戶(hù)輸入和/或自動(dòng)分析而被識(shí)別為輸入或輸出可觀(guān)察的。
[0026] 數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件和推斷引擎操作用于編譯具有添加的潛在列和/或表的、注釋的 數(shù)據(jù)庫(kù)模式,以形成推斷算法。注釋的模式還具有對(duì)于每個(gè)列指示其是輸入列、輸出潛在 列、還是輸出可觀(guān)察列的標(biāo)簽。注釋模式還具有用于每個(gè)列的類(lèi)型(諸如整數(shù)型、實(shí)數(shù)型、浮 點(diǎn)型、雙精度型、布爾、字符串、外來(lái)關(guān)鍵字(在該文檔中稱(chēng)為"鏈接")。編譯過(guò)程可以包括多 于一個(gè)階段。例如,注釋可以用高級(jí)編程語(yǔ)言來(lái)編寫(xiě),而高級(jí)編程語(yǔ)言被編譯為在若干階段 中的連續(xù)的較低級(jí)編程語(yǔ)言。推斷引擎能夠執(zhí)行推斷算法來(lái)以推斷算法規(guī)定的方式從數(shù)據(jù) 庫(kù)訪(fǎng)問(wèn)數(shù)據(jù),以及利用所訪(fǎng)問(wèn)數(shù)據(jù)來(lái)執(zhí)行推斷。推斷結(jié)果可被寫(xiě)入添加到數(shù)據(jù)庫(kù)的潛在表 和/或列。
[0027]在一些示例中,數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件自動(dòng)地添加潛在列和/或表并且在數(shù)據(jù)庫(kù)管理工 具中創(chuàng)建注釋(表達(dá)式、輸入/潛在/可觀(guān)察標(biāo)簽、以及類(lèi)型)。在其他示例中,終端用戶(hù)添加 潛在列和/或表,并且利用編程環(huán)境來(lái)創(chuàng)建注釋。添加潛在列和/或表以及注釋的過(guò)程可以 是半自動(dòng)的。
[0028]圖1所示的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108與數(shù)據(jù)庫(kù)管理工具106集成,盡管這不是必要的。數(shù) 據(jù)庫(kù)訪(fǎng)問(wèn)組件108可以位于與數(shù)據(jù)庫(kù)管理工具106通信的任何其他實(shí)體中。數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件 108可以將其接收自推斷引擎104的推斷結(jié)果進(jìn)行高速緩存。
[0029]終端用戶(hù)能夠利用可從他或她的計(jì)算設(shè)備122(諸如手機(jī)116、平板計(jì)算機(jī)118或個(gè) 人計(jì)算機(jī)120)訪(fǎng)問(wèn)的圖形用戶(hù)接口 110來(lái)使用數(shù)據(jù)庫(kù)管理工具106和數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108。 圖形用戶(hù)接口 110可以是基于網(wǎng)絡(luò)的,或者可以是任何其他適當(dāng)?shù)念?lèi)型。之后參考圖7至9來(lái) 論述可提供的圖形用戶(hù)接口顯示的示例。圖形用戶(hù)接口 110可以由數(shù)據(jù)管理工具106來(lái)提 供、由數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108來(lái)提供、或者由任何其他與數(shù)據(jù)庫(kù)管理工具106和數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組 件108通信的實(shí)體來(lái)提供。通過(guò)使用圖形用戶(hù)接口,終端用戶(hù)能夠利用概率推斷的能力,即 使他或她具有極少或沒(méi)有統(tǒng)計(jì)或機(jī)器學(xué)習(xí)方面的訓(xùn)練?,F(xiàn)有的數(shù)據(jù)庫(kù)可以在無(wú)需從現(xiàn)有數(shù) 據(jù)庫(kù)導(dǎo)出數(shù)據(jù)的情況下使用,并且在執(zhí)行機(jī)器學(xué)習(xí)和推斷之前操縱該數(shù)據(jù)。而且,終端用戶(hù) 無(wú)需預(yù)處理數(shù)據(jù),例如,變換不同類(lèi)型的變量或者去除具有缺失數(shù)據(jù)的實(shí)例。這簡(jiǎn)化了終端 用戶(hù)的操作。終端用戶(hù)可以按照與之前對(duì)于數(shù)據(jù)庫(kù)操作的類(lèi)似方式來(lái)操作該數(shù)據(jù)庫(kù),這是 因?yàn)橥茢喟l(fā)生在后臺(tái)并且可以簡(jiǎn)單地將推斷結(jié)果與數(shù)據(jù)庫(kù)查詢(xún)結(jié)果合并。
[0030] 終端用戶(hù)可以利用圖形用戶(hù)接口 110將查詢(xún)112輸入到數(shù)據(jù)庫(kù)管理工具106,以便 將查詢(xún)發(fā)送給數(shù)據(jù)庫(kù)102中的一個(gè)。數(shù)據(jù)庫(kù)管理工具106返回查詢(xún)結(jié)果,該查詢(xún)結(jié)果是利用 已知的數(shù)據(jù)庫(kù)進(jìn)程從數(shù)據(jù)庫(kù)獲取的。數(shù)據(jù)庫(kù)管理工具106還能夠返回帶有推斷114的查詢(xún)結(jié) 果。也即,其中查詢(xún)的結(jié)果包括已經(jīng)由數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108與推斷引擎104聯(lián)合工作而計(jì)算 出的值和信息。
[0031] 例如,帶有推斷的查詢(xún)結(jié)果可以包括從已由推斷引擎104推斷的潛在列和/或潛在 表中訪(fǎng)問(wèn)的數(shù)據(jù)。在下面描述的示例中,游戲的玩家的技能由推斷引擎104來(lái)推斷,并且技 能是存儲(chǔ)在添加到數(shù)據(jù)庫(kù)模式的潛在列中的潛在變量。查詢(xún)可以詢(xún)問(wèn)玩家的技能是怎樣的 并且?guī)в型茢嗟牟樵?xún)結(jié)果包括技能值。通過(guò)這種方式,終端用戶(hù)接收關(guān)于玩家技能的推斷 數(shù)據(jù)。這僅是一個(gè)示例,可以根據(jù)應(yīng)用領(lǐng)域而使用許多其他潛在列和潛在表。
[0032] 除了來(lái)自數(shù)據(jù)庫(kù)的潛在列的推斷數(shù)據(jù)之外或者作為其替代,帶有推斷的查詢(xún)結(jié)果 可以包括關(guān)于數(shù)據(jù)庫(kù)的非潛在列的推斷數(shù)據(jù)。關(guān)于數(shù)據(jù)庫(kù)的非潛在列的推斷數(shù)據(jù)的示例的 非窮盡列表是:填充的缺失數(shù)據(jù)、識(shí)別的錯(cuò)誤數(shù)據(jù)、錯(cuò)誤校正建議、識(shí)別的異常值數(shù)據(jù)。例 如,沒(méi)有數(shù)據(jù)的單元可以通過(guò)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件108來(lái)完成,并且填充的數(shù)據(jù)可以被返回作為 帶有推斷的查詢(xún)結(jié)果114的一部分。即使在完成的單元由外來(lái)關(guān)鍵字值完成的情況下,這也 是可能的。外來(lái)關(guān)鍵字是引用另一表的行、元組或記錄的表單元中的條目。例如,具有錯(cuò)誤 數(shù)據(jù)的單元可以由數(shù)據(jù)訪(fǎng)問(wèn)組件108來(lái)識(shí)別,并且錯(cuò)誤和所建議的校正可被返回作為帶推 斷的查詢(xún)結(jié)果114的一部分。如下更詳細(xì)論述的,帶推斷的查詢(xún)結(jié)果114的許多其他示例是 可能