成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

如何借助 NoSQL 提高 JPA 應(yīng)用性能

Airy / 1830人閱讀

摘要:當(dāng)時(shí),還飽受微軟和太陽(yáng)間的訴訟的影響,該訴訟涉及到和間的兼容性。開發(fā)者們都在討論哪個(gè)平臺(tái)或者框架能夠勝出還是微軟新發(fā)布的。能為您提供端到端的應(yīng)用性能解決方案,我們支持所有常見(jiàn)的框架及應(yīng)用服務(wù)器,助您快速發(fā)現(xiàn)系統(tǒng)瓶頸,定位異常根本原因。

【編者按】關(guān)注 NoSQL 的動(dòng)態(tài)發(fā)展很重要。NoSQL 的好處并不僅限于新的應(yīng)用開發(fā)。在某些案例中,你可以見(jiàn)識(shí)到重新訪問(wèn)現(xiàn)有的、傳統(tǒng)的框架帶來(lái)的積極效果,比如說(shuō)你的 JPA 的實(shí)現(xiàn)。本文系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。

多年以前,筆者在為一家世界頂級(jí)汽車公司做電子商務(wù)網(wǎng)站項(xiàng)目時(shí),曾經(jīng)碰到過(guò)一個(gè)聽(tīng)起來(lái)像科幻故事的概念:通過(guò)實(shí)體類別來(lái)自動(dòng)實(shí)現(xiàn)數(shù)據(jù)持久存儲(chǔ)。

是的,筆者說(shuō)的就是現(xiàn)在大家都知道的分布式組件標(biāo)準(zhǔn)(Enterprise JavaBeans)。發(fā)布于1998年,后來(lái)被并入 Java EE 的技術(shù)規(guī)范,它引入了實(shí)體(Entity Beans)的概念。當(dāng)時(shí)的想法是提供一個(gè)開發(fā)框架,讓開發(fā)者可以將他們的對(duì)象自動(dòng)映射到相關(guān)表格,這樣該框架就可以在數(shù)據(jù)庫(kù)中持續(xù)自動(dòng)將應(yīng)用程序數(shù)據(jù)持久存儲(chǔ)。這被稱為 ORM:對(duì)象關(guān)系映射。

當(dāng)時(shí)是21世紀(jì)初,大家還習(xí)慣于等待當(dāng)時(shí)最牛的太陽(yáng)微系統(tǒng)公司(Sun Microsystem)——跟現(xiàn)在蘋果公司的地位差不多——帶來(lái)各種重大發(fā)明,不過(guò)那可真的是模式的變更。它是緊跟面向?qū)ο缶幊蹋∣bject Oriented programming)出現(xiàn)的概念,不過(guò)它本身對(duì)主流應(yīng)用開發(fā)世界來(lái)說(shuō)就是一個(gè)重大的模式轉(zhuǎn)變。當(dāng)時(shí),在一個(gè)集中的數(shù)據(jù)庫(kù)中持久存儲(chǔ)數(shù)據(jù)的概念已經(jīng)得到廣泛接受,關(guān)系數(shù)據(jù)庫(kù)也有很多。服務(wù)器端 web 應(yīng)用開始成為主流,當(dāng)然,你還得選擇存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù),雖然關(guān)系數(shù)據(jù)庫(kù)并不是唯一的選擇,但它們是當(dāng)時(shí)所謂的“桌面應(yīng)用”的首選。這些都表明,應(yīng)用存儲(chǔ)和檢索數(shù)據(jù)的唯一方式是通過(guò)執(zhí)行 SQL 查詢。在很多情況下,這種操作是非常復(fù)雜的。

與之相反,Java 完全是面向?qū)ο蟮?,不?huì)被理解為表格和關(guān)系。關(guān)系數(shù)據(jù)庫(kù)很容易就能被其他過(guò)程式語(yǔ)言借助 SQL 來(lái)采用。當(dāng)時(shí),Java 還飽受微軟和太陽(yáng)間的訴訟的影響,該訴訟涉及到 Java 和 IE 間的兼容性。開發(fā)者們都在討論哪個(gè)平臺(tái)或者框架能夠勝出:Java 還是微軟新發(fā)布的 .NET。

在這種背景下,EJB 提出的自動(dòng)持久存儲(chǔ)是個(gè)令人欣喜,同時(shí)又極富創(chuàng)新的概念。不過(guò),當(dāng)時(shí)的硬件現(xiàn)實(shí)條件擺出了一個(gè)挑戰(zhàn):雖然這個(gè)概念不錯(cuò),但是當(dāng)時(shí)的處理硬件尚未準(zhǔn)備好。Java 的問(wèn)題已經(jīng)足夠證明,被認(rèn)為是“老派做法”的運(yùn)行解釋代碼并不會(huì)降低所有進(jìn)程的速度。在 EJB 要求的多層額外管理中執(zhí)行這樣的代碼,更是超出想象。還有別忘了,我們說(shuō)的是32位單核處理器時(shí)代,高端服務(wù)器的內(nèi)存也不過(guò) 256 MB 到512 MB!(參考 topdesignmag.com)

時(shí)間快進(jìn)到2016年,Hibernate 已經(jīng)發(fā)布了第5版,根據(jù)最新調(diào)查,超過(guò)73%的 Java 開發(fā)是在某個(gè) Java EE 框架下進(jìn)行的。

自2009年起,隨著 JPA 2.0 的規(guī)范出臺(tái),越來(lái)越多的應(yīng)用從這種抽象概念中受益。Gavin King 于2001年開發(fā)的 Hibernate ORM 得到廣泛使用,更是起到了推動(dòng)作用,這是由前 EJB2 式實(shí)體類別提供的更簡(jiǎn)單的持久化能力實(shí)現(xiàn)方法。由于被認(rèn)證為2010 JPA 2.0 規(guī)范的一種實(shí)施方法,Hibernate 成為應(yīng)用開發(fā)者們廣泛推崇和使用的技術(shù)。

然而,發(fā)布15年以來(lái),開發(fā)者論壇關(guān)于最初主題的討論依然有很多:如何改善 JPA 的性能表現(xiàn)。雖然硬件速度有了很大提升,同樣的問(wèn)題依然存在。如今 JPA 成了主流技術(shù),影響著世界上數(shù)以萬(wàn)計(jì)的系統(tǒng),這個(gè)問(wèn)題就變得更加重要。ORM 架構(gòu)內(nèi)在的問(wèn)題并沒(méi)有改變:將面向?qū)ο蟮氖澜缬成涞疥P(guān)系世界并不是個(gè)小任務(wù),需要付出大量的額外努力才能實(shí)現(xiàn)無(wú)縫對(duì)接。

很多年前,Ted Neward 把 ORM 稱為“計(jì)算機(jī)世界的越南”,把它跟收益遞減規(guī)律聯(lián)系在一起:一開始看起來(lái)很好,但是你用得越多,要獲得額外收益就越難。在某些時(shí)候,因?yàn)榍捌谝呀?jīng)付出了資金和時(shí)間,你很難“放棄誘餌,轉(zhuǎn)身跑掉”。他甚至還建議同時(shí)使用 ORM 方案和直接的 SQL 方案(或者 JDBC),這樣“就可以繞過(guò)那些 ORM 會(huì)帶來(lái)麻煩的地方”。這跟性能表現(xiàn)有很大關(guān)系。

jhades.org 的成員在他們的博客中提出了一個(gè)很好的觀點(diǎn),他們說(shuō),ORM 給自己帶來(lái)的主要問(wèn)題是挑戰(zhàn)(實(shí)時(shí))同步兩個(gè)完全不同的數(shù)據(jù)結(jié)構(gòu)。表格、關(guān)系和面向?qū)ο筮@幾個(gè)數(shù)據(jù)結(jié)構(gòu)之間并沒(méi)有什么相似性。結(jié)果就是,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)在所有的 ORM 實(shí)施過(guò)程中的表現(xiàn)都有所降低,就是因?yàn)?SQL 與這些受益于 ORM 的應(yīng)用之間沒(méi)有相似性,也就是所謂的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain Driven Design)。

但是如今,整個(gè)數(shù)據(jù)庫(kù)產(chǎn)業(yè)都在經(jīng)歷變革。過(guò)去15年來(lái),你得很有勇氣,才敢避開關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),使用其他備選方案來(lái)持久存儲(chǔ)數(shù)據(jù)——如果你能找到的話,更不要說(shuō)你還要費(fèi)盡力氣解釋自己為什么要這么做。如今,大量 NoSQL 數(shù)據(jù)庫(kù)增加了計(jì)算機(jī)科學(xué)出現(xiàn)更多新模式的可能性。說(shuō) JPA 不能從中受益簡(jiǎn)直是大錯(cuò)特錯(cuò),而且筆者認(rèn)為它絕對(duì)能從中受益。從數(shù)據(jù)結(jié)構(gòu)的觀點(diǎn)來(lái)看,要在 JPA 實(shí)現(xiàn)方法中持久存儲(chǔ)數(shù)據(jù),很多 NoSQL 方法都更合理,效果也比表格或關(guān)系數(shù)據(jù)管理系統(tǒng)更好。

筆者的研究似乎表明這是真的。我們最近基于自己的鍵值存儲(chǔ)(key-value store,縮寫為 KVS)數(shù)據(jù)庫(kù)引擎 c-treeACE V11 發(fā)布了一個(gè)新的 JPA 實(shí)現(xiàn)方法。最初的測(cè)試結(jié)果表明,在使用 c-treeACE 替代 SQL 數(shù)據(jù)庫(kù)后,性能提升了30%。

實(shí)現(xiàn)這種效果是通過(guò)有效利用一種智能映射方法,能夠識(shí)別出那些可以在低層級(jí) KVS 中執(zhí)行的檢索,從而避免繁冗、不必要的 SQL。由于 c-treeACE 是一種多模式數(shù)據(jù)庫(kù),與數(shù)據(jù)庫(kù)互動(dòng)的層(Java 持久存儲(chǔ)層,縮寫為 JPL)能夠在 SQL 和 NoSQL 之間自如轉(zhuǎn)換,從而優(yōu)化每次 query.z 的執(zhí)行。

總之,關(guān)注 NoSQL 的各種動(dòng)態(tài)發(fā)展很重要。NoSQL 的好處并不僅限于新的應(yīng)用開發(fā)。在某些案例中,你可以見(jiàn)識(shí)到重新訪問(wèn)現(xiàn)有的、傳統(tǒng)的框架帶來(lái)的積極效果,比如說(shuō)你的 JPA 的實(shí)現(xiàn)。無(wú)論你是用 Hibernate,或者其他 ORM 框架,數(shù)據(jù)庫(kù)替換都會(huì)是一個(gè)低風(fēng)險(xiǎn)、小投入的項(xiàng)目。你可能會(huì)發(fā)現(xiàn),你很快就能節(jié)省幾千美元。

OneAPM 能為您提供端到端的 Java 應(yīng)用性能解決方案,我們支持所有常見(jiàn)的 Java 框架及應(yīng)用服務(wù)器,助您快速發(fā)現(xiàn)系統(tǒng)瓶頸,定位異常根本原因。分鐘級(jí)部署,即刻體驗(yàn),Java 監(jiān)控從來(lái)沒(méi)有如此簡(jiǎn)單。想閱讀更多技術(shù)文章,請(qǐng)?jiān)L問(wèn) OneAPM 官方技術(shù)博客。

本文轉(zhuǎn)自 OneAPM 官方博客

原文地址:https://dzone.com/articles/how-to-improve-performance-of-your-jpa-application

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65985.html

相關(guān)文章

  • Spring Data Redis 讓 NoSQL 快如閃電 (1)

    摘要:以遠(yuǎn)程緩存服務(wù)器見(jiàn)長(zhǎng),對(duì)易揮發(fā)數(shù)據(jù)來(lái)說(shuō)是極快型數(shù)據(jù)庫(kù)。即使成功寫入數(shù)據(jù)庫(kù),最后也可能會(huì)因?yàn)榫W(wǎng)絡(luò)故障而使得緩存服務(wù)器以失敗告終。 【編者按】本文作者為 Xinyu Liu,詳細(xì)介紹了 Redis 的特性,并輔之以豐富的用例。在本文的第一部分,將重點(diǎn)概述 Redis 的方方面面。文章系國(guó)內(nèi) ITOM 管理平臺(tái) OneAPM 編譯呈現(xiàn)。 建立在 Java 企業(yè)版之上的多層體系結(jié)構(gòu)是強(qiáng)大的服務(wù)...

    JerryC 評(píng)論0 收藏0
  • [直播視頻] 《Java 微服務(wù)實(shí)踐 - Spring Boot 系列》限時(shí)折扣

    摘要:作為微服務(wù)的基礎(chǔ)設(shè)施之一,背靠強(qiáng)大的生態(tài)社區(qū),支撐技術(shù)體系。微服務(wù)實(shí)踐為系列講座,專題直播節(jié),時(shí)長(zhǎng)高達(dá)小時(shí),包括目前最流行技術(shù),深入源碼分析,授人以漁的方式,幫助初學(xué)者深入淺出地掌握,為高階從業(yè)人員拋磚引玉。 簡(jiǎn)介 目前業(yè)界最流行的微服務(wù)架構(gòu)正在或者已被各種規(guī)模的互聯(lián)網(wǎng)公司廣泛接受和認(rèn)可,業(yè)已成為互聯(lián)網(wǎng)開發(fā)人員必備技術(shù)。無(wú)論是互聯(lián)網(wǎng)、云計(jì)算還是大數(shù)據(jù),Java平臺(tái)已成為全棧的生態(tài)體系,...

    Enlightenment 評(píng)論0 收藏0
  • Spring Boot 參考指南(使用NoSQL技術(shù))

    摘要:使用技術(shù)提供了額外的項(xiàng)目,幫助你訪問(wèn)各種技術(shù),包括,,,,,,,和。我們還提供了一個(gè),以便與具有支持的其他存儲(chǔ)保持一致。有關(guān)的詳細(xì)信息,請(qǐng)參閱參考文檔。 30. 使用NoSQL技術(shù) Spring Data提供了額外的項(xiàng)目,幫助你訪問(wèn)各種NoSQL技術(shù),包括:MongoDB,Neo4J,Elasticsearch,Solr,Redis,Gemfire,Cassandra,Couchbas...

    Songlcy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<