熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java在網格方面的持久應用:整合途徑 (二)

2013-11-23 18:48:37  來源: Java核心技術 

  在這個架構中所有的JPA操作用於替代數據網格JPA操作通常會使用SQL用於數據庫這包括所有的查詢和所有的更新根本上我們用數據網格完全的取代數據庫伴隨著JP QL轉換支持盡管數據存儲是專門在中間層操作我們仍然可以繼續使用JPA為我們設計API對於系統而言不需要長期持久的存儲這是理想狀態如果要求更多的存貯或者查詢性能你可以簡單的增加服務器到網格

  數據庫——依靠數據網格

  即使所有的查詢和更新執行都朝著不利於數據網格的方向發展它仍然有可能融入到一個持久存儲器數據庫在這個構架當中網格負責傳遞網格中的操作性能到數據庫比如說輸入一個對象到網格將會引起數據庫的INSERT操作這個架構的優勢是數據仍然可以頻繁使用而更新會返回到數據庫並且可以報告目的等等理想的情況下網格操作不會同步傳遞到數據庫這樣的話會明顯地減弱生產力異步書寫更新到數據庫可以保持網格的靈敏性並且支持持久性存儲的要求

  混合以及匹配——多種結構

  迄今為止我們把數據網格作為JPA的存儲器對待並且認為JPA是數據網格上層的API標准這個架構之間的不同點實在不明顯對於新對象來說歸結到配置上面要看JPA是否是首先書寫在數據庫上然後寫入數據網格或者是否它僅僅是寫在網格上面處理更新以及刪除操作時候的邏輯與上面相同就像我們看到的查詢操作也與此類似如果我們可以設置如何在一個實體對實體的基礎上讀取輸入查詢我們就可以混合這些架構考慮存儲器與應用程序之間的往來在這樣一個應用程序中你可以得到持久的實體但是你也會得到短暫的實體為了一個持久的實體實體級別的架構可以使得JPA使用數據網格作為存儲器

  按照數據網格修改JPA

  如果順利的話把JPA與數據網格相結合是很有可能的並且可以通過提供快速存取來提升系統的生產力從而在中間層進行數據管理但是他們也為JPA應用程序提供測量標准與普通方法相比它的可測量性更顯著

  傳統意義上提高JPA應用程序的應用率需要提高應用群集上服務器的數量使用下載平衡來均勻的分布工作但是當你提高群集的大小發現這個群集大小是受你限制的限制它可以存儲的內容而不需要引進進程之間的通道和連接更新然後共享數據可以傳遞到所有的群集服務器來確定JPA存儲器不包含陳舊的數據對於一個伴隨著N個服務器的群集來說這意味著每一個更新將會產生N個信息當你增加群集中服務器的數量每一個服務器處理一個單一的同步更新的花費依據(N)⊃這樣的速率增加因為任何一個更新發生每一個服務器都必須與其它所有的服務器通信更糟糕的是伴隨著群集的增長每一個服務器都不得不花費大量的可用處理時間來解決新到達的更新信息那些非線性的通信以及更新處理成本意味著群集JPA應用程序的傳統方法利用存儲器可以很好的工作他們受限於小到中型號的群集

  通過擁有一個可共享副本數據網格能夠解決通信上的問題這個副本來自所有服務器的易存取的對象一個更新操作是不需要依賴於將信息傳遞到所有服務器的因為在下次他們需要更新對象的時候是可以跟上變化的在一個數據網格中伴隨著可升級的點對點通信架構(即不需要中心信息就可以打破瓶頸)一個更新是依賴於到服務器的通信的這是個存儲對象的服務器或者是一個存儲備份的服務器這種情況下存取每個服務器單一的同步更新上的通信花費是可以用線性函數C(N)描述的C是副本(基本的以及備份的)數量的持續反映這種線性更新的花費意味著通過使用數據網格來擴展群集有可能實現評測JPA應用程序以及達到更高的生產力

  質疑

  當然網格上的JPA從來都不缺乏挑戰第一條就是開發者對於對象關系映射非常的熟悉JPA無疑會被認為緩存疲勞這是存儲器帶來的最常見的問題緩存疲勞有兩個原因第三方更新數據庫以及JPA應用程序運行在其他服務器群集上實現更新操作處理第三方更新問題與處理處理數據網格沒有什麼不同大多數JPA執行提供一系列的技術來處理這些問題包括驅逐規則查詢恢復原則以及針對極易變更的數據廢除存儲的能力這已經是一個陳舊的話題數據網格不會特別的復雜化

  就像之前討論的那樣緩存疲勞影響更新使得在其他群集服務器中使用傳統的解決方法也就是通過信息解決盡管它有自己的限制再高處理速率的系統中信息頂層是非常重要的JPA應用程序趨向於把緩存的使用降至最低依賴數據庫來確定他們是不是將數據更新具有諷刺意義的是處理速率提高以及存儲器價值的提高經常是有缺陷的因為維護存儲器持續運作的花費實在是太高了實際運用數據網格來刪除信息以及更新處理情況意味著高速處理系統可以利於存儲器達到甚至是超越生產力而不需要管理緩存疲勞

  查詢是另一個挑戰JPA界定了JP QL的多種用途在很多方面與SQL是相似的包括很多相同的小細節JP QL的目標是提供一個以對象為基礎的查詢語言可以簡單的轉換為執行在關系數據庫上的SQL當然數據網格不是關系數據庫每一個數據網格擁有自己的查詢框架JP QL可以被轉化的范圍以及在特定網格上面的執行都要依靠網格查詢框架的性能

  另一個挑戰來自關系對象JPA支持很多的關系類型除了嵌入式對象通過數據網格產品關系對象的支持呈現各種不同的形式每一個都有細微的差別焦點包括哪一種類型的關系對象可以支持;對象之間是否可以通過網格關聯或者更多的是駐扎在一點;在關系對象中哪一種查詢操作是被支持的最後一個問題的答案明顯對於哪一種JP QL查詢可以執行有重大影響

  這個列表很明顯是不全面的但是它提煉了對PA/data網格整合有影響的問題中的精華部分

  結論

  數據網格不是關系數據庫所以我們不能期望JPA與數據網格之間有一個完美的契合但是即便有很多限制網格上面的JPA也是令人激動的技術它提供了一種方法進化JPA應用程序使其站在槓桿的另一端撬動數據網格能夠創建可升級的高速率系統


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25770.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.