欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

批量操作的制作方法

文檔序號(hào):6443123閱讀:568來源:國知局

專利名稱::批量操作的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及批量操作。
背景技術(shù)
:數(shù)據(jù)處理是計(jì)算機(jī)編程的基本部分??蓮母鞣N編程語言中選擇創(chuàng)建程序的編程語言。用于特定的應(yīng)用程序的所選語言可取決于應(yīng)用程序上下文、開發(fā)者的偏好、或公司策略,以及其他因素。無論所選語言如何,開發(fā)者最終將必須處理數(shù)據(jù),即查詢以及創(chuàng)建、更新和刪除數(shù)據(jù)。已開發(fā)稱為語言集成查詢(LINQ)的技術(shù)以便于從編程語言內(nèi)查詢或者換言之讀取數(shù)據(jù)。LINQ提供方便且聲明性簡寫查詢句法以在編程語言(例如,C#、VisualBasic...)內(nèi)部允許對(duì)查詢的指定。更具體而言,提供映射到較低層語言構(gòu)造或原語的查詢運(yùn)算符,諸如方法和拉姆達(dá)表達(dá)式(lambdaexpression)。提供用于各種運(yùn)算(例如,過濾、投影、連接、分組、排序……)族的查詢運(yùn)算符,并且查詢運(yùn)算符可包括但不限于映射到實(shí)現(xiàn)這些名稱所表示的運(yùn)算符的方法的“where”和“select”運(yùn)算符。作為示例,用戶可以以諸如“fromninnumberswheren<IOselectn”的形式指定查詢,其中“numbers”是數(shù)據(jù)源并且查詢從數(shù)據(jù)源返回小于10的整數(shù)。此外,可以以各種方式組合查詢運(yùn)算符以生成任意復(fù)雜度的查詢。為了在編程語言內(nèi)部執(zhí)行創(chuàng)建、更新和刪除操作,可利用LINQ的查詢功能。更具體地,使用LINQ將在其上可執(zhí)行創(chuàng)建、更新或刪除操作的數(shù)據(jù)集合從持久數(shù)據(jù)存儲(chǔ)(例如,數(shù)據(jù)的非易失性儲(chǔ)存庫)讀取至存儲(chǔ)器中。后續(xù)地,在存儲(chǔ)器內(nèi)表示上執(zhí)行一個(gè)或多個(gè)操作并將變更推送回至持久數(shù)據(jù)存儲(chǔ)。換言之,可跟蹤對(duì)檢索自數(shù)據(jù)庫的實(shí)體的變更,并且當(dāng)在數(shù)據(jù)庫上調(diào)用“SubmitChangesO”或類似過程時(shí),在底層數(shù)據(jù)結(jié)構(gòu)(例如,表)上執(zhí)行累積的變更。
發(fā)明內(nèi)容下面呈現(xiàn)了簡化的
發(fā)明內(nèi)容,以便提供對(duì)所公開主題的某些方面的基本概念。本
發(fā)明內(nèi)容不是廣泛性的概觀。它并不旨在標(biāo)識(shí)關(guān)鍵/重要元素,也不旨在劃定所要求保護(hù)主題的范圍。其唯一目的是以簡化形式呈現(xiàn)一些概念,作為稍后呈現(xiàn)的更具體實(shí)施例的序簡言之,本發(fā)明一般涉及批量操作??衫谜Z言集成查詢指定創(chuàng)建、讀取、更新和刪除操作。然而,例如,每一批量操作可與其他批量操作不同地來實(shí)現(xiàn)——與根據(jù)諸如讀取操作之類的特定操作相反。此外,可將批量操作相關(guān)的功能可根據(jù)特定批量操作來約束,以防止或至少減少運(yùn)行時(shí)錯(cuò)誤。根據(jù)本發(fā)明的一個(gè)方面,批量操作可關(guān)于為操作(例如,IQuerable,IInsertable,IUpdatable,IDeletable)所特有的類型的專用集合來操作。此外,對(duì)集合的其他操作可基于集合類型來進(jìn)行限制,包括但不限于用于定義集合的查詢運(yùn)算符。為實(shí)現(xiàn)上述及相關(guān)目的,在此結(jié)合以下描述和附圖描述了所要求保護(hù)主題的某些說明性方面。這些方面指示可實(shí)踐本主題的各種方式,它們均落在所要求保護(hù)主題的范圍之內(nèi)。當(dāng)結(jié)合附圖閱讀以下詳細(xì)描述時(shí),本發(fā)明的其他優(yōu)點(diǎn)和新穎特征將變得顯而易見。圖I是便于與持久數(shù)據(jù)存儲(chǔ)處交互的系統(tǒng)的框圖。圖2是代表性LINQ批量操作的框圖。圖3A-C圖形化地示出創(chuàng)建、更新和刪除操作。圖4是與持久數(shù)據(jù)存儲(chǔ)交互的方法的流程圖。圖5是編碼批量操作的方法的流程圖。圖6是驗(yàn)證批量操作的方法的流程圖。圖7是示出用于本公開各方面的合適操作環(huán)境的示意性框圖。具體實(shí)施例方式以下細(xì)節(jié)大體針對(duì)包括在語言集成查詢上下文中創(chuàng)建、更新和刪除的批量操作。常規(guī)上,支持單個(gè)批量操作,即讀取操作。可注入代碼以利用讀取操作來執(zhí)行其他批量操作,例如,通過將數(shù)據(jù)從持久數(shù)據(jù)存儲(chǔ)(例如,數(shù)據(jù)庫)讀取至存儲(chǔ)器,允許對(duì)存儲(chǔ)器內(nèi)數(shù)據(jù)進(jìn)行變更并將變更推送回持久數(shù)據(jù)存儲(chǔ)。然而,關(guān)于上述方法至少有兩個(gè)問題。首先,盡管對(duì)于讀取操作將數(shù)據(jù)加載至存儲(chǔ)器是合乎需要的,但是對(duì)于其他批量操作,至少由于效率原因優(yōu)選直接在持久數(shù)據(jù)存儲(chǔ)上執(zhí)行操作而不創(chuàng)建存儲(chǔ)器內(nèi)表示(例如,對(duì)象)。例如,考慮涉及一百萬個(gè)記錄的情形。此處,從持久數(shù)據(jù)存儲(chǔ)加載一百萬個(gè)記錄、跟蹤變更并將數(shù)據(jù)推送回持久數(shù)據(jù)存儲(chǔ)將是非常低效的。其次,由讀取查詢標(biāo)識(shí)的集合對(duì)于其他操作可能是不兼容的,由此導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。例如,如果對(duì)多個(gè)表執(zhí)行“Join(聯(lián)合)”查詢運(yùn)算符,則刪除操作將難以(如果不是不可能的話)執(zhí)行,因?yàn)榻邮仗囟〝?shù)據(jù)所針對(duì)的表是未知的。本發(fā)明解決了這些和其他問題。更具體地,提供彼此不同的批量運(yùn)算符,而非修改的讀取操作。因此,創(chuàng)建、更新和刪除操作可直接在持久數(shù)據(jù)存儲(chǔ)上執(zhí)行,而非間接地使用本地修改以及后續(xù)提交至數(shù)據(jù)存儲(chǔ)。進(jìn)一步地,在指定對(duì)其執(zhí)行操作的集合之前可指定操作的意圖,例如使用查詢句法。根據(jù)一個(gè)實(shí)施例,可對(duì)于特定的集合類型(例如,IInsertable<T>,IUpdatable〈T>,IDeletable<T>)指定每一操作,其可尤其限制可用于定義集合的各種查詢運(yùn)算符?,F(xiàn)在參考附圖更詳細(xì)地描述本公開的各個(gè)方面,在全部附圖中用相似的標(biāo)記來指示相似或相應(yīng)的元素。然而應(yīng)該理解,附圖及其相關(guān)詳細(xì)描述不旨在將所要求保護(hù)的主題限于所公開的具體形式。相反,其意圖是覆蓋落在所要求保護(hù)主題的精神和范圍之內(nèi)的所有修改、等價(jià)物和替換的方案。最初參考圖1,示出了便于與諸如數(shù)據(jù)庫之類的持久數(shù)據(jù)存儲(chǔ)交互的系統(tǒng)100。系統(tǒng)100包括被配置為接收、檢索、或以其他方式獲得或獲取計(jì)算機(jī)程序源代碼的編輯器組件110。更具體地,編輯器組件110可啟用語言集成(LINQ)批量操作的指定和/或編輯。批量操作對(duì)應(yīng)于基本數(shù)據(jù)庫操作,或者換言之,所謂的CRUD操作,即創(chuàng)建、讀取、更新和刪除。創(chuàng)建操作將一組一個(gè)或多個(gè)項(xiàng)目插入至集合中。因此,創(chuàng)建操作在本文中也稱為插入操作。讀取操作從集合中至少檢索項(xiàng)目子集。有時(shí)讀取操作被不嚴(yán)格地稱為查詢操作,因?yàn)椴樵冎付藢⒁x取的數(shù)據(jù)。然而,如本文將進(jìn)一步討論的,查詢可指定可對(duì)其執(zhí)行多個(gè)操作的數(shù)據(jù)集合。更新操作至少修改集合中的項(xiàng)目子集,刪除至少移除集合中的項(xiàng)目子集。常規(guī)語言集成查詢涉及讀取操作。使用“IQuerable”接口來提供這樣的功能,顧名思義,“IQuerable”接口使用查詢標(biāo)識(shí)了一組項(xiàng)目。例如,給定專利數(shù)據(jù)庫,可通過構(gòu)造以下語言集成查詢來標(biāo)識(shí)作者字段中包含“JohnSmith”的那些專利varpatents=frompatentinUSPTO.GetTable<Patents>()wherepatent.Author.Includes(“JohnSmith,,)selectpatent;創(chuàng)建、更新和刪除操作可實(shí)現(xiàn)為修改的讀取操作。作為示例而并非限制,為了將名稱“JohnSmith”變更為“JonathanSmith”,可結(jié)合以下代碼片段使用以上的讀取操作來獲取具有作者“JohnSmith”的專利foreach(varpatentinpatents)Patent.Author=“JonathanSmith”USPTO.SubmitChangesO;換言之,更新操作可以和將全部項(xiàng)目讀入至存儲(chǔ)器的讀取操作一起執(zhí)行,之后是存儲(chǔ)器內(nèi)項(xiàng)目的修改,然后將累積的變更發(fā)送回?cái)?shù)據(jù)庫以實(shí)現(xiàn)對(duì)實(shí)際的底層數(shù)據(jù)結(jié)構(gòu)(例如,表)的變更。盡管對(duì)于讀取操作需要將標(biāo)識(shí)的項(xiàng)目讀取至存儲(chǔ)器中,但是對(duì)于其他操作(創(chuàng)建、更新和刪除)并不是必要的。結(jié)果,將其他操作實(shí)現(xiàn)為修改的讀取操作(例如,讀取加附加功能)可能是相當(dāng)?shù)托У?。此外,這樣的實(shí)現(xiàn)還可根據(jù)客戶機(jī)計(jì)算機(jī)系統(tǒng)在操作上施加潛在的限制。作為說明性示例,假定在以上的示例中,有一百萬個(gè)作者為“JohnSmith”的專利。從數(shù)據(jù)庫取回一百萬個(gè)專利、在存儲(chǔ)器中創(chuàng)建專利、跟蹤對(duì)它們的變更以及之后將變更推送回?cái)?shù)據(jù)庫中將是非常低效的。此外,如果客戶機(jī)計(jì)算機(jī)系統(tǒng)不能創(chuàng)建和/或操縱存儲(chǔ)器中的一百萬個(gè)專利,那么操作將無法完成。再進(jìn)一步,將讀取操作用作其他批量操作的基礎(chǔ)可導(dǎo)致問題,因?yàn)樽x取操作可支持比特定操作所支持的更多的查詢運(yùn)算符和/或相關(guān)聯(lián)的功能。例如,考慮以下在讀取操作之上實(shí)現(xiàn)的刪除操作vardeleted=(frompatentinUSPTO.GetTable<Patents>()wherepatent.Author.Includes(“JohnSmith)selectpatent.Date).Delete();此處,通過不適當(dāng)?shù)耐队皝順?gòu)造不標(biāo)識(shí)底層表中的任何實(shí)際項(xiàng)目的刪除操作。結(jié)果將生成運(yùn)行時(shí)錯(cuò)誤。因此,關(guān)于編輯器組件110的批量操作可以不同于在讀取操作上方生成。此外,在包括一個(gè)或多個(gè)相關(guān)的查詢運(yùn)算符的語言集成查詢表達(dá)式尤其用于標(biāo)識(shí)將對(duì)其執(zhí)行批量操作的集合的情況下,可提前指定意圖以允許根據(jù)需要就每一批量操作(即創(chuàng)建、更新和刪除)約束查詢表達(dá)式。可通過對(duì)底層編程語言進(jìn)行變更來注入這樣的功能,例如通過添加對(duì)于特定關(guān)鍵詞(例如,Insert(插入),Update(更新),Delete(刪除))的支持以及支持代碼。另選地,相對(duì)于類型系統(tǒng)可如下所述來實(shí)現(xiàn)該功能。注意力轉(zhuǎn)向圖2,圖形地描繪了代表性LINQ批量操作200。每一LINQ批量操作(例如,創(chuàng)建、更新、刪除)可包括為操作以及可對(duì)于特定集合及其類型操作的一個(gè)或多個(gè)允許的查詢運(yùn)算符220所特有的集合類型210。此外,可使用一個(gè)或多個(gè)輸出運(yùn)算符230來控制操作的輸出。集合類型210是為特定操作所特有的,并操作用于至少標(biāo)識(shí)關(guān)于就查詢表達(dá)式所指定的集合的意圖。此外,可通過限制查詢運(yùn)算符220及其相對(duì)于集合類型的使用來約束查詢表達(dá)式。常規(guī)的讀取操作支持“IQueryable”接口或“IQueryable〈T>”。如果集合實(shí)現(xiàn)了接口“IQueryableCD”(其中“T”是集合中的項(xiàng)目的類型(例如,串、整數(shù)……)),那么意味著集合實(shí)現(xiàn)了該接口規(guī)定的功能并且由此可以說該集合是“IQueryableCD”類型的。類似地,可實(shí)現(xiàn)創(chuàng)建操作并且是“IlnsertableCD”類型的,可實(shí)現(xiàn)更新操作并且是“IUpdatable〈T>”類型的,可實(shí)現(xiàn)刪除操作并且是“IDeletableCD”類型的。這些集合類型現(xiàn)在可用于根據(jù)特定批量操作限制對(duì)集合的操作(例如,查詢運(yùn)算符(Select,Where,Join...))ο根據(jù)一個(gè)實(shí)施例,批量運(yùn)算符類型“IlnsertableCD”、“IUpdatableCD”和“IDeletableCD”可從讀取操作類型“IQueryableCD”導(dǎo)出或者是其子類型。由此,可存在用于在這樣的類型之間轉(zhuǎn)換的操作。作為示例而非限制,可使用從數(shù)據(jù)庫返回“IDeletable〈T>”集合的“GetForDelete〈T>O”運(yùn)算符等來指定刪除運(yùn)算符。vardeleted=frompatentinUSPTO.GetForDelete<Patents>()wherepatent.Author.Includes(“JohnSmith,,)selectpatent;此處,集合類型可限制可被應(yīng)用的各種查詢運(yùn)算符。更具體地,集合類型可確保結(jié)果類型是“IDeletableCD”,以使得標(biāo)識(shí)正確類型的項(xiàng)目來刪除。類似地,對(duì)于創(chuàng)建或者換言之插入,可指定返回“IlnsertableCD”集合的“GetForlnsertionCD”運(yùn)算符。此外,具體的值的集合或從可能不同的位置返回值的集合的查詢可被提供來作為創(chuàng)建操作的輸入。例如varinserted=USPTO.GetForInsertion<Patents>().Insert(frompatentinxxx.com.GetTable<Disclosure>()wherepatent.Author.Includes(“JohnSmith”)selectpatent);varinserted〗=inserted.Insert(newPatent{·.·,Author=“JohnSmith’’,Title=“Abettermousetrap”,...});最終,對(duì)于更新,可調(diào)用返回“IUpdatable〈T>”集合(不要與對(duì)象數(shù)據(jù)協(xié)議(Odata)可更新的概念混淆)的“GetForUpdates〈T>”運(yùn)算符。例如varchanged=frompatentinUSPTO.GetForUpdates(old=>{old.Author=“JohnSmith”;})wherepatent.Author.Includes(“JohnSmith”)selectpatent;再次,對(duì)“IUpdatable〈T>”集合的查詢運(yùn)算符組維持其僅標(biāo)識(shí)相同類型的子集的不變性。如圖2所示,LINQ批量操作還可選地包括輸出運(yùn)算符230。這些運(yùn)算符可用于指定對(duì)于批量操作的響應(yīng)。對(duì)于讀取操作,很清楚在返回滿足查詢的項(xiàng)目時(shí)操作已經(jīng)被執(zhí)行。對(duì)于其他批量操作,這較不清楚,例如,因?yàn)椴僮魇侵苯釉跀?shù)據(jù)庫上執(zhí)行的。因此,例如可指定輸出運(yùn)算符230返回對(duì)應(yīng)于受操作影響的項(xiàng)目數(shù)量的整數(shù)或者可返回實(shí)際的項(xiàng)目。例如,在執(zhí)行使用查詢指定的刪除時(shí),可返回被刪除的項(xiàng)目的數(shù)量和/或可返回被刪除的實(shí)際項(xiàng)目。圖3A-C如先前所述圖形地描繪了創(chuàng)建、更新和刪除操作以進(jìn)一步助于對(duì)于本發(fā)明各方面的清晰度和理解。圖3A涉及創(chuàng)建或插入操作。如所示出的,可以對(duì)諸如關(guān)系數(shù)據(jù)庫表之類的數(shù)據(jù)源300執(zhí)行創(chuàng)建操作??芍付ā癎etForlnsertionO”操作302以產(chǎn)生“IInsertable”集合304。對(duì)于“IInsertable”集合304,可指定選擇查詢運(yùn)算符306??稍谀繕?biāo)數(shù)據(jù)源300上執(zhí)行或運(yùn)行(run)308創(chuàng)建操作,并且作為響應(yīng),可返回插入的項(xiàng)目的數(shù)量或?qū)嶋H插入的項(xiàng)目,如所示的“Int”或“IEnumerable〈T>”309。圖3B涉及更新操作,其可再次對(duì)于數(shù)據(jù)源300執(zhí)行。進(jìn)一步地,可指定“GetForUpdate”運(yùn)算符312以返回“IUpdatable”集合314??芍付▽?duì)于“IUpdatable”集合314的可允許運(yùn)算符316以聲明性地表示將更新的特定項(xiàng)目。可在目標(biāo)數(shù)據(jù)源300上執(zhí)行或運(yùn)行318更新的操作,并且可返回更新的項(xiàng)目的數(shù)量或?qū)嶋H更新的項(xiàng)目組,如“Int”或“IEnumerable〈T>”319所捕捉的。圖3C涉及刪除操作。再次地,數(shù)據(jù)源300中的項(xiàng)目可被定標(biāo)以供刪除??芍付ǚ祷亍癐Deletable”集合324的“GetForDeletion”運(yùn)算符322,可對(duì)于“IDeletable”集合324指定特定的查詢運(yùn)算符326的組??稍跀?shù)據(jù)源300上執(zhí)行或運(yùn)行328刪除操作,并且可返回插入的項(xiàng)目的數(shù)量或?qū)嶋H刪除的項(xiàng)目組,如“Int”或“IEnumerableCD”329指定的?;仡^參考圖I的系統(tǒng)100,如所提及的,編輯器組件110可如前所述地允許LINQ批量操作的指定和編輯。系統(tǒng)100還包括可將包括LINQ批量操作的源代碼變換為諸如另一計(jì)算機(jī)語言之類的另一種形式的編譯器組件120。更具體地,編譯器組件120可執(zhí)行包括類型檢查或者換言之類型錯(cuò)誤的檢查的語義分析。因此,編譯器可檢查為批量操作所特有的集合類型,并確定給定特定的集合類型,包括一個(gè)或多個(gè)運(yùn)算符的查詢表達(dá)式是否是可接受的。如果查詢表達(dá)式是不可接受的,那么就可生成編譯時(shí)錯(cuò)誤。例如,對(duì)于“IDeletable〈T>”集合,如果指定了身份投影之外的投影(例如,“selectpatent.Date”而非“selectpatent”),那么編譯器可指示發(fā)生了類型錯(cuò)誤。因此,至少可減少(如果未被消除的話)關(guān)于批量操作的運(yùn)行時(shí)錯(cuò)誤的發(fā)生。此外,編輯器組件110和編譯器組件120可進(jìn)行協(xié)作來向程序員提供關(guān)于批量操作的指定的基本上實(shí)時(shí)的反饋。例如,可利用編譯器組件120來根據(jù)類型提供非正確指定的批量操作的指示,諸如通過使用代碼的非正確部分下的紅色波浪線。進(jìn)一步地,可使用編譯器組件120來在輸入源代碼時(shí)提供提示或做出建議。例如,一旦提供或以其他方式確定或推斷出了集合類型,那么查詢運(yùn)算符可根據(jù)其類型來過濾并在源代碼指定期間被建議。系統(tǒng)100還包括被配置為生成目標(biāo)專用批量運(yùn)算符的翻譯器組件130。更具體地,基于編譯器組件120產(chǎn)生的批量操作的本地表示,翻譯器組件130可將該表示變換為或者從該表示生成可由目標(biāo)執(zhí)行環(huán)境執(zhí)行的批量操作。例如,如果批量操作將在關(guān)系數(shù)據(jù)庫系統(tǒng)上執(zhí)行,那么翻譯器組件130可生成批量操作的結(jié)構(gòu)化查詢語言(SQL)表示以供關(guān)系數(shù)據(jù)庫系統(tǒng)執(zhí)行。參考若干組件之間的交互已經(jīng)描述了上述系統(tǒng)、體系結(jié)構(gòu)、環(huán)境等。應(yīng)該理解,這樣的系統(tǒng)和組件可以包括這些組件或其中指定的子組件,某些指定的組件或子組件,和/或附加的組件。子組件也可以被實(shí)現(xiàn)為在通信上被耦合到其他組件而不是被包括在父組件中的組件。此外,一個(gè)或多個(gè)組件和/或子組件可以結(jié)合成提供聚集功能的單個(gè)組件。系統(tǒng)、組件、和/或子組件之間的通信可以根據(jù)推送(push)和/或拉取(pull)模型來實(shí)現(xiàn)。各組件也可以與一個(gè)或多個(gè)其他組件進(jìn)行交互,出于簡要考慮在此未具體描述該組件,但本領(lǐng)域的技術(shù)人員均已知。此外,以上公開系統(tǒng)以及以下方法的各個(gè)部分可以包括或包含基于人工智能、機(jī)器學(xué)習(xí)或知識(shí)或規(guī)則的組件、子組件、進(jìn)程、裝置、方法或機(jī)制(例如,支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯信任網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎、分類器...)。這樣的組件和其它組件可以自動(dòng)化執(zhí)行某些機(jī)制或進(jìn)程,由此使得系統(tǒng)和方法的各部分更為自適應(yīng)、高效及智能。作為示例而非限制,編譯器組件120可特別地使用這樣的對(duì)于執(zhí)行類型推理的機(jī)制??紤]到以上描述的示例性系統(tǒng),參考圖4-6的流程圖將可以更好地理解依照所公開的主題實(shí)現(xiàn)的方法。盡管為了說明簡潔起見,作為一系列框示出和描述了方法,但是,應(yīng)該理解,所要求保護(hù)的主題不僅限于所描述框的順序,一些框可以按與此處所描繪和描述的不同的順序進(jìn)行和/或與其它框并發(fā)地進(jìn)行。此外,并非全部所示出的框都是實(shí)現(xiàn)下面所描述的方法所必需的。參考圖4,示出了與持久數(shù)據(jù)存儲(chǔ)交互的方法400。在附圖標(biāo)記410處,標(biāo)識(shí)語言集成查詢批量操作。批量操作可對(duì)應(yīng)于使用語言集成查詢表達(dá)式等指定的創(chuàng)建、更新或刪除操作。在附圖標(biāo)記420處,將操作變換為用于執(zhí)行的目標(biāo)語言。例如,如果可使用多用途編程語言(例如,C#,VisualBasic,Java)來指定批量操作,則該多用途編程語言之后可被用于產(chǎn)生關(guān)于諸如關(guān)系數(shù)據(jù)庫系統(tǒng)之類的持久數(shù)據(jù)存儲(chǔ)的可執(zhí)行代碼(例如,Τ-SQL)。在430處,至少發(fā)起批量操作的傳輸或者換言之通信以供執(zhí)行。在附圖標(biāo)記440處,例如可獲取指示受操作影響的數(shù)據(jù)庫項(xiàng)數(shù)量和/或提供被影響的實(shí)際項(xiàng)目的響應(yīng)。圖5是編碼批量操作的方法500的流程圖。在附圖標(biāo)記510處,指定關(guān)于諸如創(chuàng)建、更新或刪除之類的批量操作的集合類型。此外,指定的集合類型是唯一的或?yàn)樘囟ㄅ坎僮魉赜械?例如,“IlnsertableCD”->創(chuàng)建(也稱為插入),“IUpdatable〈T>”->更新,以及“IDeletableCD”->刪除)。在附圖標(biāo)記520處,對(duì)特定集合指定一個(gè)或多個(gè)可用操作。集合類型可限制可在集合上執(zhí)行的操作。因此,可在批量操作的指定中使用并沒有被有效過濾的那些操作。例如,可使用查詢運(yùn)算符來生成至少聲明性地指定在其上可執(zhí)行批量操作的數(shù)據(jù)子集的查詢表達(dá)式——作為例如具體的值的集合的顯式指定的替換或補(bǔ)充。因此,可指定規(guī)定是否返回受操作影響的項(xiàng)目的數(shù)量和/或提供特定項(xiàng)目的輸出操作。圖6示出一種驗(yàn)證批量操作的方法600。在附圖標(biāo)記610處,標(biāo)識(shí)對(duì)于特定批量操作(例如,創(chuàng)建、更新、刪除)的源集合類型,例如“IInsertabIe〈T>”、“IUpdatabIeCDIP“IDeletableCD”。在標(biāo)記620處,標(biāo)識(shí)為集合所特有的操作。例如,可對(duì)于聲明性地定義集合值的查詢表達(dá)式標(biāo)識(shí)查詢運(yùn)算符及其使用。在標(biāo)記630處,做出關(guān)于操作是否有效的判定。每一集合類型可定義對(duì)于集合可允許的一組操作。因此,在630處的判定可對(duì)應(yīng)于可允許的操作與指定的操作的比較。如果批量操作如所指定的(“YES(是)”)(例如,沒有類型錯(cuò)誤)是有效的,那么方法600可終止。凌旋地,如果批量操作是無效的(“NO(否)”)(例如,類型錯(cuò)誤),那么該方法在終結(jié)之前在附圖標(biāo)記640處生成錯(cuò)誤。此處使用的術(shù)語“組件”和“系統(tǒng)”及其各種形式旨在表示與計(jì)算機(jī)相關(guān)的實(shí)體,其可以是硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是但不限于是,在處理器上運(yùn)行的進(jìn)程、處理器、對(duì)象、實(shí)例、可執(zhí)行程序、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為說明,在計(jì)算機(jī)上運(yùn)行的應(yīng)用和計(jì)算機(jī)都可以是組件。一個(gè)或多個(gè)組件可駐留在進(jìn)程和/或執(zhí)行的線程內(nèi),并且組件可位于一個(gè)計(jì)算機(jī)上和/或分布在兩個(gè)或更多的計(jì)算機(jī)之間。在本文中使用的詞語“示例性”或其各種形式意味著用作示例、實(shí)例或說明。在此被描述為“示例性”的任何方面或設(shè)計(jì)并不一定要被解釋為相比其它方面或設(shè)計(jì)更優(yōu)選或有利。此外,各示例只是出于清楚和理解的目的來提供的并且并不意味著以任何方式限制或約束所要求保護(hù)主題或本發(fā)明的相關(guān)部分??梢岳斫?,本來可呈現(xiàn)不同范圍的多個(gè)附加或替換示例,但出于簡明的目的已被省略。如此處所使用,術(shù)語“推論”或“推斷”通常指的是從經(jīng)由事件和/或數(shù)據(jù)捕捉的一組觀察結(jié)果來推理或推斷系統(tǒng)、環(huán)境、和/或用戶的狀態(tài)的過程??梢允褂猛茢鄟順?biāo)識(shí)特定上下文或動(dòng)作,也可以生成例如狀態(tài)上的概率分布。推斷可以是概率性的,即,基于對(duì)數(shù)據(jù)和事件的考慮,計(jì)算在感興趣狀態(tài)上的概率分布。推斷也可以是指用于從一組事件和/或數(shù)據(jù)構(gòu)成較高級(jí)別的事件的技術(shù)。這樣的推斷導(dǎo)致從一組觀察到的事件和/或存儲(chǔ)的事件數(shù)據(jù)構(gòu)建新的事件或動(dòng)作,不管事件在時(shí)間上是否緊密相關(guān),以及事件和數(shù)據(jù)是來自一個(gè)還是多個(gè)事件和數(shù)據(jù)源??刹捎酶鞣N分類方案和/或系統(tǒng)(例如,支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)、專家系統(tǒng)、貝葉斯信任網(wǎng)絡(luò)、模糊邏輯、數(shù)據(jù)融合引擎……)來執(zhí)行關(guān)于所要求保護(hù)主題的自動(dòng)化和/或推斷的動(dòng)作。而且,對(duì)于在詳細(xì)描述或權(quán)利要求書中使用術(shù)語“包括”、“包含”、“具有”、“含有”或其它形式的變型而言,這樣的術(shù)語旨在以類似于術(shù)語“包括”的方式體現(xiàn)包含性,如同“包括”在用作權(quán)利要求書中的過渡詞時(shí)所解釋的那樣。為了為所要求保護(hù)主題提供上下文,圖7以及以下討論旨在提供對(duì)其中可以實(shí)現(xiàn)本主題的各方面的合適環(huán)境的簡要、概括描述。然而,合適的環(huán)境只是示例并且并非旨在對(duì)使用范圍或功能提出任何限制。盡管能夠在可以在一臺(tái)或多臺(tái)計(jì)算機(jī)上運(yùn)行的程序的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述以上公開的系統(tǒng)和方法,但是,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,各方面也可以與其他程序模塊等相結(jié)合地實(shí)現(xiàn)。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件和數(shù)據(jù)結(jié)構(gòu)等。此外,本領(lǐng)域技術(shù)人員可以理解,上述系統(tǒng)和方法可用各種計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括單處理器、多處理器或多核處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算設(shè)備、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備(例如,個(gè)人數(shù)字助理(PDA)、電話、手表……)、基于微處理器或可編程消費(fèi)者或工業(yè)電子設(shè)備等。各方面也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。然而,所要求保護(hù)主題的某些方面,如果不是所有方面的話,可以在獨(dú)立計(jì)算機(jī)上實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中的一個(gè)或兩者中。參考圖7,示出了示例通用計(jì)算機(jī)710或計(jì)算設(shè)備(例如,臺(tái)式機(jī)、膝上型計(jì)算機(jī)、服務(wù)器、手持式設(shè)備、可編程消費(fèi)或工業(yè)電子產(chǎn)品、機(jī)頂盒、游戲系統(tǒng)……)。計(jì)算機(jī)710包括一個(gè)或多個(gè)處理器720、存儲(chǔ)器730、系統(tǒng)總線740、大容量存儲(chǔ)750、以及一個(gè)或多個(gè)接口組件770。系統(tǒng)總線740與至少上述系統(tǒng)組件通信地耦合。然而,可以理解,在其最簡單的形式中,計(jì)算機(jī)710可包括耦合到存儲(chǔ)器730的一個(gè)或多個(gè)處理器720,該一個(gè)或多個(gè)處理器720執(zhí)行存儲(chǔ)在存儲(chǔ)器730中的各種計(jì)算機(jī)可執(zhí)行動(dòng)作、指令和或組件。處理器720可以用通用處理器、數(shù)字信號(hào)處理器(DSP)、應(yīng)用程序?qū)S眉呻娐?ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯設(shè)備、分立門或晶體管邏輯、分立硬件組件或被設(shè)計(jì)為執(zhí)行此處描述的功能的其任意組合來實(shí)現(xiàn)。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器720還可被實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如DSP和微處理器的組合、多個(gè)微處理器、多核處理器、結(jié)合一個(gè)DSP核的一個(gè)或多個(gè)微處理器、或任何其它這種配置。計(jì)算機(jī)710可包括各種計(jì)算機(jī)可讀介質(zhì)或以其他方式與各種計(jì)算機(jī)可讀介質(zhì)交互以便于控制計(jì)算機(jī)710來實(shí)現(xiàn)所要求保護(hù)主題的一個(gè)或多個(gè)方面。計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì)算機(jī)710訪問的任何可用介質(zhì),并包含易失性和非易失性介質(zhì)以及可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,存儲(chǔ)器設(shè)備(例如,隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)……)、磁存儲(chǔ)設(shè)備(例如,硬盤、軟盤、磁帶盒、磁帶……)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤(DVD)……)、以及固態(tài)設(shè)備(例如,固態(tài)驅(qū)動(dòng)器(SSD)、閃存驅(qū)動(dòng)器(例如,卡、棒、鍵驅(qū)動(dòng)器……)……)、或者可用于存儲(chǔ)所需信息并且可由計(jì)算機(jī)710訪問的任何其他介質(zhì)。通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”是指具有以在信號(hào)中編碼信息的方式被設(shè)定或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無線介質(zhì)之類的無線介質(zhì)。上述的任意組合也應(yīng)包含在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。存儲(chǔ)器730和大容量存儲(chǔ)750是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例。取決于計(jì)算設(shè)備的確切配置和類型,存儲(chǔ)器730可以是易失性的(例如RAM)、非易失性的(例如ROM、閃存……)或是兩者的某種組合。作為示例,基本輸入/輸出系統(tǒng)(BIOS),包括諸如在啟動(dòng)期間在計(jì)算機(jī)710內(nèi)的元件之間傳輸信息的基本例程,可被存儲(chǔ)在非易失性存儲(chǔ)器中,而易失性存儲(chǔ)器可擔(dān)當(dāng)外部高速緩存存儲(chǔ)器以便于處理器720的處理等。大容量存儲(chǔ)750包括相對(duì)于存儲(chǔ)器730用于存儲(chǔ)大量數(shù)據(jù)的可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。例如,大容量存儲(chǔ)750包括但不限于,諸如磁盤或光盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、閃存存儲(chǔ)器、固態(tài)驅(qū)動(dòng)器、或記憶棒的一個(gè)或多個(gè)設(shè)備。存儲(chǔ)器730和大容量存儲(chǔ)750可包括或其中存儲(chǔ)有操作系統(tǒng)760、一個(gè)或多個(gè)應(yīng)用762、一個(gè)或多個(gè)程序模塊764和數(shù)據(jù)766。操作系統(tǒng)760用于控制和分配計(jì)算機(jī)710的資源。應(yīng)用762包括系統(tǒng)和應(yīng)用軟件中的一個(gè)或兩個(gè),并且可利用操作系統(tǒng)760對(duì)資源的管理通過存儲(chǔ)在存儲(chǔ)器730和/或大容量存儲(chǔ)750中的程序模塊764和數(shù)據(jù)766來執(zhí)行一個(gè)或多個(gè)動(dòng)作。因此,應(yīng)用762可根據(jù)由此提供的邏輯來將通用計(jì)算機(jī)710變成專用機(jī)器。所要求保護(hù)主題的全部或各部分可以使用產(chǎn)生控制計(jì)算機(jī)以實(shí)現(xiàn)所公開功能的軟件、固件、硬件或其任意組合的標(biāo)準(zhǔn)編程和/或工程技術(shù)來實(shí)現(xiàn)。作為示例而非限制,系統(tǒng)100或其一部分可以是應(yīng)用762或形成應(yīng)用762的一部分,并且包括存儲(chǔ)在存儲(chǔ)器和/或大容量存儲(chǔ)750中的一個(gè)或多個(gè)模塊764和數(shù)據(jù)766,這些模塊和數(shù)據(jù)的功能可在由一個(gè)或多個(gè)處理器720執(zhí)行時(shí)可實(shí)現(xiàn)。根據(jù)一個(gè)特定實(shí)施例,處理器720可與片上系統(tǒng)(SOC)或在單個(gè)集成電路基座上包括或換言之集成硬件和軟件的類似體系結(jié)構(gòu)相對(duì)應(yīng)。此處,處理器720可包括至少與處理器720和存儲(chǔ)器730相似的一個(gè)或多個(gè)處理器以及存儲(chǔ)器等。常規(guī)處理器包括最少量的硬件和軟件并且廣泛依賴于外部硬件和軟件。作為對(duì)比,處理器的SOC實(shí)現(xiàn)更強(qiáng)大,因?yàn)樗鼘⒂布蛙浖度肫渲幸阅軌蛴米钌俚挠布蛙浖虿灰蕾囉谕獠坑布蛙浖韱⒂锰囟üδ?。例如,系統(tǒng)100和/或相關(guān)聯(lián)的功能可被嵌入到SOC體系結(jié)構(gòu)中的硬件內(nèi)。計(jì)算機(jī)710還包括通信地耦合到系統(tǒng)總線740并方便與計(jì)算機(jī)710的交互的一個(gè)或多個(gè)接口組件770。作為示例,接口組件770可以是端口(例如,串行、并行、PCMCIA、USB、火線......)或接口卡(例如,聲音、視頻......)等等。在一個(gè)示例實(shí)現(xiàn)中,接口組件770可被具體化為用戶輸入/輸出接口,該用戶輸入/輸出接口使得用戶能夠通過一個(gè)或多個(gè)輸入設(shè)備(例如,諸如鼠標(biāo)等定點(diǎn)設(shè)備、跟蹤球、指示筆、觸摸墊、鍵盤、話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、照相機(jī)、其他計(jì)算機(jī)……)來將命令和信息輸入到計(jì)算機(jī)710中。在另一示例實(shí)現(xiàn)中,接口組件770可被具體化為輸出外圍接口,該輸出外圍接口向顯示器(例如,CRT、LCD、等離子……)、揚(yáng)聲器、打印機(jī)和/或其它計(jì)算機(jī)等提供輸出。此外,接口組件770可被具體化為網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口使得能夠諸如通過有線或無線通信鏈路與其他計(jì)算設(shè)備(未示出)通信。以上所已經(jīng)描述的內(nèi)容包括所要求保護(hù)主題的各方面的示例。當(dāng)然,出于描繪所要求保護(hù)主題的目的而描述每一個(gè)可以想到的組件或方法的組合是不可能的,但本領(lǐng)域內(nèi)的普通技術(shù)人員應(yīng)該認(rèn)識(shí)到,所要求保護(hù)主題的許多進(jìn)一步的組合和排列都是可能的。因此,所公開的主題旨在涵蓋落入所附權(quán)利要求書的精神和范圍內(nèi)的所有這樣的變更、修改和變化。權(quán)利要求1.一種便于與持久數(shù)據(jù)存儲(chǔ)交互的方法,包括采用被配置來執(zhí)行存儲(chǔ)在存儲(chǔ)器(730)中的計(jì)算機(jī)可執(zhí)行指令以執(zhí)行以下動(dòng)作的至少一個(gè)處理器(720)限制與指定創(chuàng)建、更新或刪除操作中的至少一個(gè)相關(guān)的一個(gè)或多個(gè)語言集成查詢運(yùn)算符的使用。2.如權(quán)利要求I所述的方法,其特征在于,還包括直接在持久數(shù)據(jù)存儲(chǔ)上啟動(dòng)所述創(chuàng)建、更新或刪除操作的執(zhí)行。3.如權(quán)利要求2所述的方法,其特征在于,還包括接收對(duì)所述創(chuàng)建、更新或刪除操作的執(zhí)行的確認(rèn)。4.如權(quán)利要求I所述的方法,其特征在于,還包括根據(jù)為所述創(chuàng)建、更新或刪除操作所特有的集合類型限制所述一個(gè)或多個(gè)語言集成查詢運(yùn)算符的使用。5.如權(quán)利要求4所述的方法,其特征在于,根據(jù)讀取操作集合類型的子類型限制所述使用。6.一種便于與持久數(shù)據(jù)存儲(chǔ)交互的系統(tǒng),包括耦合到存儲(chǔ)器(730)的處理器(720),所述處理器(720)被配置來執(zhí)行存儲(chǔ)在所述存儲(chǔ)器(730)中的以下計(jì)算機(jī)可執(zhí)行組件第一組件,其被配置來分析對(duì)一集合的語言集成查詢創(chuàng)建、更新或刪除操作,所述操作是根據(jù)為所述操作所特有的集合類型用一個(gè)或多個(gè)查詢運(yùn)算符指定的。7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一組件被配置為如果所述一個(gè)或多個(gè)查詢運(yùn)算符中的至少一個(gè)不被為對(duì)其指定所述查詢運(yùn)算符的所述操作所特有的集合類型支持,則生成錯(cuò)誤。8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述集合類型是讀取操作集合類型的子類型。9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述操作包括指定返回值的輸出運(yùn)算符。10.如權(quán)利要求6所述的系統(tǒng),其特征在于,還包括第二組件,其被配置來將所述操作變換為目標(biāo)查詢語言。全文摘要本文描述了批量操作。在語言集成查詢上下文內(nèi)支持包括創(chuàng)建、更新和刪除操作的批量操作。這樣的批量操作可被實(shí)現(xiàn)為不同的操作。可根據(jù)特定批量操作來限制包括定義可對(duì)其執(zhí)行批量操作的數(shù)據(jù)集合的查詢運(yùn)算符的其他操作。文檔編號(hào)G06F17/30GK102591933SQ20111044011公開日2012年7月18日申請(qǐng)日期2011年12月16日優(yōu)先權(quán)日2010年12月17日發(fā)明者H·J·M·梅杰申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
贺州市| 睢宁县| 锦屏县| 颍上县| 乃东县| 普兰店市| 凉城县| 岱山县| 内江市| 和平县| 齐齐哈尔市| 普兰店市| 大城县| 达尔| 罗定市| 启东市| 竹溪县| 洪湖市| 北碚区| 台南市| 积石山| 社会| 涞水县| 兰溪市| 平安县| 巍山| 旌德县| 长宁县| 乌拉特中旗| 来安县| 广南县| 娄底市| 旅游| 德清县| 柳河县| 五家渠市| 福泉市| 明光市| 南岸区| 承德市| 日土县|