專利名稱:管理多用戶存取預定義查詢的系統與方法
技術領域:
總體上講,本發明涉及一種查詢處理,更具體地講,本發明涉及對多個用戶存取永久性存儲的查詢的管理。
背景技術:
數據庫是計算機化的信息存儲和提取系統。關系數據庫管理系統是一種使用了用于存儲和提取數據的關系技術的計算機數據庫管理系統(DBMS)。最流行的數據庫類型是關系數據庫、表格數據庫,其中,對數據加以定義,以致于可以按多種不同的方式重組和存取。分布式數據庫是一種可以在網絡中的不同點之中加以傳布或復制的數據庫。面向對象的編程數據庫是一種適合于按對象類和子類定義的數據的數據庫。
不管具體的體系結構如何,均可以對DBMS進行構造,以支持各種不同類型的操作。可以對這樣的操作進行配置,以提取、添加、修改以及刪除由DBMS所存儲和所管理的信息。標準的數據庫存取方法使用諸如結構查詢語言(SQL)的高級查詢語言,支持這些操作。術語“查詢”是對一組命令的稱謂,這組命令可導致對用于對來自所存儲的數據庫的數據進行處理的操作的執行。例如,SQL支持4種查詢操作,即選擇、插入、更新以及刪除。選擇操作從數據庫提取數據,插入操作把新的數據添加于數據庫,更新操作修改數據庫中的數據,以及刪除操作從數據庫去除數據。
任何發出請求的實體,包括應用、操作系統以及處于最高級的用戶,可以針對一或多個數據庫中的數據發布查詢。可以把查詢硬編碼為應用的一部分,也可以響應于輸入(例如,用戶輸入)生成查詢。給定的發出請求的實體可以執行多個不同的查詢。當針對一或多個數據庫執行每一查詢時,把相應的查詢結果返回至發出請求的實體。可以永久性地存儲任何查詢與/或一或多個相應的查詢結果。
永久性存儲的查詢與/或查詢結果可以由多個用戶加以共享。換句話說,可永久性地存儲由給定用戶所創建的查詢,并且可使查詢對其他用戶可用。甚至,該給定用戶還可以創建僅旨在為一或多個其他用戶加以使用的查詢。例如,數據庫管理員可以以某種特定的查詢語言,為那些需要從一或多個基礎數據庫提取信息,但不熟悉該種特定的查詢語言的用戶創建預定義查詢。從而,這些用戶簡單地需要執行這些預定義查詢,以從一或多個基礎數據庫提取所要求的信息。
然而,在多個用戶之間共享永久性存儲的查詢的一個困難在于,特定的預定義查詢不能精確地滿足不同用戶的需求。例如,假設某公司中的數據庫管理員已使用某種特定的查詢語言,創建了旨在由該公司的銷售經理所使用的預定義查詢。這些預定義查詢可以是適合于提取那些與不同目標組的個體相關的數據的相當復雜的查詢。還假設某一給定的銷售經理開始銷售該公司的一種新的產品。因此,該給定的銷售經理可以使用相應的預定義查詢,標識新產品的相應的目標組,并且收集關于該目標組中的個體的信息。
然后,該給定的銷售經理可以使用所收集的信息,精確地向所標識的目標組中的個體展開廣告運動。現在假設所標識的目標組由14~25歲的少年和年輕成年人組成,這些少年和年輕的成年人滿足各種條件,例如,具有特定的嗜好。還假設存在預定義查詢,該預定義查詢適合于提取滿足相同的各種條件的18~25歲的少年和年輕成年人的信息。該給定的銷售經理可以使用該預定義查詢,但為了也能夠請求與那些14~17歲的人相關的所要求的信息,必須修改該預定義查詢。
然而,在修改之后,不再把該預定義查詢指向最初的18~25歲的目標組。換句話說,該修改改變了該預定義查詢的總體意圖。該改變可能影響由僅要求與最初目標組相關的信息的其他用戶對該預定義查詢的隨后的執行。另外,在某些情況下,在修改期間,可能會無意地破壞預定義查詢,特別是,如果銷售經理不熟悉特定的查詢語言。
因此,存在著對用于在多個用戶之間共享永久性存儲的查詢,而且不允許對這些永久性存儲的查詢進行不希望的修改的有效技術的需求。
發明內容
總體上講,本發明涉及一種用于管理存取查詢的方法、系統以及制造物件(article),更具體地講,本發明涉及一種用于管理多個用戶對永久性存儲的查詢的存取。
一個實施例提供了一種管理由多個用戶存取對數據庫中的數據進行的預定義查詢的方法。該方法包括把一或多個存取權與該預定義查詢的至少某部分相關聯。當接收到第一用戶存取該預定義查詢的請求時,根據存取權,限制該第一用戶對該預定義查詢的存取。
另一個實施例提供了一種管理由多個發出請求的實體存取對數據庫中的數據進行的預定義查詢的方法。該方法包括創建存取權,配置存取權以限制對該預定義查詢的存取,并且把存取權與該預定義查詢相關聯。根據存取權,準予發出請求的實體對預定義查詢的某部分或全部進行存取。
另一個實施例提供了一種計算機可讀媒體,該計算機可讀媒體包括程序,當處理器執行該程序時,該程序執行管理由多個用戶存取對數據庫中的數據進行的預定義查詢的處理。該處理包括把一或多個存取權與該預定義查詢的至少某部分相關聯。當接收到第一用戶存取該預定義查詢的請求時,根據存取權,限制該第一用戶對該預定義查詢的存取。
另一個實施例提供了一種系統,該系統包括預定義查詢、一或多個存取權以及查詢管理器。把一或多個存取權與該預定義查詢的至少某部分相關聯。對查詢管理器進行配置,以接收第一用戶存取該預定義查詢的請求,并根據存取權,限制該第一用戶對該預定義查詢的存取。
通過參照附圖所說明的本發明的實施例,可以獲得,并且能夠詳盡了解本發明上述特性、優點以及目的,可以得到以上簡要概括的本發明的更具體的描述。
然而,應該加以注意的是,附圖僅說明了本發明的典型的實施例,因此不應該將它們視為對本發明范圍的限制,因為本發明可支持其它等效的實施例。
圖1A是用于創建一個實施例中永久性存儲的查詢的軟件部件的關系圖;圖1B是用于管理對一個實施例中永久性存儲的查詢的存取的圖1A的軟件部件的關系圖;圖1C是用于管理對另一個實施例中永久性存儲的查詢的存取的圖1A的軟件部件的一個關系圖;圖2~3為流程圖,說明了用于管理對一個實施例中永久性存儲的查詢的存取的方法;以及圖4是表,說明了一個實施例中永久性存儲的查詢和相關的存取權。
具體實施例方式
引言總體上講,本發明涉及一種用于管理存取查詢的方法、系統以及制造物件,更具體地講,本發明涉及一種用于管理由多個用戶對永久性存儲的預定義查詢的存取的方法、系統以及制造物件。根據一個方面,允許多個用戶使用預定義查詢改變和考察一或多個數據庫的數據。還允許多個用戶對預定義查詢進行至少某種程度的操作,從而可避免對預定義查詢的某種形式的總體意圖的任何破壞。為此,把存取權與預定義查詢的一或多個部分相關聯。例如,這些存取權可以類似于數據庫列的存取權。在一個實施例中,把給定預定義查詢中的每一個查詢條件與存取權(也稱為“特權”)相關聯。對關于具體查詢條件的特權進行配置,以規定什么樣的相應的查詢工具將允許具體用戶處理這種查詢條件。
數據處理環境把本發明的一個實施例作為隨計算機系統一起使用的程序產品加以實現。該程序產品的一或多個程序定義了各實施例(包括此處所描述的方法)的功能,并且可以將該程序產品的一或多個程序包含在各種信號承載媒體上。僅說明性地把信號承載媒體描述為包括,但不局限于(i)永久性地存儲在非可寫存儲媒體(例如,計算機中的只讀存儲設備,諸如CD-ROM驅動器可讀的CD-ROM盤等)上的信息;(ii)存儲在可寫存儲媒體(例如,軟盤驅動器中的軟盤或硬盤驅動器)上的可更改信息;或者(iii)通過通信媒體傳送給計算機的信息,例如通過計算機或電話網絡,包括無線通信。特別是,后一個實施例包括從因特網和其它網絡上下載的信息。當執行指導本發明的功能的計算機可讀的指令時,這樣的信號承載媒體代表了本發明的實施例。
總體上講,為實現本發明實施例所執行的例程,可以作為操作系統、或具體應用、部件、程序、模塊、對象或指令序列的一部分。通常,本發明的軟件由大量指令構成,本地計算機將把這些指令翻譯成機器可讀的格式,從而翻譯成可加以執行的指令。而且,程序由變量和數據結構構成,變量和數據結構或者本地駐留于程序中,或者出現在存儲器中或存儲設備上。另外,還可以根據某一應用,標識以下所描述的各種程序,將針對該應用在本發明的某一具體實施例中實現這些程序。然而,應該認識到,使用隨后的任何一種具體的命名法,僅僅是為了方便,因此不應把本發明局限于在任何通過這樣的命名法所標識與/或所意指的特定應用中單獨使用。
可以以包括至少一個網絡客戶計算機和至少一個服務器計算機在內的硬件/軟件配置,實現本發明的實施例。而且,還可以把本發明的實施例施加于任何可比較的硬件配置,而不管計算機系統是復雜的、多用戶計算裝置、單用戶工作站、還是不具有其自身的非易失存儲器的網絡設備。另外,還應該認識到,盡管可以參照具體的查詢語言,包括SQL,但本發明并不局限于某一特定的語言、標準或版本。因此,本技術領域中的技術人員將會意識到,本發明也適用于其它查詢語言,并且本發明還適用于某一特定查詢語言今后的變化以及當前未知的其它查詢語言。
優選實施例以下,參照本發明的實施例。然而,應該認識到,本發明不局限于具體描述的實施例。相反,為了實現和實踐本發明,無論是否與不同的實施例相關,可以考慮下列特性和元素的任意組合。另外,在各實施例中,本發明還提供了優于現有技術的眾多優點。然而,盡管本發明的實施例可以實現優于其它可能的方案與/或優于現有的技術的優點,但某一給定實施例是否實現了某一具體的優點并不構成對本發明的限制。因此,以下的方面、特性、實施例以及優點僅為說明性的,如無特別說明,不應把它們視為所附權利要求的元素或對所附權利要求的限制。
現在參照圖1A,圖1A說明了一個實施例中的軟件部件的關系圖。根據一個方面,對這些軟件部件進行配置,以從使用查詢的數據源得到數據的子集。還可以對軟件部件進一步地加以配置,以永久性地存儲查詢,以及創建存取權與/或把存取權與永久性存儲的查詢相關聯。
僅說明性地把軟件部件描述為包括發出請求的實體110、查詢管理器140以及用戶接口190。根據一個方面,發出請求的實體110針對數據源130的數據132發布查詢,例如查詢120。數據源130代表任何一個數據集合,而不管具體的物理表示。在一個實施例中,數據源130包括一或多個數據庫。可根據關系方案(可由SQL查詢加以存取)或根據XML方案(可由XML查詢加以存取),對該一個或多個數據庫中的每一個數據庫加以組織。然而,本發明并不局限于某一特定的方案,并可以考慮向當前尚不知曉的方案擴展。如此處所使用的術語“方案”總體地指數據的具體的排布。
可以預定義發出請求的實體110所發布的查詢120,也可以響應于所接收的輸入,例如經由用戶接口190所接收的輸入(例如,用戶輸入),生成發出請求的實體110所發布的查詢120。查詢管理器140執行針對數據源130的數據132的查詢120,以獲得查詢結果170。接下來,把查詢結果170提交給發出請求的實體110。
在一個實施例中,查詢120為SQL查詢。最普遍執行的SQL查詢之一為選擇語句。選擇語句通常具有這樣的格式“SELECT<子句>FROM<子句>WHERE<子句>GROUP BY<子句>HAVING<子句>ORDER BY<子句>”。子句通常必須遵循該順序。只有SELECT(選擇)和FROM(從)子句是必需的,所有其它子句都是可選的。一般情況下,選擇語句的結果為從存儲于關系數據庫(例如,圖1的數據源130)中的一或多個現存的表中所提取的數據的子集(例如,數據132),其中,FROM子句識別將從中選擇數據的一或多個表的名稱。把數據的該子集作為新的表加以對待,并將其命名為結果表。WHERE(在如下條件下)子句確定應把哪些行返回于結果表中。通常,WHERE子句包含一或多個必須由結果表中所返回的每一行所滿足的查詢條件。這些一或多個查詢條件通常為一或多個謂詞,每一個謂詞使用適當的比較操作符,例如“=”、“>”以及“<”,指定來自某些列的兩個值、常數或相關的值之間的比較。通常,由布爾操作符,例如布爾AND(與)與/或OR(或)操作符連接WHERE子句中的多個謂詞。
在另一個實施例中,查詢120為抽象查詢。使用由數據抽象模型所定義的邏輯字段來構成抽象查詢。把每一個邏輯字段映射至數據源130中所使用的基礎數據表示(例如XML、SQL可其它類型的表示)的數據的一或多個物理實體。另外,在數據抽象模型中,獨立于基礎數據表示定義邏輯字段,從而允許形成松散耦合至基礎數據表示的查詢。可以對抽象查詢加以配置,以存取數據132以及返回查詢結果,或修改(即,刪除或更新)數據132。為了針對數據132加以執行,把抽象查詢轉換成與數據132的基礎數據表示相一致的形式(此處將其稱為具體查詢)。2002年2月26日提交的同一申請人的待審的標題為“Application Protability And Extensibility Through DatabaseSchemaAnd QueryAbstraction(通過數據庫方案及查詢抽象的應用便攜性和可擴展性)”的美國專利申請10/083,075中詳細地描述了把抽象查詢轉換成具體查詢的過程,現將該申請全部內容并入此處,以作參考。
在一個實施例中,查詢管理器140把查詢120作為查詢存儲庫150中的永久數據對象156“查詢(QUERY)N”加以存儲。僅說明性地把查詢存儲庫150描述為已包括多個查詢152“查詢1”和154“查詢2”(為了簡潔起見,僅描述了兩個),并且把它們作為永久數據對象加以存儲。但應該加以注意的是,具有查詢152,154以及156的查詢存儲庫150,僅僅是說明性的,因此,不旨在對本發明加以限制。例如,可以由不同的發出請求的實體創建查詢152,154以及156,并且分別把它們存儲在相應數據處理系統中的不同的位置。
在一個實施例中,根據存取權134,限制對查詢152,154以及156的存取。僅說明性地把存取權134描述為存儲在數據源130中。例如,存取權134可以針對多個發出請求的實體中的每一個發出請求的實體規定相應的發出請求的實體是否被授權存取一或多個查詢152,154以及156中的某個或全部查詢。存取權134還可以針對一或多組發出請求的實體規定相應的一或多個組是否被授權存取一或多個查詢152,154以及156中的某個或全部查詢。另外,存取權134也可以針對一或多個查詢152,154以及156中的不同部分與/或不同的發出請求的實體或發出請求的實體組規定不同類型的存取。更具體地講,根據附于給定查詢的存取權,可以通過僅把給定查詢的受限制部分提交于相應的發出請求的實體,來限制對給定查詢的存取。還可以根據附于給定查詢的存取權,通過禁止相應的發出請求的實體對給定查詢的至少一部分的修改,來限制對給定查詢的存取。
在一個實施例中,使用用戶接口190創建存取權134。根據一個方面,由被授權的發出請求的實體,諸如數據庫管理員,創建存取權134。另外,可以由創建了查詢152,154以及156中的給定的一個查詢的相應的發出請求的實體在創建時創建查詢152,154以及156中給定的該查詢的存取權。以下,參照圖1B~C,更詳細地解釋用于限制對查詢152,154以及156的存取的查詢管理器140的操作。
圖1B描述了用于管理對查詢152,154以及156的存取的實施例中圖1A的軟件部件的關系圖。僅說明性地把多個發出請求的實體1101~110N描述為發布用于獲得與查詢152,154以及156相關的數據的數據請求160。例如,假設發出請求的實體1101~110N中的一個發出請求的實體(以下將其稱為“發出請求的實體110”)發布用于存取查詢152“查詢1”的數據請求160中的一個數據請求(以下將其稱為“數據請求160”)。查詢管理器140接收數據請求160,并且確定是否授權發出請求的實體110存取查詢152的全部或至少某些部分。為此,查詢管理器140存取數據源130中的存取權134。現在,假設存取權134授權發出請求的實體110僅存取查詢152的一或多個部分,而不是整個查詢152。因此,根據存取權134,查詢管理器140從查詢152中識別一或多個部分。然后,查詢管理器140把來自查詢152的一或多個部分作為受限的查詢172提交于發出請求的實體110。可以根據存取權134,隨同指出對所提交的查詢進行了限制的指示,把受限的查詢172提交于發出請求的實體110。
在一個實施例中,針對多個潛在的發出請求的實體,包括發出請求的實體1101~110N,定義存取權134。如以上所提到的,為了針對查詢152,154以及156規定允許發出請求的實體1101~110N中的哪一個發出請求的實體存取該查詢,可以實施存取權134。而且,還可以向存取權134提供用戶或應用特定(application-specific)的粒度。例如,可以對存取權134進行配置,以限制對整個查詢或查詢的成份,例如查詢條件,的存取。因此,可能出現不同的情況,其中根據存取權134針對不同的發出請求的實體確定對查詢152,154以及156之一的不同的存取權。換句話說,盡管所有這些發出請求的實體操作于同一查詢,即查詢152,但可以向這些發出請求的實體中的每一發出請求的實體提交不同的查詢數據。例如,可以把查詢152的第一部分提交于第一發出請求的實體,以及把查詢152的第二部分提交于第二發出請求的實體,從而第一部分包括未提交于第二部分的一或多個數據對象。
以下,參照表II~V描述示例性的情況,其中,僅說明性地描述,由用戶所代表的不同的發出請求的實體,試圖存取單個的預定義查詢。下面,參照表I描述示例性的預定義查詢。
表I示例性的預定義查詢001 SELECT*
002 FROM表-x003 WHERE(條件1AND條件2AND條件3)如從表I中所看到的,預定義了示例性查詢以針對數據庫表“表-x”執行(行002)。具體地講,可以使用該示例性查詢以確定滿足具體查詢條件“條件1”與“條件2”與“條件3”(行003)的數據庫表“表-x”(行001)的所有行。
表II示例性情況1001 可以由約翰·史密斯修改的條件“條件1”002 僅可以讀條件“條件2”003 可以由組“研究人員”添加條件在表II的示例性情況1中,規定了表I的示例性查詢的存取權134,以致于僅用戶“約翰·史密斯”可以修改查詢條件“條件1”(行001)。換句話說,根據行001,用戶“約翰·史密斯”可以改變參數,例如查詢條件“條件1”的操作符和值。根據行002,規定存取權134,以致于所有用戶僅可以讀取,但不可以修改查詢條件“條件2”。而且,把表I的完整的查詢與根據行003所規定的存取權相關聯。更具體地講,根據行003,規定存取權134,以致于只有組“研究人員”的用戶可以把一或多個查詢條件添加于表I的示例性查詢。當沒有為情況1中的查詢條件“條件3”指定存取權時,根據一個方面,當希望時,所有用戶都可以對該查詢條件進行操作。
表III示例性情況2001 可以補充條件“條件1”002 隱藏條件“條件3”在表III的示例性情況2中,規定了針對表I的示例性查詢的存取權134,以致于任何用戶均可以補充查詢條件“條件1”(行001)。根據一個方面,如果可以補充查詢條件,則用戶可以不修改查詢條件的謂詞,而僅把一或多個附加的謂詞添加于查詢條件。例如,假設配置查詢條件“條件1”以標識至少18歲的個人。因此,可以把查詢條件“條件1”定義如下“Age>=18”。現在假設用戶希望確定至少18歲、但不老于25歲的個人。在該情況下,用戶可以通過添加相應的補充查詢條件,例如“Age<=25”,補充查詢條件“條件1”。因此,所補充的條件將相應于查詢條件“條件1”和補充查詢條件的組合,即“Age>=18 AND Age<=25”。根據行002,規定存取權134,以致于針對所有用戶隱藏了查詢條件“條件3”。因此,可以把表I中所定義的查詢提交給用戶,以致于不向該用戶顯示查詢條件“條件3”。然而,對于某些實施例來說,在該情況下,可以把某一指示向用戶加以顯示,以指出隱藏了表III中的查詢的一部分,該部分不加以顯示。另外,當沒有為情況2中的查詢條件“條件2”指定存取權時,根據一個方面,當希望時,所有用戶可以對該查詢條件進行操作。
表IV示例性情況3001 使能靜態拷貝在表IV的示例性情況3中,規定了表I的示例性查詢的存取權134,以致于任何用戶均可以進行示例性查詢的個人拷貝(行001)。然后,當把個人拷貝定義成“靜態”(表IV的行001)時,把該個人拷貝與除表I的示例性查詢之外的相同的存取權(即,存取權134)相關聯。
例如,圖1B的發出請求的實體110已對查詢152進行了個人拷貝114,僅說明性地把個人拷貝114描述為存儲在與發出請求的實體110(如虛線箭頭116所表明的)相關聯的本地數據源112中。當根據存取權134限制對查詢152的存取時,也通過存取權134限制對個人拷貝114的存取(如虛線箭頭136所表明的)。因此,當發出請求的實體110存取查詢152的個人拷貝114時,將把受限的查詢172有效地提交給用戶(如虛線箭頭174所表明的)。
表V示例性情況4001 使能動態拷貝在表V的示例性情況4中,規定了表I的示例性查詢的存取權134,以致于任何用戶均可以進行示例性查詢的動態個人拷貝(行001)。可以根據用戶的要求,修改動態個人拷貝。換句話說,將不把存取權134與動態個人拷貝相關聯。
現在,參照圖1C,圖1C描述了用于管理對查詢152,154以及156的存取的另一個實施例中圖1A的軟件部件的關系圖。僅說明性地把多個發出請求的實體1101~110N描述為發布針對多個查詢180的數據請求160,其中把查詢180作為永久數據對象存儲在查詢存儲庫150中。每一個查詢180包括查詢數據182和相關聯的存取權184。根據一個方面,查詢數據182相應于預定義查詢(例如,圖1A的查詢152~156之一)的數據。
例如,現在假設,查詢管理器140接收數據請求160(以下將其稱為“數據請求160”)中給定的數據請求,其中數據請求160來自希望對查詢180中的給定的查詢180(以下將其稱為“查詢180”)進行存取的用戶。以下參照圖4描述查詢180的示例性實施例。
當接收到數據請求160時,查詢管理器140確定是否授權該用戶存取查詢180的全部或至少某些查詢數據182。為此,查詢管理器140確定來自用戶的屬性。所確定的一或多個屬性適合于對用戶進行標識。例如,所確定的一或多個屬性可以為用戶名、用戶的標識符、用戶的角色或者與用戶相關的授權級別。查詢管理器140還確定針對查詢數據182的用戶的存取權。根據存取權184確定用戶的存取權。
在一個實施例中,根據圖1A的存取權134創建存取權184。因此,存取權184可適合于查詢數據182的多個潛在的用戶。換句話說,對于某些或全部查詢數據182,存取權184可適合于每個潛在的用戶。或者,存取權184也可以定義至存取權134的鏈路。在該情況下,把存取權134用于確定是否授權一或多個潛在的用戶存取某些或全部查詢數據182。或者,可以在創建查詢數據182時,創建存取權184,并且將存取權184隨查詢數據182一起加以存儲,作為永久數據對象180。
具體地講,在圖1C中所說明的例子中,查詢管理器140根據隨查詢數據182一起存儲的存取權184,確定是否授權發出請求的實體110存取查詢數據182。更具體地講,查詢管理器140使用存取權184標識允許用戶存取的查詢數據182的部分。然后,查詢管理器140把所標識的部分作為受限的查詢176提交于用戶。以下參照圖2更詳細地描述查詢管理器140的操作。
現在,參照圖2,圖2描述了一種用于管理由多個用戶對預定義查詢(例如,圖1A的查詢152,154以及156之一)進行的存取的方法200的一個實施例。可以使用查詢管理器(例如,圖1A的查詢管理器140)和用戶接口(例如,圖1A的用戶接口190),實現方法200的至少部分步驟。方法200開始于步驟210。
在步驟220,從第一發出請求的實體(例如,圖1A的發出請求的實體110)接收針對數據源(例如,圖1A的數據源130)的查詢(例如,圖1A的查詢120)。在步驟230,創建針對該查詢的存取權。根據一個方面,第一發出請求的實體使用用戶接口創建存取權。對存取權進行配置,以限制對該查詢的存取。在一個實施例中,創建存取權包括把存取權(例如,圖1A的存取權134)存儲在數據源中。因此,當接收到用于存取查詢的請求時,查詢管理器可以在運行時間把查詢與存取權(例如,圖1B的存取權134)加以鏈接。在另一個實施例中,創建存取權包括準備存取權(例如,圖1C的存取權184),以隨永久數據對象(例如,圖1C的查詢180)中的查詢一起加以存儲。或者,永久數據對象中的存取權可以定義至存儲在數據源中的存取權的鏈路。
在步驟240,把存取權與查詢相關聯。在一個實施例中,在步驟250,把存取權作為永久數據對象(例如,圖1C的查詢180)隨查詢一起加以存儲。或者,當把存取權存儲在數據源中時,可以僅存儲查詢,作為永久數據對象(例如,圖1B的查詢152)。
應該加以注意的是,多個發出請求的實體可以根據相關聯的存取權隨后存取已在步驟250存儲的永久數據對象。僅說明性地把描述為,在步驟260,從第二發出請求的實體(例如,圖1B~C的發出請求的實體110)接收數據請求(例如,圖1B~C的數據請求160),以存取已在步驟250作為永久數據對象加以存儲的查詢。
在步驟270,根據存取權,準予或拒絕存取永久數據對象的至少一或多個部分。以下參照圖3描述準予存取永久數據對象的示例性方法。然后,方法200在步驟280退出。
現在,參照圖3,圖3描述了根據圖2的步驟270準予存取永久數據對象(例如,圖1B的查詢152或圖1C的查詢180)的示例性方法300。可以使用查詢管理器(例如,圖1B~C的查詢管理器140)執行方法300的至少部分步驟。方法300開始于步驟310,在步驟310,該方法確定永久數據對象是否包括存取權(例如,圖1C的存取權184)。
如果存取權包含在永久數據對象(例如,圖1C的查詢180)中,則在步驟320,確定發出請求的實體的一或多個屬性。然后,在步驟330,根據包含在永久數據對象中的存取權以及確定的一或多個屬性針對發出請求的實體標識對永久數據對象的實體特定的存取權。換句話說,分析包含在永久數據對象中的存取權,以判別是否可以從中獲得專門針對發出請求的實體的存取權。例如,可以分析包含在永久數據對象中的存取權,以標識其中特別授權存取具有所確定的一或多個屬性的發出請求的實體的一些部分。另外,還可以分析包含在永久數據對象中的存取權,以標識其中非特別排除具有所確定的一或多個屬性的發出請求的實體的存取的一些部分。然而,應該加以注意的是,可以按各種不同的方式實現存取權。如以上所提到的,可以把存取權與特定的用戶與/或用戶組相關聯。然而,也可以針對永久數據對象的部分查詢數據,例如查詢條件,而不參照任何特定的用戶或用戶組,來規定存取權。因此,本發明不局限于存取權的具體的實現,而是考慮到向其它實現的擴展,包括向當前未知的一些實現的擴展。
在步驟340,根據所標識的實體特定的存取權,把永久數據對象的零、一或多個部分、或者整個永久數據對象作為受限的查詢(例如,圖1C的受限的查詢176),提交于發出請求的實體。然后,處理在圖2的步驟280繼續。
然而,如果在步驟310確定存取權不包含在永久數據對象(例如,圖1B的查詢152)中,則在步驟350,根據存儲在相應的數據源中的存取權(例如,圖1B的存取權134),確定針對發出請求的實體的相應的實體特定的存取權。然后,處理在步驟340繼續。
現在,參照圖4,圖4描述了包括示例性永久數據對象(例如,圖1C的永久數據對象180)的數據結構400的一個實施例。例如,按具有多個列410~440和行450~480的表格的形式描述數據結構400。
行450展示列410~440的標題。然而,應該認識到,僅說明性地展示了行450,因此,行450是可選的。如從行450可看出的,列410~420包括查詢數據(例如,圖1C的查詢數據182)。列430~440包括存取權(例如,圖1C的存取權184)的說明。更具體地講,僅說明性地把列410描述為包括預定義查詢的標識。僅說明性地把列420描述為包括查詢條件。僅說明性地把列430描述為包括與不同查詢條件相關聯的存取權。僅說明性地把列440描述為包括對其施加了包含在列430中的存取權的用戶/用戶組的指示。
例如,把行460~464與第一查詢“查詢1”相關聯,其中,第一查詢“查詢1”具有3個查詢條件,即“條件1”、“條件2”以及“條件3”。在行460~464中,規定了針對這3個查詢條件的存取權。更具體地講,根據行460,針對查詢條件“條件1”所規定的存取權為“只讀”型(列430)。該存取權施加于所有用戶,因為沒有針對列440中的“條件1”規定具體的用戶或用戶組。換句話說,允許所有用戶只讀地存取查詢條件“條件1”。
根據行462,針對查詢條件“條件2”所規定的存取權為“修改”型(列430)。該存取權施加于用戶組“研究人員”(列440)的所有用戶。換句話說,允許用戶組“研究人員”的所有用戶修改查詢條件“條件2”。根據一個方面,當所規定的存取權為“修改”時,并且當未針對其他用戶或用戶組規定對“條件2”的存取權時,可以通過默認,把查詢條件“條件2”對其他用戶/用戶組隱藏,或允許只讀地存取。為此,在一個實施列中,可以定義用戶特定的或應用特定的默認存取權。
根據行464,針對查詢條件“條件3”所規定的存取權為“只讀”型(列430)。該存取權施加于兩個用戶,第一用戶“管理員”,例如,數據庫管理員,以及第二用戶“約翰·史密斯”(列440)。換句話說,僅允許“管理員”和“約翰·史密斯”讀取查詢條件“條件3”。例如,假設公司X的“約翰·史密斯”已創建了“查詢1”。“查詢1”允許存取“約翰·史密斯”的本地數據,例如與“約翰·史密斯”所詳細闡述的研究項目相關的數據。
根據“查詢1”,“約翰·史密斯”允許該公司中所有用戶存取本地數據,但不允許使用查詢條件“條件3”存取敏感數據。為了避免被其自己無意識地修改查詢條件“條件3”,“約翰·史密斯”已把其存取權設置為“只讀”。還假設,根據公司X的內部規程,必須允許數據庫管理員存取公司X中任何預定義查詢的所有部分。例如,數據庫管理員必須能夠驗證給定的查詢條件是否不是非必須地限制數據的存取。因此,在該給定的例子中,允許數據庫管理員讀取,但不能修改查詢條件“條件3”。另外,當所規定的存取權為針對兩個特定用戶,即針對“管理員”和“約翰·史密斯”的“只讀”,且當未針對其他用戶或用戶組規定對“條件3”的存取權時,可以通過默認,把查詢條件“條件3”對所有其他用戶/用戶組隱藏。
把行470與第二查詢“查詢2”相關聯。然而,在列420中,沒有針對第二查詢“查詢2”指示具體的查詢條件。因此,列430中針對第二查詢“查詢2”所規定的存取權施加于該查詢的所有成份。更具體地講,根據列430,針對查詢“查詢2”所規定的存取權為“添加條件”。由于在列440中沒有針對“查詢2”規定特定的用戶或用戶組,所以該存取權施加于所有用戶。換句話說,任何用戶可以把一或多個查詢條件添加于第二查詢“查詢2”。
把行480與第三查詢“查詢N”相關聯。然而,在列420中,沒有針對第三查詢“查詢N”指示具體的查詢條件。而且,在列430中沒有規定針對第三查詢“查詢N”的存取權。因此,當希望時,任何用戶都可以對第三查詢“查詢N”進行操作。
應該加以注意的是,已通過舉例的形式,參照圖4,描述了不同類型的存取,即“只讀”、“修改”以及“添加條件”。然而,也可以提供其它類型的存取,例如,允許補充給定預定義查詢的一或多個查詢條件的存取(例如,表III的情況2)。而且,其它類型的存取還可允許對預定義查詢進行靜態或動態的拷貝(例如,分別為表IV和V的情況3和4)。因此,此處所描述的所有類型的存取和存取權,僅為說明性的,而不是對本發明的限制。相反,廣泛地考慮了適合于提供查詢與/或基于查詢條件的安全的任何存取類型。
盡管以上的描述針對的是本發明的實施例,然而,在不背離本發明的基本范圍的情況下,可以設計本發明的其它和進一步的實施例,本發明的范圍由權利要求加以確定。
對相關申請的交叉參照本申請涉及2002年2月26日提交的同一申請人的待審的標題為“Application Portability And Extensibility Through Database Schema And QueryAbstraction(通過數據庫方案及查詢抽象的應用便攜性和可擴展性)”的美國專利申請10/083,075,現將其全部內容并入此處,以作參考。
權利要求
1.一種管理由多個用戶存取對數據庫中的數據進行的預定義查詢的方法,包括把一或多個存取權與所述預定義查詢的至少某部分相關聯;接收第一用戶存取所述預定義查詢的請求;以及根據存取權,限制所述第一用戶對所述預定義查詢的存取。
2.根據權利要求1所述的方法,其中,使用由抽象描述數據庫中的數據的數據抽象模型所定義的邏輯字段,來構成預定義查詢。
3.根據權利要求2所述的方法,其中,把每個邏輯字段映射至數據庫中所使用的基礎數據表示的數據的一或多個物理實體。
4.根據權利要求1所述的方法,還包括確定第一用戶的一或多個屬性;以及根據第一用戶的存取權和一或多個屬性,限制第一用戶對預定義查詢的存取。
5.根據權利要求4所述的方法,其中,根據第一用戶的存取權和一或多個屬性來限制第一用戶對預定義查詢的存取,包括使用一或多個所確定的屬性,根據存取權,標識針對第一用戶的用戶特定的存取權;以及其中,根據用戶特定的存取權,準予第一用戶存取預定義查詢的某部分或全部。
6.根據權利要求4所述的方法,其中,一或多個屬性為下列中的至少之(i)用戶名;(ii)用戶角色;以及(iii)用戶授權級別。
7.根據權利要求1所述的方法,其中,一種類型的存取權允許第一用戶讀取,但不能修改預定義查詢的第一部分。
8.根據權利要求7所述的方法,其中,一種類型的存取權防止第二用戶讀取預定義查詢的第一部分。
9.根據權利要求7所述的方法,其中,一種類型的存取權允許第二用戶讀取和修改預定義查詢的第一部分。
10.根據權利要求1所述的方法,其中,一種類型的存取權防止第一用戶讀取預定義查詢的某部分。
11.根據權利要求1所述的方法,其中,一種類型的存取權允許第一用戶把查詢條件附于所述查詢的某部分,但不能修改所述部分。
12.根據權利要求1所述的方法,其中,根據第一用戶的存取權和一或多個屬性限制第一用戶對預定義查詢的存取,此過程包括允許所述用戶對預定義查詢進行個人拷貝。
13.根據權利要求12所述的方法,其中,根據第一用戶的存取權和一或多個屬性限制第一用戶對預定義查詢的存取,此過程包括允許所述用戶修改個人拷貝的某受限部分。
14.根據權利要求12所述的方法,其中,還把與預定義查詢相關聯的存取權與個人拷貝相關聯。
15.一種管理由多個發出請求的實體存取對數據庫中的數據進行的預定義查詢的方法,包括創建存取權,所述存取權被配置以限制對所述預定義查詢的存取;把存取權與所述預定義查詢相關聯;以及根據存取權,準予發出請求的實體對預定義查詢的某部分或全部進行存取。
16.根據權利要求15所述的方法,其中,根據存取權,準予發出請求的實體對預定義查詢的某部分或全部進行存取,包括允許發出請求的實體拷貝預定義查詢;以及把存取權與所拷貝的預定義查詢相關聯。
17.根據權利要求16所述的方法,還包括允許發出請求的實體修改與所拷貝的預定義查詢相關聯的存取權。
18.根據權利要求15所述的方法,其中,根據存取權,準予發出請求的實體對預定義查詢的某部分或全部進行存取,包括允許發出請求的實體把一或多個查詢條件添加至預定義查詢。
19.根據權利要求15所述的方法,還包括從具體的發出請求的實體接收存取預定義查詢的請求;根據存取權,把預定義查詢提交于所述具體的發出請求的實體;以及向所述具體的發出請求的實體顯示所述具體的發出請求的實體的存取權的指示。
20.根據權利要求15所述的方法,還包括從具體的發出請求的實體接收存取預定義查詢的請求;以及根據存取權,把預定義查詢提交于所述具體的發出請求的實體,其中,預定義查詢的至少一個查詢條件未出現在所述預定義查詢中。
21.根據權利要求15所述的方法,其中所述預定義查詢至少包括一個查詢條件;以及根據存取權,準予發出請求的實體存取預定義查詢的某部分或全部,此過程包括下列的至少之一(i)允許所述發出請求的實體讀取,但不能修改至少一個查詢條件;以及(ii)允許所述發出請求的實體修改至少一個查詢條件。
22.根據權利要求15所述的方法,其中,把存取權與預定義查詢相關聯,包括把預定義查詢和存取權作為永久數據對象加以存儲。
23.一種計算機可讀媒體,所述計算機可讀媒體包括程序,當處理器執行所述程序時,所述程序執行管理由多個用戶存取對數據庫中的數據進行的預定義查詢的處理,所述處理包括把一或多個存取權與所述預定義查詢的至少某部分相關聯;接收第一用戶存取所述預定義查詢的請求;以及根據存取權,限制所述第一用戶對所述預定義查詢的存取。
24.根據權利要求23所述的計算機可讀媒體,其中,使用由抽象描述數據庫中的數據的數據抽象模型所定義的邏輯字段,來構成預定義查詢。
25.根據權利要求24所述的計算機可讀媒體,其中,把每個邏輯字段映射至數據庫中所使用的基礎數據表示的數據的一或多個物理實體。
26.根據權利要求23所述的計算機可讀媒體,還包括確定第一用戶的一或多個屬性;以及根據第一用戶的存取權和一或多個屬性,限制第一用戶對預定義查詢的存取。
27.根據權利要求26所述的計算機可讀媒體,其中,根據第一用戶的存取權和一或多個屬性來限制第一用戶對預定義查詢的存取,包括使用一或多個所確定的屬性,根據存取權,標識關于第一用戶的用戶特定的存取權;以及其中,根據用戶特定的存取權,準予第一用戶存取預定義查詢的某部分或全部。
28.根據權利要求26所述的計算機可讀媒體,其中,一或多個屬性為下列的至少之一(i)用戶名;(ii)用戶角色;以及(iii)用戶授權級別。
29.根據權利要求23所述的計算機可讀媒體,其中,一種類型的存取權允許第一用戶讀取,但不能修改預定義查詢的第一部分。
30.根據權利要求29所述的計算機可讀媒體,其中,一種類型的存取權防止第二用戶讀取預定義查詢的第一部分。
31.根據權利要求29所述的計算機可讀媒體,其中,一種類型的存取權允許第二用戶讀取和修改預定義查詢的第一部分。
32.根據權利要求23所述的計算機可讀媒體,其中,一種類型的存取權防止第一用戶讀取預定義查詢的某部分。
33.根據權利要求23所述的計算機可讀媒體,其中,一種類型的存取權允許第一用戶把查詢條件附于所述查詢的某部分,但不能修改所述部分。
34.根據權利要求23所述的計算機可讀媒體,其中,根據第一用戶的存取權和一或多個屬性來限制第一用戶對預定義查詢的存取,此過程包括允許所述用戶對預定義查詢進行個人拷貝。
35.根據權利要求34所述的計算機可讀媒體,其中,根據第一用戶的存取權和一或多個屬性來限制第一用戶對預定義查詢的存取,此過程包括允許所述用戶修改個人拷貝的某受限部分。
36.根據權利要求34所述的計算機可讀媒體,其中,還把與預定義查詢相關聯的存取權與個人拷貝相關聯。
37.一種系統,包括預定義查詢;一或多個存取權,與所述預定義查詢的至少某部分相關聯;以及查詢管理器,被配置,從而接收第一用戶存取所述預定義查詢的請求;以及根據存取權,限制所述第一用戶對所述預定義查詢的存取。
全文摘要
一種用于管理存取查詢的方法、系統以及制造物件,更具體地講,一種用于管理由多個用戶對永久性存儲的查詢進行的存取的方法、系統以及制造物件。一個實施例提供了一種管理由多個用戶存取對數據庫中的數據進行的預定義查詢的方法。該方法包括把一或多個存取權與該預定義查詢的至少某部分相關聯。當接收到第一用戶存取該預定義查詢的請求時,根據存取權,限制該第一用戶對該預定義查詢的存取。
文檔編號G06F17/30GK1725219SQ200510087418
公開日2006年1月25日 申請日期2005年7月22日 優先權日2004年7月22日
發明者理查德·D·德廷杰, 丹尼爾·P·科爾茲 申請人:國際商業機器公司