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

關系數(shù)據(jù)庫管理系統(tǒng)中用于支持動態(tài)運行時間對象定義的方法和裝置的制作方法

文檔序號:6419332閱讀:180來源:國知局

專利名稱::關系數(shù)據(jù)庫管理系統(tǒng)中用于支持動態(tài)運行時間對象定義的方法和裝置的制作方法
技術領域
:本發(fā)明涉及數(shù)據(jù)庫系統(tǒng)和方法。
背景技術
:訪問關系數(shù)據(jù)庫的應用程序通過名字來引用數(shù)據(jù)庫中的對象(表,列等等)。這樣就會在應用程序和數(shù)據(jù)庫對象之間產(chǎn)生緊耦合。當對數(shù)據(jù)庫或應用程序進行更新時這種緊耦合會造成復雜化。在多個應用程序引用相同的對象以及應用程序本身在安裝位置于不同的時間更新時,這種復雜化情況會進一步加重。以上問題的傳統(tǒng)解決方式是使用關系數(shù)據(jù)庫所通常提供的“視圖”結構。但是,由于眾所周知的更新視圖的缺陷并且視圖在其定義中通常包括非標準SQL語法,因此使用數(shù)據(jù)庫視圖也是有問題的。能夠在不同廠商的關系數(shù)據(jù)庫上運行是一種理想的性能。
發(fā)明內(nèi)容本發(fā)明致力于實現(xiàn)一種能在關系數(shù)據(jù)庫中進行動態(tài)運行時間對象定義的方法和裝置。在本發(fā)明的一個示范性實施例中,在應用程序和數(shù)據(jù)庫對象之間引入一個數(shù)據(jù)和處理層。該層可以中介對物理層的訪問并使得應用程序可以嵌入邏輯名而不是物理名。如果需要的話,在應用程序運行時,本發(fā)明還允許對該層的維護能夠動態(tài)發(fā)生。中介層最好能夠在多種關系數(shù)據(jù)庫上運行,并克服關系數(shù)據(jù)庫廠商引入的對SQL所做的特定廠商擴展。本發(fā)明的一個示范性實施例是通過PlatinumTechnology公司的POEMS數(shù)據(jù)交換機(也叫做“DEX”)和POEMS服務處理機“ptsprdbm”來實現(xiàn)的。DEX存儲中介層所使用的數(shù)據(jù),處理工作由ptsprdbm服務處理機來完成。在該實施例中,DEX中介層可以看作是提交給DEX的消息與DEX的物理表布局之間的一種映射。這種映射允許與物理表的復關聯(lián),因此便使更高的層與物理實現(xiàn)的改變隔離開來。同樣,中介還定義邏輯事務,這些邏輯事務把一個或多個應用程序請求與要在表或表系上執(zhí)行的操作關聯(lián)起來。在一個示范性實施例中,每一個應用程序都會產(chǎn)生一個或多個請求,它們被發(fā)送到DEX。對于每個請求,DEX返回一個結果??梢杂幸粋€或多個ptsprdbm進程同時運行。每個應用程序請求由一個ptsprdbm服務處理機進程處理。中介層數(shù)據(jù)存儲在DEX的元數(shù)據(jù)主題區(qū)域內(nèi)。運行在相同機器上的所有ptsprdbm實例都引用相同的元數(shù)據(jù)。元數(shù)據(jù)把應用程序的請求映射到物理表上。因此應用程序不需要知道物理表的標識符。物理表會隨時間變化,并且如果保持了元數(shù)據(jù)映射,應用程序就將與這些變化隔離開來。例如,客戶機程序可以通過一條消息請求與被稱之為“機器”的邏輯實體有關的數(shù)據(jù)。邏輯名“機器”可以與被稱之為“機器”的物理表相對應,也可以不相對應。中介層的責任是把邏輯事務名正確地轉換為物理表名和列。在另一個例子中,客戶機程序可以提交一條被映射到名為“機器的ipaddress”的邏輯事務的消息,這里“機器名”=absun10。在這個例子中,所引用的元素應當認為是必須轉換成物理對象的邏輯對象。這種需要是因為所請求的數(shù)據(jù)同樣會改變格式。例如在版本1的POEMS中,對于每個機器而言物理數(shù)據(jù)庫只存儲一個ip_address。但是在版本2的POEMS中,對于每臺機器而言,物理數(shù)據(jù)庫則可以存儲一列ip_address。這會造成一個不同的結果集合返回給客戶機程序,可能會中斷客戶機應用程序。使用中介數(shù)據(jù),為版本2定義一個該服務處理機知道怎么處理的新的邏輯事務,這樣就可以返回給客戶機程序一個正確的結果集合。按照本發(fā)明使用中介數(shù)據(jù)層的一個優(yōu)點在于應用程序可以定義包含有新的邏輯事務的新消息并使得DEX服務處理機能夠正確地處理這些新消息而不用對現(xiàn)有的服務處理機作出修改。應用程序只需要在DEX元數(shù)據(jù)表中加入一行來定義一個新的邏輯事務。服務處理機知道如何把這些新消息映射到加入到元數(shù)據(jù)表中的邏輯事務數(shù)據(jù)并因此為這些新消息構建正確的SQL命令。對物理數(shù)據(jù)庫的改變也可以以類似方式進行處理。一個新的邏輯事務可以被定義為把舊的消息映射到一個新的表格布局上。這可以通過為每個事務使用一個版本號來完成,或通過從元數(shù)據(jù)中刪除原始事務來完成。元數(shù)據(jù)還可被用于把用戶所創(chuàng)建的表集成到DEX中。用戶可以使用標準SQL創(chuàng)建一個表,然后在DEX元數(shù)據(jù)表中加入行來描述這個新表。用戶還可以創(chuàng)建per_triggers以便在現(xiàn)有的表被更新時,新表能夠被自動更新。圖1是根據(jù)本發(fā)明的一個示范性系統(tǒng)的框圖;圖2是根據(jù)本發(fā)明的一個示范性進程的流程圖。具體實施例方式圖1是根據(jù)本發(fā)明的一個系統(tǒng)的示范性實施例的框圖,該系統(tǒng)通過POEMS數(shù)據(jù)交換機(DEX)1000來實現(xiàn)。POEMSDEX在PLATINUM條款公共服務參考指南這本書中進行了描述。DEX1000包括多個物理表1500,并且可以與一個或多個應用程序100交互。應用程序100的例子包括ProVisionDirector和TSReorg。按照本發(fā)明,在應用程序100和DEX1000的物理表1500之間提供一個中介層1100。中介層1100包括一個或多個POEMS關系數(shù)據(jù)庫服務處理機(ptsprdbm)進程1150的實例和元數(shù)據(jù)主題區(qū)域1200。中介數(shù)據(jù)1250存儲在元數(shù)據(jù)主題區(qū)域1200中。中介數(shù)據(jù)1250如下所述由ptsprdbm服務處理機1150使用。中介層1100提供提交給DEX1000的消息與DEX的物理表布局之間的映射。這種映射允許與物理表的復關聯(lián),因此便使更高的層與物理實現(xiàn)的改變隔離開來。多個邏輯名可以引用相同的物理對象并且邏輯名還可以隨時間而變化。同樣,中介還定義邏輯事務,這些邏輯事務把一個或多個應用程序請求(例如PEC消息)與要在表或表系上執(zhí)行的操作關聯(lián)起來。一個操作對應于數(shù)據(jù)操縱語言(DML)動詞插入、更新、選擇和刪除中的一個。每個應用程序100創(chuàng)建一個或多個請求并把這些請求發(fā)送給DEX1000。DEX1000為每個接收到的請求返回一個結果。一個或多個ptsprdbm服務處理機程序1150可以在任一時間同時運行。每個應用程序請求由一個ptsprdbm進程1150處理。所有在同一臺機器上運行的ptsprdbm實例都引用相同的元數(shù)據(jù)。物理表可以有一個或多個。元數(shù)據(jù)把來自應用程序的請求映射到向物理表的請求。因此應用程序100不需要知道物理表1500的標識符。物理表1500可以隨時間變化,并且如果保持了元數(shù)據(jù)映射,應用程序就將與這些變化隔離開來。中介元數(shù)據(jù)1250可以進行更新,例如通過更新POEMS或應用程序100來對其進行更新。例如,一個新的應用程序100可以具有與置入元數(shù)據(jù)主題區(qū)域1200的應用程序相關的新的中介數(shù)據(jù)。這種功能所提供的靈活性在于使用本發(fā)明系統(tǒng)的各種產(chǎn)品可以單獨進行發(fā)展,而不需要所有的應用程序同時進行更新。最好,這種更新由服務處理機1150執(zhí)行,這一點與向應用程序100提供對中介元數(shù)據(jù)1250的直接訪問相反。轉換發(fā)生在DEX服務處理機1150中。服務處理機1150使用中介數(shù)據(jù)1250來執(zhí)行這種轉換。服務處理機1150最好使用一種標準的、開放式接口,如開放式數(shù)據(jù)庫連接性(ODBC),來連接元數(shù)據(jù)主題區(qū)域1200和/或應用程序100。在另一個可供選擇的實施例中,定制的POEMSODBC驅動程序把服務處理機1150的轉換層封裝起來。然后,該驅動程序就可以由第三方應用程序使用以訪問DEX(例如InfoReports)。在一個示范性實施例中,中介數(shù)據(jù)1250包括如下的表系per_table該表包括表格的總清單。DEX中的每個表在該表格中都有一個表目。per_column該表格包括DEX中每個表格的每個列的表目。與每個列相關聯(lián)的屬性是一個表中該列的類型、大小和位置。per_data_type該表包括所有支持的數(shù)據(jù)類型的總清單。per_key該表包括用于在DEX表上建立主關鍵字和外關鍵字的屬性。per_logical_object該表識別邏輯事務,它被用于查找事務細節(jié)以及與該事務相關聯(lián)的任何觸發(fā)器。per_tran_column該表識別屬于一個邏輯事務的列以及該列是否參與了SQL“where”子句的構建。per_trigger該表把觸發(fā)器與一個或多個邏輯事務關聯(lián)起來。如下為用于把中介數(shù)據(jù)1250存儲為元數(shù)據(jù)的一個示范性模式<prelisting-type="program-listing"><![CDATA[CREATETABLEper_source(per_source_idihtNOTNULL,source_descriptionvarchar(255)NULL,product_idintNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_sourcePRIMARYKEY(per_source_id))CREATETABLEper_tran_col_type(column_typesmallintNOTNULL,column_type_descvarchar(31)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_tran_col_typePRIMARYKEY(column_type))CREATETABLEper_logical_objectobject_idintNOTNULL,object_namevarchar(30)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_logical_objectPRIMARYKEY(object_id))CREATETABLEper_tabletable_namevarchar(30)NOTNULL,storage_typechar(10)NULL,subject_areaCHAR(18)NULL,delete_policyCHAR(18)NULL,sequence_nbrnumeric(10,0)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_tablePRIMARYKEY(table_name))CREATETABLEper_key(tablenamevarchar(30)NOTNULL,kev_idsmallintNOTNULL,key_typechar(1)NOTNULL,fbreign_tablevarchar(30)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_keyPRIMARYKEY(table_name,key_id))CREATETABLEper_data_typedata_typesmallintNOTNULL,data_type_descvarchar(31)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,經(jīng)CONSTRAINTXPKper_data_type  PRIMARYKEY(data_type)  )  CREATETABLEper_column  column_namevarchar(30)NOTNULL,  table_namechar(18)NULL,  table_sequencesmallintNOTNULL,  column_sizeintNOTNULL,  null_flagsmallintNOTNULL,  sequence_flagsmallintNOTNULL,  per_sourceintNULL,  per_last_updatedsmalldatetimeNOTNULL,  per_statussmallintNULL,  CONSTRAINTXPKper_column  PRIMARYKEY(column_name,table_name)  )  CREATETABLEper_key_column  column_namevarchar(30)NOTNULL,  table_namevarchar(30)NOTNULL,  table_namevarchar(30)NOTNULL,  key_idsmallintNOTNULL,  per_0sourceintNULL,  per_last_updatedsmalldatetimeNOTNULL,  per_statussmallintNULL,  CONSTRAINTXPKper_key_column  PRIMARYKEY(column_name,table_name,table_name,key_id)  )CREATETABLEper_tran_typetran_typesmallintNOTNULL,tran_type_namevarchar(31)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_tran_type  PRIMARYKEY(tran_type))CREATETABLEper_tranobject_idintNOTNULL,tran_typesmallintNOTNULL,tran_versionchar(10)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_logical_tra  PRIMARYKEY(object_id,tran_type))CREATETABLEper_triggerobject_idintNOTNULL,tran_typesmallintNOTNULL,trigger_sequencesmallintNOTNULL,trigger_obj_namevarchar(30)NOTNULL,trigger_tran_typesmallintNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,  CONSTRAINTXPKper_trigger_det  PRIMARYKEY(object_id,tran_type,trigger_sequence))  CREATETABLEper_logical_column  object_idintNOTNULL,  logical_col_idsmallintNOTNULL,  logical_col_namevarchar(30)NOTNULL,  column_namevarchar(30)NOTNULL,  table_namevarchar(30)NOTNULL,  per_sourceintNULL,  per_last_updatedsmalldatetimeNOTNULL,  per_statussmallintNULL,  CONSTRAINTXPKperlogical_col  PRIMARYKEY(object_id,logical_col_id)  )  CREATETABLEper_tran_column  object_idintNOTNULL,  logical_col_idsmaUintNOTNULL,  tran_typesmallintNOTNULL,  column_typesmallintNOTNULL,  join_columnvarchar(30)NULL,  join_tablevarchar(30)NULL,  where_flagsmallintNOTNULL,  order_by_sequencesmallintNOTNULL,  group_by_sequencesmallintNOTNULL,  sub_tranvarchar(30)NULL,  per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_trans_detaiPRIMARYKEY(object_id,logical_col_id,tran_type))CREATETABLEper_index_typeindex_typesmallintNOTNULL,index_type_descchar(20)NOTNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_index_type  PRIMARYKEY(index_type))CREATETABLEper_index(table_namevarchar(30)NOTNULL,index_sequencesmallintNOTNULL,index_typesmallintNULL,per_sourceintNULL,per_last_updatedsmalldatetimeNOTNULL,per_statussmallintNULL,CONSTRAINTXPKper_index  PRIMARYKEY(table_name,index_sequence))CREATETABLEper_index_column(column_sequencesmallintNOTNULL,table_namevarchar(30)NOTNULL,index_sequencesmallintNOTNULL,  table_namevarchar(30)NOTNULL,  column_namevarchar(30)NOTNULL,  per_sourceintNULL,  per_last_updatedsmalldatetimeNOTNULL,  per_statussmallintNULL,  CONSTRAINTXPKper_index_column  PRIMARYKEY(column_sequence,table_name,index_sequence)  )  CREATETABLEper_config  per_versionchar(10)NOTNULL,  sp_versionchar(10)NOTNULL,  doc_versionchar(10)NOTNULL,  install_datesmalldatetimeNULL,  per_sourceintNULL,  per_last_updatedsmalldatetimeNOTNULL,  per_statussmallintNULL,  CONSTRAINTXPKper_config  PRIMARYKEY(per_version,sp_version,doc_version)  )  CREATETABLEper_status(  per_status_nbrsmallintNOTNULL,  per_status_namehar(31)NOTNULL,  per_sourceintNULL,  per_last_updatedsmalldatetimeNOTNULL,  per_statussmallintNULL,  CONSTRAINTXPKper_status  PRIMARYKEY(per_status_nbr))]]></pre>圖2所示的流程圖描述了根據(jù)本發(fā)明的服務處理機1150的示范性操作方法。如圖2所示,在步驟2010中服務處理機1150(的一個實例)接收來自應用程序100的請求。這種請求被封裝在應用程序請求內(nèi)部的數(shù)據(jù)結構也就是請求數(shù)據(jù)結構或RDS中。在步驟2020中,服務處理機對這種應用程序請求進行解包并提取RDS的成員。數(shù)據(jù)成員包括標識符,標識符在步驟2030中由服務處理機使用來訪問存儲在DEX中的元數(shù)據(jù)。在步驟2040中,對照元數(shù)據(jù)對標識符進行處理。更明確一些說,服務處理機使用元數(shù)據(jù)來對請求內(nèi)容接觸引用并把請求的內(nèi)容映射到元數(shù)據(jù)上。這種處理造成了RDS中的標識符被轉換為物理表1500中使用的標識符。解除引用這一步所返回的結果是一組用于當前的數(shù)據(jù)庫實例的有效物理名。在步驟2050中,服務處理機獲得該組物理名。然后在步驟2060中服務處理機使用這些數(shù)據(jù)來構建一個可以直接對數(shù)據(jù)庫執(zhí)行的SQL語句。再之后,在步驟2070中服務處理機執(zhí)行SQL語句并收集SQL語句處理的結果。在步驟2080中,執(zhí)行SQL語句的結果被重新映射到在步驟2010中所接收到的RDS中的邏輯名中。然后在步驟2090中把這些結果返回給與邏輯名相聯(lián)的應用程序,以上邏輯名是應用程序在發(fā)出請求時所使用的。以此方式,應用程序便完全與物理數(shù)據(jù)庫以及其中所使用的標識符隔離開來。在本發(fā)明的另一個實施例中,還要存儲與DEX數(shù)據(jù)有關的附加元數(shù)據(jù),包含關于哪個實體對數(shù)據(jù)具有權威性的信息(也就是說,哪個應用程序擁有物理表中的數(shù)據(jù),哪個應用程序就可以對這些數(shù)據(jù)進行更新或刪除)。在再一個示范性實施例中,顯示信息和格式化信息被存儲起來以用于每個邏輯對象,并且還可以為應用程序使用,用于在監(jiān)視器或報告中呈現(xiàn)通過中介層訪問的數(shù)據(jù)。在元數(shù)據(jù)中存儲顯示信息和格式化信息可以使得使用這些數(shù)據(jù)的應用程序能夠動態(tài)呈現(xiàn)返回給它們的數(shù)據(jù)。權利要求1.一種用于處理數(shù)據(jù)庫中數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括中介數(shù)據(jù)存儲器;處理機,其中處理機從應用程序接收處理數(shù)據(jù)的請求;從所接收的請求中提取邏輯標識符;通過利用邏輯標識符從中介數(shù)據(jù)存儲器中獲取物理標識符,把邏輯標識符轉換為物理標識符;取出由物理標識符所標識的存儲在物理表中的數(shù)據(jù);處理所取出的數(shù)據(jù)以得到一個結果;利用邏輯標識符把結果返回給應用程序。2.一種用于數(shù)據(jù)庫系統(tǒng)中處理操作的方法,包括以下步驟從應用程序接收處理數(shù)據(jù)的請求;從所接收的請求中提取邏輯標識符;把邏輯標識符轉換為物理標識符;取出由物理標識符所標識的存儲在物理表中的數(shù)據(jù);處理所取出的數(shù)據(jù)以得到一個結果;利用邏輯標識符把結果返回給應用程序。3.權利要求2的方法,其中轉換步驟包括利用邏輯標識符從中介數(shù)據(jù)存儲器中獲取物理標識符。4.權利要求3的方法,其中中介數(shù)據(jù)被動態(tài)更新。5.權利要求3的方法,其中中介數(shù)據(jù)存儲器包含在數(shù)據(jù)庫系統(tǒng)的元數(shù)據(jù)主題區(qū)域中。全文摘要一種用于提供關系數(shù)據(jù)庫中的動態(tài)運行時間對象定義的方法和系統(tǒng)。在應用程序(100)和數(shù)據(jù)庫對象之間引入中介層。該層可以中介對數(shù)據(jù)庫對象,例如表(1500),的訪問,并允許應用程序嵌入邏輯名而不是物理名。如果需要,在應用程序運行時,可以動態(tài)維護中介層。中介層最好可以在多種關系數(shù)據(jù)庫上運行,克服關系數(shù)據(jù)庫廠商引入的對SQL的特定廠商擴展。文檔編號G06F17/30GK1332877SQ99815381公開日2002年1月23日申請日期1999年11月30日優(yōu)先權日1998年11月30日發(fā)明者基思·盧易施,埃德·卡里根,杜安·布恩申請人:聯(lián)合想象計算機公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
昭通市| 公安县| 都江堰市| 苍溪县| 松江区| 嘉义市| 驻马店市| 西平县| 平定县| 航空| 电白县| 来凤县| 桐城市| 普洱| 庆元县| 自贡市| 赞皇县| 五常市| 茌平县| 甘肃省| 清水河县| 神农架林区| 赤峰市| 婺源县| 新兴县| 方城县| 郑州市| 哈密市| 赤峰市| 马鞍山市| 九江县| 甘泉县| 德阳市| 吉木乃县| 旺苍县| 焦作市| 星子县| 望都县| 永登县| 启东市| 射洪县|