專利名稱:執(zhí)行數(shù)據(jù)庫查詢的模塊化方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及分析數(shù)據(jù)處理領(lǐng)域,特別是執(zhí)行數(shù)據(jù)庫查詢的模塊化方法和系統(tǒng)。
背景技術(shù):
商業(yè)智能系統(tǒng)主要是作為決策支持系統(tǒng)(DSS)和執(zhí)行信息系統(tǒng)(EIS)開始的。決策支持系統(tǒng)(DSS)和執(zhí)行信息系統(tǒng)(EIS)是從現(xiàn)有的聯(lián)機(jī)交易處理(OLTP)系統(tǒng)提供附加信息的增值系統(tǒng)。
隨著商業(yè)智能系統(tǒng)的發(fā)展,它們將決策支持系統(tǒng)(DSS)的功能性與執(zhí)行信息系統(tǒng)(EIS)的功能性集成在一起,并增加了聯(lián)機(jī)分析處理(OLAP)工具和管理報(bào)告工具。這些混合商業(yè)智能系統(tǒng)逐漸地從大型機(jī)環(huán)境轉(zhuǎn)移到分布式服務(wù)器/桌面環(huán)境,以允許更多的用戶訪問。
近些年來,中央式數(shù)據(jù)倉庫(data warehouses)和數(shù)據(jù)中心(datamarts)的出現(xiàn)已經(jīng)造成在機(jī)構(gòu)內(nèi)等待分析、利用和分配的有效數(shù)據(jù)急劇增加。然而,這種數(shù)據(jù)倉庫和數(shù)據(jù)中心通常是為信息傳遞而不是為交易處理而最佳化的。結(jié)果,數(shù)據(jù)倉庫和數(shù)據(jù)中心僅提供將存儲(chǔ)的數(shù)據(jù)轉(zhuǎn)換成有用的和關(guān)鍵的策略信息的有限的方案。同時(shí),通過提供用于分析大量存儲(chǔ)信息的復(fù)雜分析工具以支持機(jī)構(gòu)內(nèi)的有效規(guī)劃和決策,商業(yè)智能系統(tǒng)取得了主導(dǎo)地位。
在商業(yè)智能系統(tǒng)和其它分析處理工具中,通常提供數(shù)據(jù)集以執(zhí)行所請(qǐng)求的數(shù)據(jù)庫查詢。該數(shù)據(jù)集必須能夠執(zhí)行全部必須的數(shù)據(jù)庫操作,諸如提取、分類、索引和搜索操作。而且數(shù)據(jù)集必須能夠以指定的次序執(zhí)行操作。結(jié)果,必須將數(shù)據(jù)庫操作的全部可能的組合在數(shù)據(jù)集中識(shí)別和編程。這種數(shù)據(jù)集的定制實(shí)現(xiàn)起來是耗時(shí)耗財(cái)?shù)?。而且為增?qiáng)現(xiàn)存系統(tǒng)而提供附加性能需要進(jìn)一步定制數(shù)據(jù)集。
發(fā)明內(nèi)容
本發(fā)明提供一種用于執(zhí)行數(shù)據(jù)庫查詢的模塊化方法和系統(tǒng),該方法和系統(tǒng)基本消除或減少了與以前的系統(tǒng)和方法相關(guān)的缺點(diǎn)和問題。具體地,該方法和系統(tǒng)使用動(dòng)態(tài)選擇和排序模塊數(shù)據(jù)驅(qū)動(dòng)器的智能數(shù)據(jù)集以執(zhí)行請(qǐng)求的查詢所需要的數(shù)據(jù)庫操作。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種駐留在計(jì)算機(jī)可讀介質(zhì)上的查詢引擎包括數(shù)據(jù)驅(qū)動(dòng)器程序庫和智能數(shù)據(jù)集。程序庫中的每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器能夠執(zhí)行預(yù)定義的數(shù)據(jù)庫操作。智能數(shù)據(jù)集能夠響應(yīng)查詢請(qǐng)求以從程序庫中識(shí)別執(zhí)行該請(qǐng)求的必要的數(shù)據(jù)驅(qū)動(dòng)器程序,智能數(shù)據(jù)集還能夠確定執(zhí)行該請(qǐng)求的必需的數(shù)據(jù)驅(qū)動(dòng)器的必需順序,以必需順序生成包括必需的數(shù)據(jù)的驅(qū)動(dòng)器的驅(qū)動(dòng)器鏈,以及按順序執(zhí)行驅(qū)動(dòng)器鏈中的數(shù)據(jù)驅(qū)動(dòng)器。
更具體地,根據(jù)本發(fā)明的特定實(shí)施例,每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器還包括基本界面方法。在該實(shí)施例中,該基本界面方法能夠在執(zhí)行所對(duì)應(yīng)的數(shù)據(jù)驅(qū)動(dòng)器的特定數(shù)據(jù)庫操作時(shí),調(diào)用驅(qū)動(dòng)器鏈中下一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。數(shù)據(jù)驅(qū)動(dòng)器程序庫可以包括能夠執(zhí)行提取、分類、索引、搜索和其它數(shù)據(jù)庫操作的一個(gè)或多個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
本發(fā)明的技術(shù)優(yōu)勢(shì)包括提供一種改進(jìn)的有效執(zhí)行數(shù)據(jù)庫查詢的商業(yè)智能入口。具體地,商業(yè)智能入口使用標(biāo)準(zhǔn)訪問方法執(zhí)行數(shù)據(jù)庫查詢。結(jié)果,不需要為特定的數(shù)據(jù)庫查詢定制入口,并且降低了提供和維護(hù)商業(yè)智能入口的費(fèi)用。
本發(fā)明的另一個(gè)技術(shù)優(yōu)勢(shì)包括提供模塊化查詢引擎。該模塊化查詢引擎包括智能數(shù)據(jù)集和執(zhí)行數(shù)據(jù)庫查詢的模塊化數(shù)據(jù)驅(qū)動(dòng)器程序庫。智能數(shù)據(jù)集動(dòng)態(tài)選擇和排序執(zhí)行請(qǐng)求的查詢所需的數(shù)據(jù)驅(qū)動(dòng)器。結(jié)果,數(shù)據(jù)集是獨(dú)立使用并且能夠被容易地修改以支持新功能。
對(duì)本領(lǐng)域技術(shù)人員來說,本發(fā)明的其它技術(shù)優(yōu)勢(shì)可從后面的附圖、說明書和權(quán)利要求書中容易地得出。
為了更完整地理解本發(fā)明和其優(yōu)點(diǎn),下面結(jié)合附圖進(jìn)行如下的說明,其中相同的參考標(biāo)記代表相同的部件,其中圖1是說明根據(jù)本發(fā)明的一個(gè)實(shí)施例的商業(yè)智能入口的方框圖;圖2是說明用于初始化根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖1的商業(yè)智能入口的方法的流程圖;
圖3是說明用于生成根據(jù)本發(fā)明一個(gè)實(shí)施例的圖1的商業(yè)智能入口中的預(yù)定義查詢模型的方法的流程圖;圖4是說明用于配置和維護(hù)根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖1的商業(yè)智能入口中的客戶機(jī)應(yīng)用程序的流程圖;圖5是說明用于基于根據(jù)本發(fā)明的一個(gè)實(shí)施例的預(yù)定義查詢模型生成和執(zhí)行一個(gè)查詢模型的方法的流程圖;圖6是說明根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖1的模塊化查詢引擎的操作的流程圖;圖7是說明根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖6的模塊化查詢引擎的操作的流程圖;圖8是說明根據(jù)本發(fā)明的一個(gè)實(shí)施例的多維存儲(chǔ)模型的方框圖;圖9是說明圖8的多維存儲(chǔ)模型的示例性數(shù)據(jù)的方框圖;圖10是說明用于生成根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖8的多維存儲(chǔ)模型的方法的流程圖;圖11是說明在根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖1的公文夾中顯示相關(guān)視圖的屏幕圖;和圖12是說明用于在根據(jù)本發(fā)明的一個(gè)實(shí)施例的相關(guān)視圖之間進(jìn)行導(dǎo)航(navigating)的窗口標(biāo)簽的屏幕圖。
具體實(shí)施例方式
圖1說明了根據(jù)本發(fā)明一個(gè)實(shí)施例的商業(yè)智能入口(portal)10。一般地說,商業(yè)智能入口10提供跨越企業(yè)的綜合數(shù)據(jù)訪問和信息共享,以及復(fù)雜的多維分析工具。該分析工具是高度自動(dòng)化的和直觀的,以允許寬范圍的用戶在進(jìn)行戰(zhàn)略決策時(shí)利用存儲(chǔ)的信息。這樣,商業(yè)智能入口10最大化用戶從他們的數(shù)據(jù)中接收的決策支持利益,同時(shí)最小化實(shí)施和管理系統(tǒng)的成本。
在圖1所示的實(shí)施例中,商業(yè)智能入口10實(shí)現(xiàn)了三層級(jí)分布式結(jié)構(gòu),包括由一個(gè)或多個(gè)網(wǎng)絡(luò)18連接的一個(gè)數(shù)據(jù)庫層級(jí)12、一個(gè)服務(wù)器層級(jí)級(jí)14和一個(gè)客戶機(jī)層級(jí)16。服務(wù)器和客戶機(jī)層級(jí)14和16是基于Java的,以支持網(wǎng)際通信協(xié)議(TCP/IP)、多客戶機(jī)和服務(wù)器平臺(tái)、對(duì)多種數(shù)據(jù)源的組合連接、和跨越企業(yè)的入口10的完全可移植性。另外,基于Java的服務(wù)器和客戶機(jī)層級(jí)14和16提供開放式API結(jié)構(gòu),該結(jié)構(gòu)可適用于處理數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)??蛻魴C(jī)/服務(wù)器網(wǎng)絡(luò)18包括公司的企業(yè)網(wǎng),而服務(wù)器/數(shù)據(jù)庫網(wǎng)絡(luò)18包括部分公共和私有網(wǎng)絡(luò)??梢岳斫?,商業(yè)智能入口10可以用其它合適的結(jié)構(gòu)、編程語言、和鏈接來實(shí)現(xiàn)。
參照?qǐng)D1,數(shù)據(jù)庫層級(jí)12包括一個(gè)或多個(gè)數(shù)據(jù)庫20。如下面更詳細(xì)所述,每個(gè)數(shù)據(jù)庫20以包含所有連接到該數(shù)據(jù)庫20的必要信息的別名而顯露,包括數(shù)據(jù)庫登錄。數(shù)據(jù)庫別名的使用防止了對(duì)本地?cái)?shù)據(jù)庫的直接用戶訪問,以便維護(hù)數(shù)據(jù)庫20的完整性。對(duì)此示例性實(shí)施例,數(shù)據(jù)庫20的每個(gè)可以是任何Java數(shù)據(jù)庫連接(JDBC)或目標(biāo)數(shù)據(jù)庫連接(ODBC)適應(yīng)的數(shù)據(jù)庫,以及適當(dāng)?shù)臄?shù)據(jù)倉庫或數(shù)據(jù)中心。
服務(wù)器層級(jí)14包括一個(gè)或多個(gè)服務(wù)器30。服務(wù)器30每一個(gè)包括一組可以在不同平臺(tái)上操作的基于Java的應(yīng)用程序。如下面更詳細(xì)所述,服務(wù)器30為商業(yè)智能入口10提供分層安全、中央管理、快速多線程組合數(shù)據(jù)訪問、和多維數(shù)據(jù)分析。
服務(wù)器30包括目錄32、目錄管理器34、安全管理器36、查詢生成器38、數(shù)據(jù)庫訪問系統(tǒng)40、高速緩存管理器42、多維模型管理器44、和客戶機(jī)管理員46。目錄32存儲(chǔ)所有由商業(yè)智能入口10的管理員和用戶創(chuàng)建的配置、文件和工作成果。這集中了文件的管理,消除了客戶機(jī)系統(tǒng)上的冗余和過時(shí)副本,允許文件在企業(yè)間共享,并為文件提供連續(xù)的安全性。目錄管理器34管理服務(wù)器30內(nèi)的全部共享信息??梢岳斫?,這些配置、文件和工作成果也可以另外在商業(yè)智能入口10中適當(dāng)?shù)卮鎯?chǔ)并管理。
目錄32包括一個(gè)或多個(gè)由系統(tǒng)管理員配置的數(shù)據(jù)庫別名50、用戶簡(jiǎn)檔52、安全組54、和預(yù)定義查詢模型56。目錄32還包括一個(gè)或多個(gè)存儲(chǔ)由系統(tǒng)用戶創(chuàng)建的相關(guān)視圖60的公文夾58。如上所述,數(shù)據(jù)庫別名50包含所有連接到數(shù)據(jù)庫20必要的信息。數(shù)據(jù)庫別名50的使用防止了直接用戶數(shù)據(jù)庫訪問,以維持本地?cái)?shù)據(jù)庫20中的數(shù)據(jù)完整性,并使非技術(shù)用戶可能安全地訪問公司數(shù)據(jù),而不用擔(dān)心被毀壞。另外,數(shù)據(jù)庫別名50還用作對(duì)物理數(shù)據(jù)庫20的組合連接,并且因此減小了支持大量客戶機(jī)所必需的數(shù)據(jù)庫連接的數(shù)量。
用戶簡(jiǎn)檔52每一個(gè)都為用戶定義了優(yōu)先權(quán)的指定范圍和一個(gè)或多個(gè)用戶對(duì)其具有訪問權(quán)的安全組54。用戶簡(jiǎn)檔52由系統(tǒng)管理員生成并維護(hù)。安全組54用由系統(tǒng)管理員分配給每個(gè)組54的安全權(quán)和優(yōu)先權(quán)實(shí)現(xiàn)分層安全模型。提供管理員安全組以允許管理員對(duì)系統(tǒng)的充分的訪問權(quán),包括增加、修改、和刪除系統(tǒng)中的安全組54和用戶簡(jiǎn)檔52的許可。用戶繼承的最終的安全權(quán)和優(yōu)先權(quán)是如用戶簡(jiǎn)檔52中定義的他或她的個(gè)人的權(quán)力和他或她所屬于的每個(gè)安全組54的權(quán)力的統(tǒng)一。這樣,暴露給用戶的系統(tǒng)特性通過從安全組54分配或個(gè)人用戶簡(jiǎn)檔52持有的許可或優(yōu)先權(quán)的擴(kuò)展使用被控制。因此,管理員可以具有連接到數(shù)據(jù)庫20并增加或刪除用戶的能力,而有能力的用戶可能不具有這個(gè)許可。作為替代,有能力的用戶可以具有對(duì)全范圍的數(shù)據(jù)分析和協(xié)作特征的訪問權(quán),而信息消費(fèi)者僅僅能夠運(yùn)行并修改預(yù)先由管理員或有能力的用戶定義的報(bào)告或圖表。
預(yù)定義查詢模型56自身含有特定數(shù)據(jù)庫的邏輯模型,該特定數(shù)據(jù)庫的邏輯模型是為了使較少技術(shù)背景的用戶容易地和直觀地作出查詢創(chuàng)建而建立的。預(yù)定義查詢模型56還從數(shù)據(jù)庫20中抽取數(shù)據(jù),僅暴露數(shù)據(jù)庫20中的與將使用特定查詢模型56的用戶的組或各組相關(guān)的那些部分。預(yù)定義查詢模型56包括來自數(shù)據(jù)庫的相關(guān)表、數(shù)據(jù)庫表內(nèi)的字段和共同定義查詢的各數(shù)據(jù)庫表之間的鏈接。預(yù)定義查詢模型56形成由用戶創(chuàng)建的所有查詢的基礎(chǔ)。這樣,預(yù)定義查詢模型56控制任何特定用戶組將具有訪問權(quán)的任何數(shù)據(jù)庫20中的元素。此外,預(yù)定義查詢模型56建立可以限制任何用戶組進(jìn)行查詢的類型的機(jī)制。具體地,該機(jī)制定義最大計(jì)算機(jī)資源,或控制器,它們可以被用來執(zhí)行查詢和允許在各表之間結(jié)合,以防止可能沖擊商業(yè)智能入口10的完整性的失控或惡意查詢。
公文夾58提供了一種存儲(chǔ)用戶創(chuàng)建或獲得的視圖60的文件系統(tǒng)。此外,為了在內(nèi)部生成視圖60,公文夾58可以包括,例如,字處理文件、電子數(shù)據(jù)表文件和網(wǎng)頁的視圖60。公文夾58的每一個(gè)都是一個(gè)復(fù)合文件,它能夠恢復(fù)視圖60或其它有關(guān)數(shù)據(jù)集的收集。視圖60可以直接被存儲(chǔ)在公文夾58中,或者在公文夾58中相互鏈接。
對(duì)公文夾58的訪問由為用戶建立的安全參數(shù)確定,并且還由公文夾58中的視圖60的生成器確定。在一個(gè)實(shí)施例中,用戶永遠(yuǎn)不會(huì)看見他們不具有訪問優(yōu)先權(quán)的公文夾58。另外,可以定制公文夾58,以當(dāng)公文夾58中的視圖60已經(jīng)被更新或另外修改時(shí)向相關(guān)的用戶提供通知。這樣,系統(tǒng)操作的安全性被維護(hù)得完整,有利于企業(yè)內(nèi)的協(xié)作和信息共享。
視圖60提供用于顯示諸如表格、圖形、報(bào)告、數(shù)據(jù)透視表(pivot)和網(wǎng)頁的多種格式。視圖60既可以是代表當(dāng)前數(shù)據(jù)的現(xiàn)場(chǎng)(live)視圖,也可以是在特定時(shí)間點(diǎn)的數(shù)據(jù)的瞬像視圖。另外,如下更詳細(xì)所述,現(xiàn)場(chǎng)視圖60可以被安排為以規(guī)則的間隔自動(dòng)更新、當(dāng)?shù)谝淮未蜷_時(shí)更新等等。瞬像視圖60可以被設(shè)置為覆蓋在先的瞬像或?yàn)闅v史分析創(chuàng)建瞬像或翻轉(zhuǎn)視圖60的序列。視圖60和公文夾58可以由用戶進(jìn)行私人保存或可以在一個(gè)或多個(gè)安全組54中共享,以有助于協(xié)作和進(jìn)行決策。
安全管理器36管理商業(yè)智能入口10中的安全。具體地,安全管理器36包括用于生成和維護(hù)用戶簡(jiǎn)檔52和安全組54的預(yù)定義安全任務(wù)。安全管理器36還提供允許用戶簡(jiǎn)檔52和安全組54從父級(jí)繼承優(yōu)先權(quán)的安全層次。這樣,系統(tǒng)管理員可以容易地建立并維護(hù)商業(yè)智能入口10的安全。
查詢生成器38提供數(shù)據(jù)庫元素的圖形視圖,以在定義查詢模型中幫助系統(tǒng)管理員和有能力的用戶。預(yù)定義的每個(gè)查詢模型56定義數(shù)據(jù)庫連接、從數(shù)據(jù)庫顯露的表格和欄目的集合(family)、允許的結(jié)合類型和聯(lián)合、元數(shù)據(jù)、執(zhí)行控制器、和查詢的別名。預(yù)定義查詢模型56可以在以后由大量的用戶進(jìn)行修改和使用,以執(zhí)行安全的查詢。
數(shù)據(jù)庫訪問系統(tǒng)40包括功能性和軟件,用于訪問和查詢數(shù)據(jù)庫20,并且用于將查詢結(jié)果返回給服務(wù)器30,由用戶進(jìn)行處理、分析和報(bào)告。對(duì)于示例的實(shí)施例,數(shù)據(jù)庫訪問系統(tǒng)40包括查詢調(diào)度程序72、SQL生成器74、連接管理器76、和Java數(shù)據(jù)庫連接(JDBC)78。
查詢調(diào)度程序72初始化被調(diào)度的查詢。如上所述,任何視圖60,包括包含于視圖60中的數(shù)據(jù)和計(jì)算,都可以根據(jù)幾個(gè)選項(xiàng)被設(shè)置為從數(shù)據(jù)庫20刷新,該幾個(gè)選項(xiàng)包括指定的時(shí)間調(diào)度程序。這允許視圖60被輕易地刷新以反映數(shù)據(jù)的當(dāng)前狀態(tài),并允許用戶總是用最新的信息進(jìn)行工作。另外,可以自動(dòng)地調(diào)度瞬像視圖60根據(jù)同樣的查詢創(chuàng)建瞬像視圖60的歷史庫。因此,例如,可以調(diào)度視圖60在每個(gè)星期一、星期三和星期五的的下午10點(diǎn)鐘進(jìn)行更新,并經(jīng)由共享的公文夾58自動(dòng)地分配給一組用戶。
SQL生成器74從用戶接收用戶修改或更新的查詢模型,并生成用于由連接管理器76執(zhí)行的原文的SQL查詢。這樣,由用戶以圖形顯示和編輯的查詢模型被自動(dòng)地轉(zhuǎn)換為可執(zhí)行的數(shù)據(jù)庫指令,并在其后執(zhí)行。這允許初學(xué)者用戶和其他信息消費(fèi)者用很少的或根本不用編程的知識(shí)就可以充分地使用商業(yè)智能入口10并從中獲益。
在一個(gè)實(shí)施例中,SQL生成器74包括對(duì)話指定生成器和生成原文SQL的SQL語法分析樹。對(duì)話指定生成器對(duì)應(yīng)于由商業(yè)智能入口10訪問或與其連接使用的數(shù)據(jù)庫20的不同類型。對(duì)話指定生成器可以包括,例如Oracle、Sybase、DB2、和SQL生成器。
連接管理器76從SQL生成器74接收原文SQL查詢請(qǐng)求,并與數(shù)據(jù)庫20通信,以通過Java數(shù)據(jù)庫連接(JDBC)78執(zhí)行被請(qǐng)求的查詢。在示例的實(shí)施例中,連接管理器包括模塊化查詢引擎80,該引擎包括智能數(shù)據(jù)組82和數(shù)據(jù)驅(qū)動(dòng)器84的程序庫。如下更詳細(xì)所述,每個(gè)數(shù)據(jù)驅(qū)動(dòng)器84執(zhí)行預(yù)定義的數(shù)據(jù)庫操作。智能數(shù)據(jù)組82在必要時(shí)從程序庫中選擇并排序數(shù)據(jù)驅(qū)動(dòng)器,以執(zhí)行查詢請(qǐng)求。結(jié)果,標(biāo)準(zhǔn)化了數(shù)據(jù)庫訪問方法并且不需要為每個(gè)應(yīng)用程序定制數(shù)據(jù)組。
高速緩存管理器42包括具有多個(gè)頁92的高速緩存90和處理線程94。高速緩存42響應(yīng)于查詢請(qǐng)求接收從數(shù)據(jù)庫20提取的數(shù)據(jù),并將它們饋送給頁92。高速緩存管理器42與驅(qū)動(dòng)高速緩存90的處理線程94異步運(yùn)行,以將數(shù)據(jù)饋送給頁92。可以理解,數(shù)據(jù)可以另外由服務(wù)器30進(jìn)行適當(dāng)?shù)亟邮?、存?chǔ)、和初始處理。
多維模型管理器44生成并處理多維存儲(chǔ)模型100。如下更詳細(xì)所述,多維存儲(chǔ)模型100利用非稀疏(non-sparse)結(jié)構(gòu)以最小化模型100的尺寸。模型100的減小的尺寸改善了處理次數(shù),并在數(shù)據(jù)分析期間允許有效的數(shù)據(jù)透視(pivot)和展示(drill)操作。另外,模型100使用開放式結(jié)構(gòu)以允許在已經(jīng)構(gòu)建了該模型后動(dòng)態(tài)地執(zhí)行計(jì)算。結(jié)果,用戶可以創(chuàng)建新的計(jì)算以分析在模型100的原始定義期間的不期望的數(shù)據(jù)交叉。這減少了支持?jǐn)?shù)據(jù)透視(pivot)和展示(drill)操作必需的時(shí)間和資源。
客戶機(jī)管理員46提供入口10從其管理客戶機(jī)的中心點(diǎn)??蛻魴C(jī)管理員46提供自動(dòng)管理客戶機(jī)應(yīng)用程序的零管理結(jié)構(gòu),以最大化用戶的執(zhí)行和最小化網(wǎng)絡(luò)流量,同時(shí)保證客戶機(jī)總是使用最新的應(yīng)用程序。
客戶機(jī)層級(jí)16包括多個(gè)客戶機(jī)110??蛻魴C(jī)110可以在其它客戶機(jī)和服務(wù)器30的本地,或與其遠(yuǎn)離。在一個(gè)實(shí)施例中,客戶機(jī)110提供對(duì)服務(wù)器30的全部訪問權(quán),包括系統(tǒng)管理。如上所述,所有客戶機(jī)110的功能由存儲(chǔ)在服務(wù)器30上的健壯(robust)的許可組控制。許可被授權(quán)給單個(gè)用戶和用戶的安全組。這樣,商業(yè)智能入口10的健壯的功能性被適當(dāng)?shù)乜刂?,并定量地供給企業(yè)的所有用戶,對(duì)較少技術(shù)的用戶也不會(huì)看起來過于復(fù)雜。
客戶機(jī)110包括客戶機(jī)API 112和圖形用戶界面(GUI)114。在示例的實(shí)施例中,客戶機(jī)110被設(shè)計(jì)為具有其為Java片或Java豆(bean)的所有構(gòu)件。在這個(gè)實(shí)施例中,如下面更詳細(xì)所述,當(dāng)與服務(wù)器30建立連接時(shí),客戶機(jī)110識(shí)別它的構(gòu)件。這允許有效管理客戶機(jī)110和將附加的功能性集成進(jìn)客戶機(jī)110。
客戶機(jī)API 112包括一組定義客戶機(jī)110如何與服務(wù)器30通信的Java級(jí)(classes)。因?yàn)榭蛻魴C(jī)API 112允許任何Java程序與服務(wù)器30通信,所以企業(yè)可以有效地為它的客戶機(jī)110增加附加的、定制的能力。
圖形用戶界面114包括一組管理面板116、一組用戶面板118、一組向?qū)?20、查詢編譯器122、一組閱讀器124、和屬性檢查器126。管理和用戶面板116和118提供用于指導(dǎo)管理員和用戶進(jìn)行他們各自操作的圖形顯示。
向?qū)?20將創(chuàng)建過程分為一個(gè)或多個(gè)邏輯步驟,并指導(dǎo)管理員和用戶進(jìn)行創(chuàng)建過程。這有助于初學(xué)者用戶和其他信息消費(fèi)者在執(zhí)行查詢和分析結(jié)果時(shí)不用詳細(xì)的編程知識(shí)。這樣,企業(yè)內(nèi)的所有用戶能夠有效地使用商業(yè)智能入口10以提取有意義的數(shù)據(jù),并因此提高了他們?cè)谄髽I(yè)內(nèi)的操作區(qū)域。
查詢編譯器122指定數(shù)據(jù)從哪里來、顯示什么實(shí)質(zhì)性的數(shù)據(jù)、和它如何被存儲(chǔ)。查詢編譯器122提供預(yù)定義查詢模型56的圖形視圖,以允許用戶直觀地理解和修改模型56,以適合特定的需求。在一個(gè)實(shí)施例中,查詢編譯器122只允許用戶查看那些他們有優(yōu)先權(quán)的模型56的數(shù)據(jù)元素。查詢編譯器122將預(yù)定義查詢模型56的用戶編輯作為可以上載到服務(wù)器30并被服務(wù)器30執(zhí)行的用戶修改的查詢模型128而存儲(chǔ)。
閱讀器124創(chuàng)建了對(duì)表格、圖形、報(bào)告、數(shù)據(jù)透視表、網(wǎng)頁等等的查看的結(jié)合。閱讀器124允許用戶容易地從數(shù)據(jù)的任何視圖60轉(zhuǎn)換到任何其它視圖,并對(duì)數(shù)據(jù)進(jìn)行分類和篩選。視圖60也可以輸出給HTML,用于在網(wǎng)絡(luò)服務(wù)器上發(fā)布或在目錄32中共享。如上所述,數(shù)據(jù)視圖60可以是現(xiàn)場(chǎng)的或瞬像的。視圖60或視圖60的公文夾58可以在單個(gè)用戶自己的目錄區(qū)域內(nèi)私人保存,也可以在一個(gè)或多個(gè)安全組54中分配和共享,以幫助協(xié)作和進(jìn)行決策。
在閱讀器124內(nèi),表格閱讀器130將信息顯示為一系列的列或行。因?yàn)楸砀褚晥D提供了如何組織信息的整體概念,所以它典型地用作開發(fā)概念的開始點(diǎn)。在表格視圖中,用戶可以增加篩選器,增加計(jì)算的字段,并增加概要和次總信息??梢灾匦屡帕?、隱藏和另外修改各列??梢栽诓煌膶哟紊戏诸惡筒榭磧?nèi)容。
報(bào)告閱讀器132以報(bào)告的格式顯示數(shù)據(jù)。報(bào)告視圖提供了健壯的、聯(lián)合的報(bào)告格式并且有助于自動(dòng)的報(bào)告生成和分配。用戶可以在報(bào)告的交互圖形設(shè)計(jì)視圖中自由地安排各字段和各列,同時(shí)增加計(jì)算、次總和、分組、標(biāo)題、頁腳、題目和圖形。
圖形閱讀器134以寬范圍的2維或3維格式顯示數(shù)據(jù)的圖形視圖。這些格式可以包括例如桿形、餅形、線形、分散形和放射形的圖形。在用圖形工作時(shí),用戶可以通過篩選數(shù)據(jù)、使用原始數(shù)據(jù)的子集改變圖形類型或內(nèi)容,并提取多維數(shù)據(jù)。也可以在空閑時(shí),通過按不同的次序?qū)⒂涗浄诸愐约案淖儓D形屬性來改變圖形視圖。
數(shù)據(jù)透視表閱讀器136提供沿著多個(gè)方向顯示多維或立體數(shù)據(jù)的數(shù)據(jù)透視表視圖。這允許用戶沿著不同的方向?qū)⑿畔⒎指畛善蚍綁K,以獲得對(duì)企業(yè)的活動(dòng)或成績(jī)的不同的觀點(diǎn)。數(shù)據(jù)透視表視圖支持在多個(gè)方向上的分層,并允許用戶執(zhí)行向下展示、向上展示或貫通性展示分析。如下面更詳細(xì)所述,多維視圖生成于多維存儲(chǔ)模型100。
瀏覽器閱讀器138提供嵌入式、交叉平臺(tái)網(wǎng)絡(luò)瀏覽器。這允許用戶訪問工作成果和基于web(網(wǎng)絡(luò))的互聯(lián)網(wǎng)或互聯(lián)網(wǎng)環(huán)境。在其它視圖中創(chuàng)建的報(bào)告或?qū)ο罂梢暂敵鼋oHTML,用于粘貼到網(wǎng)站上,或通過瀏覽器界面顯示。
屬性檢查器1 26允許用戶改變特定視圖的顯示屬性。在一個(gè)實(shí)施例中,屬性檢查器126是無模式的。在這個(gè)實(shí)施例中,屬性檢查器126在屏上時(shí)應(yīng)用這些變化,以允許用戶在關(guān)閉屬性檢查器122之前用不同的配置和屬性進(jìn)行試驗(yàn)。
商業(yè)智能入口10的客戶機(jī)110和服務(wù)器30一起向企業(yè)信息結(jié)構(gòu)增加了戰(zhàn)略層,并向?qū)挿秶挠脩羰枪逃械乜蓴U(kuò)展的集成查詢、報(bào)告、和分析提供單個(gè)的入口(entry)點(diǎn)。由于商業(yè)智能入口10可以在企業(yè)內(nèi)充分地集成,因此入口10有助于日常企業(yè)范圍的分析傳遞和信息共享。結(jié)果,企業(yè)內(nèi)更多的人將能夠更經(jīng)常地和生產(chǎn)性地使用已經(jīng)為企業(yè)存在的數(shù)據(jù)。
圖2是說明用于初始化按照本發(fā)明的一個(gè)實(shí)施例的商業(yè)智能入口10的方法的流程圖。參照?qǐng)D2,該方法開始于步驟200,其中系統(tǒng)管理員定義了用戶簡(jiǎn)檔52。如上所述,用戶簡(jiǎn)檔52為用戶利用系統(tǒng)內(nèi)的特征提供許可。接下來,在步驟202,系統(tǒng)管理員定義安全組54。如上所述,用戶繼承的最終的安全權(quán)和優(yōu)先權(quán)是如用戶簡(jiǎn)檔52中定義的他或她的個(gè)人的權(quán)力和他或她所屬于的每個(gè)安全組54的權(quán)力的統(tǒng)一。
接著在步驟204,系統(tǒng)管理員為每個(gè)數(shù)據(jù)庫20生成數(shù)據(jù)庫別名50。數(shù)據(jù)庫別名50防止了對(duì)數(shù)據(jù)庫的直接用戶訪問,以維持?jǐn)?shù)據(jù)整體性,并使非技術(shù)用戶可能安全地訪問公司數(shù)據(jù),而不用擔(dān)心毀壞。數(shù)據(jù)庫別名還用來組合連接物理數(shù)據(jù)庫20,并因此減少支持大量客戶機(jī)110所必需的數(shù)據(jù)庫連接的數(shù)量。
接下來在步驟206,系統(tǒng)管理員使用查詢生成器38生成預(yù)定義查詢模型56。預(yù)定義查詢模型56控制任何特定的用戶組將擁有訪問權(quán)的數(shù)據(jù)庫20的元素。另外,預(yù)定義查詢模型56約束可以被執(zhí)行的查詢類型,并限定可以用來執(zhí)行該查詢的最大計(jì)算機(jī)資源和各表格之間的可允許的結(jié)合,以防止失控或惡意查詢。
步驟206通向該過程的結(jié)束,其中系統(tǒng)管理員建立了企業(yè)內(nèi)使用的商業(yè)智能入口10。為了控制系統(tǒng)內(nèi)的數(shù)據(jù)的訪問和分配,作為建立過程的一部分,已經(jīng)為用戶定義了許可和查詢。
圖3是說明用于生成按照本發(fā)明的一個(gè)實(shí)施例的預(yù)定義查詢模型56的方法的流程圖。在這個(gè)實(shí)施例中,模型內(nèi)的指定數(shù)據(jù)被鏈接到可能的程度。另外,將數(shù)據(jù)庫元素以圖形的形式顯示給系統(tǒng)管理員,以有助于查詢模型56的生成。
參照?qǐng)D3,該方法開始于步驟220,其中查詢生成器38將自動(dòng)地識(shí)別并向系統(tǒng)管理員顯示為其生成查詢的數(shù)據(jù)庫20的各表格和各列。接下來,在步驟222,系統(tǒng)管理員為預(yù)定義查詢模型56選擇各表格和各列的子集。
在接下來的決定步驟224,查詢生成器38確定數(shù)據(jù)庫20是否具有完全的外部密鑰(FK)/主密鑰(PK)信息。完全的外部密鑰/主密鑰信息允許不同表格中的數(shù)據(jù)自動(dòng)地鏈接。因此,如果數(shù)據(jù)庫20包括完全的外部密鑰/主密鑰信息,則決定步驟224的肯定分支通向步驟226,其中在預(yù)定義查詢模型56中,子表格使用外部密鑰/主密鑰信息自動(dòng)地鏈接到父表格上。步驟226通向該過程的結(jié)束。在此,可以保存預(yù)定義查詢模型56或可以由系統(tǒng)管理員進(jìn)行進(jìn)一步的編輯。
現(xiàn)在返回到?jīng)Q定步驟224,如果完全的外部密鑰/主密鑰信息不可用,則決定步驟224的否定分支通向決定步驟228。在決定步驟228,查詢生成器38確定完全的主密鑰信息是否可從數(shù)據(jù)庫20獲得。完全的主密鑰信息的供應(yīng)允許通過數(shù)據(jù)庫表格搜索確定父表格和子表格。因此,如果完全的主密鑰信息可用,則決定步驟228的肯定分支通向步驟226,在那里執(zhí)行數(shù)據(jù)庫表格搜索以確定父表格和子表格。在父表格和子表格被確定之后,他們被自動(dòng)鏈接以生成預(yù)定義查詢模型56。然后可以保存或由系統(tǒng)管理員進(jìn)一步修改該預(yù)定義查詢模型。
現(xiàn)在返回到?jīng)Q定步驟228,如果完全的主密鑰信息不可用,則決定步驟228的否定分支通向決定步驟230。在決定步驟230,查詢生成器確定否可從數(shù)據(jù)庫20獲得能夠識(shí)別父表格和子表格和唯一索引信息。如果唯一索引信息可獲得,則決定步驟230的肯定分支通向步驟226。在步驟226,唯一索引信息用來在數(shù)據(jù)庫中搜索父表格和子表格。然后查詢生成器38自動(dòng)地鏈接父表格和子表格以生成預(yù)定義查詢模型56。然后可以保存或由系統(tǒng)管理員進(jìn)一步修改該預(yù)定義查詢模型。
現(xiàn)在返回到?jīng)Q定步驟230,如果唯一索引信息不能從數(shù)據(jù)庫20中獲得,則決定步驟230的否定分支通向步驟232。在步驟232,系統(tǒng)管理員手動(dòng)地識(shí)別和鏈接父表格和子表格以生成預(yù)定義查詢模型56。這樣,用最小的管理員干預(yù),最大程度地自動(dòng)地生成了預(yù)定義查詢模型56??梢岳斫?,數(shù)據(jù)庫表格和其它元素可以另外進(jìn)行適當(dāng)?shù)劓溄印?br>
圖4是說明用于配置和維護(hù)按照本發(fā)明的一個(gè)實(shí)施例的客戶機(jī)應(yīng)用程序的方法的流程圖。在這個(gè)實(shí)施例中,使用薄引導(dǎo)程序(thin boot strap applet)從服務(wù)器30進(jìn)行中央式配置和維護(hù)客戶機(jī)應(yīng)用程序,該引導(dǎo)程序最初用于將形成客戶機(jī)應(yīng)用程序的Java級(jí)別下載到客戶機(jī)110。此后,當(dāng)客戶機(jī)110初始化新的會(huì)話時(shí),客戶機(jī)軟件的全部升級(jí)由服務(wù)器30自動(dòng)地完成。安裝/更新過程的部分包括下載將所有模塊和資源的所有名稱和版本列表在客戶機(jī)110上的顯示文件。
參照?qǐng)D4,該方法開始于步驟250,其中由客戶機(jī)110進(jìn)行對(duì)服務(wù)器30的新的連接。在步驟252,客戶機(jī)110上的引導(dǎo)程序代理將用戶的顯示文件傳送給服務(wù)器30。
在接下來的步驟254,服務(wù)器30將列表在顯示文件中的所有模塊和資源的版本與服務(wù)器30中的對(duì)應(yīng)文件的當(dāng)前版本進(jìn)行比較。在決定步驟256,服務(wù)器30根據(jù)該比較確定是否各模塊或資源中的一些或全部已經(jīng)過時(shí)。如果各模塊或資源中的一些或全部已經(jīng)過時(shí),則決定步驟256的肯定分支通向步驟258。在步驟258,服務(wù)器30為客戶機(jī)110生成遞增的更新。該遞增的更新僅包括需要更新的模塊。
接下來,在步驟260,服務(wù)器將遞增的更新傳送給客戶機(jī)110。在步驟262,客戶機(jī)110根據(jù)該遞增的更新更新客戶機(jī)側(cè)的應(yīng)用程序。然后在步驟264,為最新更新的客戶機(jī)110建立新的會(huì)話。返回到?jīng)Q定步驟256,如果沒有客戶機(jī)應(yīng)用程序過時(shí),則決定步驟256的否定分支也通向步驟264,其中建立了新的會(huì)話。這樣,如果有的話,服務(wù)器30確定什么模塊(或Java級(jí)別)已經(jīng)過時(shí)、失蹤、或陳舊,然后選擇性地將正確的模塊與更新的顯示文件一起推給用戶的機(jī)器。結(jié)果,用戶永遠(yuǎn)不必手動(dòng)地更新客戶機(jī)軟件,并能夠容易地漫游在各工作站之間,以進(jìn)行登錄,而不需要請(qǐng)求在每個(gè)工作站上重新安裝的他們的應(yīng)用程序和數(shù)據(jù)文件。另外,客戶機(jī)110運(yùn)行迅速并總是最新的,同時(shí)中央式地維護(hù)管理并最小化網(wǎng)絡(luò)流量。
圖5是說明用于根據(jù)按照本發(fā)明的一個(gè)實(shí)施例的預(yù)定義查詢模型56修改和執(zhí)行查詢模型的方法的流程圖。在這個(gè)實(shí)施例中,由管理員在服務(wù)器30上生成并維護(hù)預(yù)定義查詢模型56,并基于請(qǐng)求和訪問優(yōu)先權(quán)的校驗(yàn)將其提供給用戶。
參照?qǐng)D5,該方法開始于步驟280,其中服務(wù)器30從用戶接收對(duì)預(yù)定義查詢模型56的請(qǐng)求。接下來,在步驟282,服務(wù)器根據(jù)用戶的優(yōu)先權(quán)確定預(yù)定義查詢模型56的可訪問部分。可訪問部分是用戶可以觀看到的查詢模型56的部分。在特定的實(shí)施例中,可訪問部分也可以是可由用戶編輯的查詢模型的部分??梢酝ㄟ^確定用戶對(duì)查詢模型的優(yōu)先權(quán)來完成預(yù)定義查詢模型56的可訪問部分的確定,然后根據(jù)用戶的優(yōu)先權(quán)確定可訪問部分。
在確定預(yù)定義查詢模型56的可訪問部分時(shí),服務(wù)器30也可以確定預(yù)定義查詢模型56的受保護(hù)的部分。該保護(hù)部分是預(yù)定義查詢模型56的剩余或其它適當(dāng)?shù)牟糠帧H缦旅娓敿?xì)所述,查詢編譯器122可以隱藏預(yù)定義查詢模型的保護(hù)部分或禁止對(duì)預(yù)定義查詢模型的受保護(hù)部分進(jìn)行編輯。
接下來,在步驟284,服務(wù)器30將預(yù)定義查詢模型56下載到客戶機(jī)110。在步驟286,查詢編譯器122向用戶顯示預(yù)定義查詢模型56的可訪問部分。在一個(gè)實(shí)施例中,查詢編譯器122顯示定義預(yù)定義查詢模型56的可訪問數(shù)據(jù)元素的圖形視圖。在顯示可訪問部分時(shí),查詢編譯器122可以隱藏預(yù)定義查詢模型56的受保護(hù)的部分,以阻止編輯和/或觀看那部分。
前進(jìn)到步驟288,查詢編譯器122接收用戶對(duì)預(yù)定義查詢模型56的編輯。用戶編輯可以包括數(shù)據(jù)庫表格、數(shù)據(jù)庫表格中的各列、和數(shù)據(jù)庫表格之間的結(jié)合的選擇和去選擇(deselection)。接下來,在步驟290,查詢編譯器122根據(jù)用戶對(duì)預(yù)定義查詢模型56的可訪問部分的編輯生成用戶修改的查詢模型128。在步驟292,為了執(zhí)行,將用戶修改的查詢模型128上載到服務(wù)器30。
在步驟294,SQL生成器74根據(jù)用戶修改的查詢模型128自動(dòng)地生成數(shù)據(jù)庫。數(shù)據(jù)庫查詢包括可以由連接管理器76執(zhí)行以執(zhí)行查詢的原文SQL。在步驟296,服務(wù)器30接收查詢的結(jié)果。如上所述,查詢結(jié)果最初由高速緩存管理器42存儲(chǔ)在服務(wù)器30中。
前進(jìn)到?jīng)Q定步驟298,如果該查詢包括多維分析,則決定步驟298的肯定分支通向步驟300,在其中根據(jù)結(jié)果生成多維存儲(chǔ)模型100。在步驟302,多維存儲(chǔ)模型100被用于生成數(shù)據(jù)透視表、透穿性展示和其它用戶請(qǐng)求的視圖。
返回到?jīng)Q定步驟298,如果未指示多維分析,則決定步驟298的否定分支通向步驟304,在其中根據(jù)查詢結(jié)果生成請(qǐng)求的單維視圖。步驟302和304每個(gè)都通向決定步驟306。在決定步驟306,服務(wù)器30確定是否為以后的再使用而存儲(chǔ)用戶修改的查詢模型128。如果用戶期望保存查詢模型128,則決定步驟306的肯定分支通向步驟308,其中將查詢模型保存到用戶的選擇的公文夾58或用戶具有訪問權(quán)的安全組58。步驟308和決定步驟306的否定分支每個(gè)都通向決定步驟310。
在決定步驟310,服務(wù)器30確定是否作為歷史瞬像保存查詢結(jié)果。如果用戶選擇將結(jié)果保存為瞬像,則決定步驟310的肯定分支通向步驟312,其中將查詢結(jié)果保存到選擇的公文夾58。步驟312通向該過程的結(jié)束,在此將預(yù)定義查詢模型56提供給用戶進(jìn)行修改和定制。使用數(shù)據(jù)元素的圖形視圖顯示和修改預(yù)定義查詢模型56。這有助于由所有用戶進(jìn)行健壯的數(shù)據(jù)分析,并允許初學(xué)者用戶有效地使用可用的信息,以改善他們的機(jī)構(gòu)內(nèi)的操作。
圖6是說明按照本發(fā)明的一個(gè)實(shí)施例的查詢引擎80的細(xì)節(jié)的方框圖。在這個(gè)實(shí)施例中,查詢引擎80包括數(shù)據(jù)驅(qū)動(dòng)器84的程序庫和智能數(shù)據(jù)組82,該智能數(shù)據(jù)組響應(yīng)于查詢請(qǐng)求可操作,以從程序庫識(shí)別必要的數(shù)據(jù)驅(qū)動(dòng)器84而執(zhí)行該請(qǐng)求。智能數(shù)據(jù)組82進(jìn)一步可操作,以確定執(zhí)行該請(qǐng)求的數(shù)據(jù)驅(qū)動(dòng)器84的必要的次序,以必要的次序生成包括必要的數(shù)據(jù)驅(qū)動(dòng)器84的驅(qū)動(dòng)器鏈,并按次序執(zhí)行驅(qū)動(dòng)器鏈中的數(shù)據(jù)驅(qū)動(dòng)器84。
參照?qǐng)D6,智能數(shù)據(jù)組82響應(yīng)于查詢請(qǐng)求生成驅(qū)動(dòng)器鏈320。驅(qū)動(dòng)器鏈320包括執(zhí)行所請(qǐng)求的查詢所需要的數(shù)據(jù)驅(qū)動(dòng)器322。根據(jù)查詢請(qǐng)求,從可用的數(shù)據(jù)驅(qū)動(dòng)器84的程序庫中自動(dòng)地選擇數(shù)據(jù)驅(qū)動(dòng)器322并由智能數(shù)據(jù)組82進(jìn)行排序。在一個(gè)實(shí)施例中,程序庫中的數(shù)據(jù)驅(qū)動(dòng)器84從基礎(chǔ)級(jí)(base class)中得出,為此,所有界面方法調(diào)用該鏈中的下一個(gè)驅(qū)動(dòng)器。在這個(gè)實(shí)施例中,每個(gè)驅(qū)動(dòng)器具有用于布置在鏈320內(nèi)的同樣相對(duì)位置的鏈優(yōu)先級(jí)。如這里所用,術(shù)語“每個(gè)”意味著至少一個(gè)子集的經(jīng)識(shí)別的項(xiàng)目的每一個(gè)。
對(duì)于示例的實(shí)施例,驅(qū)動(dòng)器鏈320包括數(shù)據(jù)驅(qū)動(dòng)器D1、D2、D3和D4。數(shù)據(jù)驅(qū)動(dòng)器D1執(zhí)行取回?cái)?shù)據(jù)庫操作,該操作返回所請(qǐng)求的記錄。接下來,返回的記錄由數(shù)據(jù)驅(qū)動(dòng)器D2分類,并由數(shù)據(jù)驅(qū)動(dòng)器D3編索引。然后,數(shù)據(jù)驅(qū)動(dòng)器D4在存儲(chǔ)和編索引的數(shù)據(jù)記錄上執(zhí)行所請(qǐng)求的搜索。這樣,模塊化查詢引擎80使用標(biāo)準(zhǔn)化的訪問方法執(zhí)行數(shù)據(jù)庫查詢。結(jié)果,不需要為特定的數(shù)據(jù)庫查詢定制入口10,并減少了提供和維護(hù)商業(yè)智能入口10的費(fèi)用。
圖7是說明按照本發(fā)明的一個(gè)實(shí)施例的模塊化查詢引擎80的操作的流程圖。參照?qǐng)D7,該方法開始于步驟340,其中由智能數(shù)據(jù)組82接收查詢請(qǐng)求。接下來,在步驟342,智能數(shù)據(jù)組82從程序庫動(dòng)態(tài)地選擇執(zhí)行查詢請(qǐng)求所必需的數(shù)據(jù)驅(qū)動(dòng)器84。
前進(jìn)到步驟344,智能數(shù)據(jù)組82確定執(zhí)行該請(qǐng)求所必需的數(shù)據(jù)驅(qū)動(dòng)器84的次序。在步驟346,智能數(shù)據(jù)組82以執(zhí)行該查詢請(qǐng)求的必要次序動(dòng)態(tài)地構(gòu)建包括必要的數(shù)據(jù)驅(qū)動(dòng)器的驅(qū)動(dòng)器鏈。
接下來在步驟348,智能數(shù)據(jù)組執(zhí)行該驅(qū)動(dòng)器鏈以執(zhí)行該查詢請(qǐng)求。在驅(qū)動(dòng)器鏈內(nèi)按次序執(zhí)行數(shù)據(jù)組82,當(dāng)完成它自己的執(zhí)行時(shí),每個(gè)數(shù)據(jù)組調(diào)用該鏈中的下一個(gè)驅(qū)動(dòng)器84。結(jié)果,查詢引擎80是應(yīng)用程序獨(dú)立的,并可以通過將數(shù)據(jù)驅(qū)動(dòng)器84增加到程序庫和關(guān)于它們的功能性編程智能數(shù)據(jù)組82而容易地進(jìn)行修改,以支持新的功能性。
圖8是說明按照本發(fā)明的一個(gè)實(shí)施例的多維存儲(chǔ)模型100的細(xì)節(jié)的方框圖。在這個(gè)實(shí)施例中,存儲(chǔ)模型100利用非稀疏結(jié)構(gòu)以最小化模型100的尺寸。另外,存儲(chǔ)模型100使用開放式結(jié)構(gòu),以允許在構(gòu)建模型100后動(dòng)態(tài)地執(zhí)行計(jì)算。
參照?qǐng)D8,多維存儲(chǔ)模型100包括每維的存儲(chǔ)槽360和經(jīng)計(jì)算的維的存儲(chǔ)槽362。維存儲(chǔ)槽360包含各入口(entry)和從數(shù)據(jù)庫中提取的相關(guān)數(shù)據(jù)值,而經(jīng)計(jì)算的維存儲(chǔ)槽362包含根據(jù)該提取的數(shù)據(jù)計(jì)算的數(shù)據(jù)。
對(duì)于示例的實(shí)施例,每個(gè)維存儲(chǔ)槽360包括入口存儲(chǔ)器370和維存儲(chǔ)器372。入口存儲(chǔ)器370包括一組對(duì)應(yīng)維的非稀疏入口374。最好是僅包括非稀疏入口。入口374代表聯(lián)合維值,并且每個(gè)識(shí)別相關(guān)的數(shù)據(jù)值376。在一個(gè)實(shí)施例中,每個(gè)入口374包括到相關(guān)數(shù)據(jù)值376的指針。另外,數(shù)據(jù)值376可以與各入口374一起存儲(chǔ)在入口存儲(chǔ)器370中??墒?,指針的使用和數(shù)據(jù)值376的分離存儲(chǔ)改善了多維存儲(chǔ)模型100的效率和處理速度。
維存儲(chǔ)器372包括與入口存儲(chǔ)器370中的各入口374相關(guān)的數(shù)據(jù)值376。數(shù)據(jù)值376代表每維的唯一的維值。
為每個(gè)非稀疏入口374提供一組維際鏈接380。每個(gè)維際鏈接識(shí)別不同維存儲(chǔ)槽360中的非稀疏入口374之間的交叉。該組維際鏈接380包括一個(gè)或多個(gè)維際鏈接。在一個(gè)實(shí)施例中,維際鏈接380是雙向的,以允許在從入口點(diǎn)的任一方向的各維存儲(chǔ)槽360之間的有效遍歷(traversals)。
維際鏈接380共同地識(shí)別維存儲(chǔ)槽360中的非稀疏入口374之間的所有交叉。因此,包括非存儲(chǔ)空交叉的所有交叉都可以從非稀疏入口374和維際鏈接380的遍歷得到確定。具體地,第一和第二維中的各數(shù)據(jù)庫入口之間的空交叉由模型中沒有數(shù)據(jù)庫入口或沒有將第一維中的入口374連接到第二維中的入口的維際鏈接380來確定。第一和第二維中的各入口374之間的非稀疏交叉是通過將維際鏈接380從第一維中的指定入口遍歷到第二維中的指定入口、然后獲得與第二維中的入口374相關(guān)的數(shù)據(jù)值376來確定的。通過維際存儲(chǔ)模型100的遍歷獲得的數(shù)據(jù)和信息是為如下更詳細(xì)所述的進(jìn)一步的處理輸出的。
經(jīng)計(jì)算的維362包括一組經(jīng)計(jì)算的值382。經(jīng)計(jì)算的值382是從由用戶用多維存儲(chǔ)模型100同期請(qǐng)求的預(yù)定義計(jì)算導(dǎo)出來的。因此,當(dāng)多維存儲(chǔ)模型100提供開放式結(jié)構(gòu)以允許在它的創(chuàng)建后進(jìn)行計(jì)算時(shí),預(yù)計(jì)算并存儲(chǔ)用戶用該模型請(qǐng)求的同期計(jì)算,以最小化模型100創(chuàng)建后的處理和改善多維分析的速度。
圖9是說明示例性數(shù)據(jù)400和示例性數(shù)據(jù)400的多維存儲(chǔ)模型402的方框圖。參照?qǐng)D9,示例性數(shù)據(jù)400包括維C1和C2和經(jīng)計(jì)算的維C3。維C1包括唯一的入口值A(chǔ)、B和C,而維C2包括唯一的入口值D、E、F、G和H。經(jīng)計(jì)算的維C3包括經(jīng)計(jì)算的對(duì)應(yīng)于不同的預(yù)定義計(jì)算的數(shù)據(jù)值1、2、3、4、5和6。
示例性存儲(chǔ)模型402包括維C1和C2的維存儲(chǔ)槽404和經(jīng)計(jì)算的維C3的經(jīng)計(jì)算的維存儲(chǔ)槽406。在C1維存儲(chǔ)槽404中,維存儲(chǔ)器410包括唯一的維值A(chǔ)、B和C。入口存儲(chǔ)器412包括數(shù)據(jù)值與其相關(guān)的各入口和到各數(shù)據(jù)值的各指針。類似地,C2維存儲(chǔ)槽404在維存儲(chǔ)器414中包括唯一的數(shù)據(jù)值D、E、F、G和H。入口存儲(chǔ)器416包括與數(shù)據(jù)值相關(guān)的各入口和到各數(shù)據(jù)值的指針。維際鏈接420識(shí)別C1和C2維中的各入口之間的交叉,并因此識(shí)別數(shù)據(jù)之間的交叉。經(jīng)計(jì)算的維406包括與C1和C2維中的數(shù)據(jù)的預(yù)定義交叉相關(guān)的經(jīng)計(jì)算的數(shù)據(jù)值1、2、3、4、5和6。
可以從示例性存儲(chǔ)模型402確定,例如C1和C2維中的入口值A(chǔ)和D交叉,因?yàn)樗鼈兺ㄟ^維際鏈接420連接。還可以確定入口值C和D未交叉,因?yàn)樗鼈兾赐ㄟ^維際鏈接420進(jìn)行連接。如果任何一個(gè)或一系列維際鏈接連接各入口,則各入口通過維際鏈接進(jìn)行連接。
圖10是說明用于生成和使用按照本發(fā)明的一個(gè)實(shí)施例的多維存儲(chǔ)模型100的方法的流程圖。參照?qǐng)D10,該方法開始于步驟440,其中響應(yīng)于查詢請(qǐng)求,由多維模型管理器44生成多維存儲(chǔ)模型100,并且該模型是基于查詢請(qǐng)求的結(jié)果的。該查詢請(qǐng)求為多維存儲(chǔ)模型100指定了各維和數(shù)據(jù)維。
在一個(gè)實(shí)施例中,多維模型管理器44通過首先從源取回?cái)?shù)據(jù)記錄來生成多維存儲(chǔ)模型100。然后再為每個(gè)數(shù)據(jù)記錄取回各維值和數(shù)據(jù)值。此后,多維模型管理器44為數(shù)據(jù)記錄的每個(gè)維值確定該維值是否出現(xiàn)在入口存儲(chǔ)器370中,這種情況下它可能被使用。如果該維值未出現(xiàn)在入口存儲(chǔ)器370中,則為入口存儲(chǔ)器370中的維值和存儲(chǔ)在維存儲(chǔ)器372中的對(duì)應(yīng)的數(shù)據(jù)值376創(chuàng)建入口374。在任何一種情況下,接下來從左到右遍歷各維,以為入口存儲(chǔ)器370中的各入口374創(chuàng)建維際鏈接380。在創(chuàng)建正消失的連接時(shí),再使用現(xiàn)存的連接。另外,對(duì)于最靠右的維,由多維模型管理器44增加為記錄取回的數(shù)據(jù)值??梢岳斫?,可以另外適當(dāng)?shù)厣啥嗑S存儲(chǔ)模型100。
在生成多維存儲(chǔ)模型100后,步驟440進(jìn)行到步驟442。在步驟442,多維模型管理器44接收對(duì)指定的各維和/或數(shù)據(jù)維的子集的查看請(qǐng)求。接下來在步驟444,多維模型管理器44確定從存儲(chǔ)模型100生成視圖所必需的遍歷和每個(gè)遍歷的開始點(diǎn)。通過指定的各維和根據(jù)如何組織模型100確定的入口上的開始點(diǎn)來定義各遍歷。
在一個(gè)實(shí)施例中,多維模型管理器44使用從下到上、從右到左的遞歸移動(dòng)從多維存儲(chǔ)模型100接收第一個(gè)和下一個(gè)記錄。在這個(gè)實(shí)施例中,為了檢索第一個(gè)記錄,多維模型管理器將為顯示選擇的第一維定位到第一入口存儲(chǔ)值。接下來,將第一入口左側(cè)的所有父入口定位到它們的第一入口存儲(chǔ)值。所選擇的維的右側(cè)的子入口也被定位到它們的第一入口存儲(chǔ)值。然后,多維模型管理器44在這些位置處為第一記錄檢索各維入口的值。為了檢索下一個(gè)記錄,多維管理器44試圖移動(dòng)視圖最右側(cè)的子入口。如果最右側(cè)的子入口可移動(dòng),則它被重新定位并在多維存儲(chǔ)模型100內(nèi)的當(dāng)前位置取回?cái)?shù)據(jù)值。如果最右側(cè)的子入口不可移動(dòng),則多維模型管理器44試圖移動(dòng)該子入口的父入口,該父入口是該子入口左側(cè)緊鄰的入口。如果該父入口可移動(dòng),則它被重新定位并在多維存儲(chǔ)模型100內(nèi)的當(dāng)前位置取回?cái)?shù)據(jù)值。如果該父入口不可移動(dòng),則試圖移動(dòng)該父入口的父入口,這個(gè)父入口是第一個(gè)父入口左側(cè)緊鄰的入口,并重復(fù)這個(gè)過程直到?jīng)]有父入口遺留下來。此時(shí),過程結(jié)束。可以理解,可以另外適當(dāng)?shù)卮_定多維存儲(chǔ)模型100內(nèi)的遍歷和開始點(diǎn)。
前進(jìn)到步驟446,多維模型管理器44經(jīng)連接多維鏈接380從入口點(diǎn)遍歷多維存儲(chǔ)模型100,以確定指定交叉點(diǎn)的存在和/或值。在步驟448,多維存儲(chǔ)模型100確定指定交叉點(diǎn)的任何值。接下來,在步驟450,多維模型管理器44確定是否對(duì)模型100存在附加的遍歷。如果附加的遍歷存在,則決定步驟450的肯定分支返回到步驟446,并執(zhí)行遺留的遍歷和計(jì)算交叉值,直到完成所有的遍歷。決定步驟的否定分支則通向步驟452。
在步驟452,從多維存儲(chǔ)模型100輸出的數(shù)據(jù)和信息被總結(jié)和分類??梢岳斫?,可以另外配置多維存儲(chǔ)模型100以預(yù)分類和總結(jié)數(shù)據(jù)。可是,通過將遍歷操作與總結(jié)和分類操作分離,改善了處理的效率。
接下來在步驟454,從多維存儲(chǔ)模型100輸出的信息在由客戶機(jī)110的閱讀器124請(qǐng)求的視圖中以圖形顯示給用戶。前進(jìn)到?jīng)Q定步驟456,如果請(qǐng)求附加的視圖,則肯定分支返回到步驟442,在其中接收視圖請(qǐng)求和指定的各維并重復(fù)該過程,直到完成所有請(qǐng)求的視圖并將它們顯示給用戶。此時(shí),決定步驟456的否定分支通向過程的結(jié)束。這樣,商業(yè)智能入口10提供了減小尺寸和改善了處理速度的多維存儲(chǔ)模型100,該模型在數(shù)據(jù)分析期間支持有效的數(shù)據(jù)透視和展示操作。另外,用戶可以創(chuàng)建新的計(jì)算以分析在模型的原始定義期間不期望的數(shù)據(jù)交叉。這減小了支持?jǐn)?shù)據(jù)透視和展示操作所必需的時(shí)間和資源。附加的視圖包括為高層和低層分析展示的數(shù)據(jù)透視表視圖和數(shù)據(jù)。
圖11是說明按照本發(fā)明的一個(gè)實(shí)施例的相關(guān)窗口480的顯示的屏幕圖形。參照?qǐng)D11,顯示窗口480包括沿著顯示窗口480的上沿布置的帶有多個(gè)下拉式菜單488的菜單欄486。工具欄490被布置在緊臨菜單欄486的下面。
顯示窗口480還包括目錄窗口492和與目錄窗口492相臨的公文夾窗口494。目錄窗口492顯示目錄32內(nèi)的文件分層。公文夾窗口494顯示由活動(dòng)公文夾鏈接的視圖。
在公文夾窗口494內(nèi),每個(gè)視圖分散地顯示在離散的視圖窗口496中。由公文夾鏈接的離散文件中視圖的存儲(chǔ)和公文夾窗口494內(nèi)的相關(guān)視圖的顯示允許相關(guān)文件容易地組織到一起并有效地顯示給用戶。具體地,公文夾窗口494用單數(shù)據(jù)界面(SDI)提供公共窗口。在多數(shù)據(jù)界面(MDI)中的公共窗口內(nèi)顯示離散的視圖窗口496。可以理解,相關(guān)部件的其它類型可以離散地存儲(chǔ)并通過復(fù)合文件為顯示而被鏈接在一起。
圖12是說明包括用于在按照本發(fā)明的一個(gè)實(shí)施例的公文夾中的相關(guān)視圖之間進(jìn)行導(dǎo)航的視圖按鈕的顯示窗口500的屏幕圖形。參照?qǐng)D12,顯示窗口500包括沿著顯示窗口500的上沿布置的帶有多個(gè)下拉式菜單504的菜單欄502。工具欄506被布置在緊臨菜單欄502的下面。顯示窗口500包括如前結(jié)合目錄窗口492和公文夾窗口494所述的目錄窗口508和公文夾窗口510。
在示例的實(shí)施例中,用公文夾窗口510最大化視圖窗口512以提供優(yōu)化的查看。為了允許在最大化的窗口之間進(jìn)行導(dǎo)航,響應(yīng)于窗口512的最大化提供有視圖按鈕514,并顯示為沿著公文夾窗口510的上沿的標(biāo)簽。視圖按鈕514每個(gè)都是可操作的,以響應(yīng)于激活而將相關(guān)的窗口512顯示為活動(dòng)窗口。這允許用戶快速且容易地在各窗口之間進(jìn)行導(dǎo)航。結(jié)果,用戶需要經(jīng)常地移動(dòng)、關(guān)閉、打開和調(diào)整窗口的大小,以觀看存儲(chǔ)在離散文件中的相關(guān)數(shù)據(jù)。可以響應(yīng)于其它合適的事件而另外顯示和生成視圖按鈕。例如,可以在第一個(gè)窗口通過疊加窗口而從顯示變成至少基本上隱藏的任何時(shí)間生成視圖按鈕。因此,用戶一指示應(yīng)該最大化、定位或顯示窗口,就可以為將要被覆蓋的窗口生成視圖按鈕。視圖按鈕514可以獨(dú)立于對(duì)應(yīng)的窗口而定位。因此它們可以相臨于對(duì)應(yīng)的窗口或遠(yuǎn)離對(duì)應(yīng)的窗口被顯示。
盡管已經(jīng)用幾個(gè)實(shí)施例描述了本發(fā)明,但可以向本領(lǐng)域的技術(shù)人員建議各種變化和修改。本發(fā)明意欲包含這些落在后附的權(quán)利要求的范圍中的變化和修改。
權(quán)利要求
1.一種駐留在計(jì)算機(jī)可讀介質(zhì)上的查詢引擎,該查詢引擎包括數(shù)據(jù)驅(qū)動(dòng)器程序庫,每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器能夠執(zhí)行預(yù)定義的數(shù)據(jù)庫操作;以及智能數(shù)據(jù)集,能夠響應(yīng)查詢請(qǐng)求從該程序庫中識(shí)別執(zhí)行該請(qǐng)求的必要的數(shù)據(jù)驅(qū)動(dòng)器程序,能夠確定執(zhí)行該請(qǐng)求的必需的數(shù)據(jù)驅(qū)動(dòng)器的必需順序,以必需的順序生成包括必需的數(shù)據(jù)驅(qū)動(dòng)器的驅(qū)動(dòng)器鏈,以及按順序執(zhí)行驅(qū)動(dòng)器鏈中的數(shù)據(jù)驅(qū)動(dòng)器。
2.根據(jù)權(quán)利要求1所述的查詢引擎,每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器還包括在執(zhí)行數(shù)據(jù)驅(qū)動(dòng)器的特定數(shù)據(jù)庫操作時(shí),能夠調(diào)用驅(qū)動(dòng)器鏈中下一個(gè)驅(qū)動(dòng)器的基本界面方法。
3.根據(jù)權(quán)利要求1所述的查詢引擎,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行提取數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
4.根據(jù)權(quán)利要求1所述的查詢引擎,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行分類數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
5.根據(jù)權(quán)利要求1所述的查詢引擎,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行索引數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
6.根據(jù)權(quán)利要求1所述的查詢引擎,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行搜索數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
7.一種用于分析機(jī)構(gòu)信息的商業(yè)智能入口,該商業(yè)智能入口包括通過網(wǎng)絡(luò)連接到遠(yuǎn)程客戶機(jī)的服務(wù)器;駐留在客戶機(jī)上的查詢編譯器,查詢編譯器能夠響應(yīng)于用戶輸入生成查詢模型;駐留在服務(wù)器上的查詢引擎,該查詢引擎包括數(shù)據(jù)驅(qū)動(dòng)器程序庫,每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器能夠執(zhí)行特定的數(shù)據(jù)庫操作;以及智能數(shù)據(jù)集,能夠響應(yīng)基于查詢模型的查詢請(qǐng)求,從該程序庫中識(shí)別執(zhí)行該請(qǐng)求的必要的數(shù)據(jù)驅(qū)動(dòng)器,能夠確定執(zhí)行該請(qǐng)求的必需的數(shù)據(jù)驅(qū)動(dòng)器的必需順序,以必需的順序生成包括必需的數(shù)據(jù)驅(qū)動(dòng)器的驅(qū)動(dòng)器鏈,以及按順序執(zhí)行驅(qū)動(dòng)器鏈中的數(shù)據(jù)驅(qū)動(dòng)器。
8.根據(jù)權(quán)利要求7所述的商業(yè)智能入口,每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器還包括在執(zhí)行數(shù)據(jù)驅(qū)動(dòng)器的特定數(shù)據(jù)庫操作時(shí),能夠調(diào)用驅(qū)動(dòng)器鏈中下一個(gè)驅(qū)動(dòng)器的基本界面方法。
9.根據(jù)權(quán)利要求7所述的商業(yè)智能入口,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行提取(fetch)數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
10.根據(jù)權(quán)利要求7所述的商業(yè)智能入口,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行分類數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
11.根據(jù)權(quán)利要求7所述的商業(yè)智能入口,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行索引數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
12.根據(jù)權(quán)利要求7所述的商業(yè)智能入口,數(shù)據(jù)驅(qū)動(dòng)器程序庫包括能夠執(zhí)行搜索數(shù)據(jù)庫操作的至少一個(gè)數(shù)據(jù)驅(qū)動(dòng)器。
13.一種用于執(zhí)行數(shù)據(jù)庫查詢的方法,包括提供數(shù)據(jù)驅(qū)動(dòng)器程序庫,每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器能夠執(zhí)行特定的數(shù)據(jù)庫操作;接收數(shù)據(jù)庫查詢請(qǐng)求;從程序庫中識(shí)別執(zhí)行該請(qǐng)求的必要的數(shù)據(jù)驅(qū)動(dòng)器程序,確定執(zhí)行該請(qǐng)求的必需的數(shù)據(jù)驅(qū)動(dòng)器的必需順序,以必需的順序生成包括必需的數(shù)據(jù)的驅(qū)動(dòng)器的驅(qū)動(dòng)器鏈;以及通過按順序執(zhí)行驅(qū)動(dòng)器鏈中的數(shù)據(jù)驅(qū)動(dòng)器,執(zhí)行該請(qǐng)求。
14.根據(jù)權(quán)利要求13的方法,其中每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器在執(zhí)行它的數(shù)據(jù)庫操作時(shí),調(diào)用驅(qū)動(dòng)器鏈中下一個(gè)驅(qū)動(dòng)器。
全文摘要
一種駐留在計(jì)算機(jī)可讀介質(zhì)上的查詢引擎,該查詢引擎包括數(shù)據(jù)驅(qū)動(dòng)器程序庫和智能數(shù)據(jù)集。程序庫中的每一個(gè)數(shù)據(jù)驅(qū)動(dòng)器能夠執(zhí)行預(yù)定義的數(shù)據(jù)庫操作。智能數(shù)據(jù)集能夠響應(yīng)查詢請(qǐng)求以從程序庫中識(shí)別執(zhí)行該請(qǐng)求的必要的數(shù)據(jù)驅(qū)動(dòng)器程序,智能數(shù)據(jù)集還能夠確定執(zhí)行該請(qǐng)求的必需的數(shù)據(jù)驅(qū)動(dòng)器的必需順序,以必需順序生成包括必需的數(shù)據(jù)的驅(qū)動(dòng)器的驅(qū)動(dòng)器鏈,以及按順序執(zhí)行驅(qū)動(dòng)器鏈中的數(shù)據(jù)驅(qū)動(dòng)器。
文檔編號(hào)G06F12/00GK1382278SQ00812612
公開日2002年11月27日 申請(qǐng)日期2000年7月28日 優(yōu)先權(quán)日1999年7月30日
發(fā)明者史蒂文·W·博格雷特 申請(qǐng)人:電腦聯(lián)合想象公司