乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ORM映射的弊端以及它對數(shù)據(jù)庫優(yōu)化影響

       昵稱10504424 2013-02-20

      首先簡單的介紹下ORM關(guān)系對象映射的概念。雖然NOSQL現(xiàn)在在迅速崛起,但大多數(shù)人仍然在使用穩(wěn)定的關(guān)系型數(shù)據(jù)庫,我們將數(shù)據(jù)組織成記錄存儲(chǔ)在關(guān)系數(shù)據(jù)庫中,每一行代表一條記錄?,F(xiàn)代編程中,面向?qū)ο蠹夹g(shù)應(yīng)用已經(jīng)非常廣泛,關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)組織形式與面向?qū)ο蟮臄?shù)據(jù)組織形式存在根本上的差異。ORM的任務(wù)就是將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)通過ORM層映射為對象,使之能夠應(yīng)用于面向?qū)ο蟪绦?,方便編程?/a>


      它確實(shí)為大多數(shù)程序員提供了便利:

      1、程序員不需要再動(dòng)手寫SQL語句,或者說大部分情況下不需要?jiǎng)邮謱懀恍枰{(diào)用一系列函數(shù)即可完成數(shù)據(jù)庫CURD操作。

      2、對不同數(shù)據(jù)庫管理系統(tǒng)的連接以及操作進(jìn)行了抽象,程序員完全可以不考慮使用的是什么數(shù)據(jù)庫以及數(shù)據(jù)庫的版本。

      總之,在中小型的項(xiàng)目開發(fā)中,它的確為我們帶來了高效的開發(fā)效率。


      以上即是它的優(yōu)點(diǎn),下面進(jìn)入正題,即ORM的弊端以及它對數(shù)據(jù)庫優(yōu)化的影響。

      缺點(diǎn):

      1、對于復(fù)雜的SQL有心無力。

      2.、無法完全屏蔽數(shù)據(jù)庫底層細(xì)節(jié)(這也將是下面討論的),開發(fā)人員仍然要熟悉數(shù)據(jù)庫底層操作。

      3、關(guān)系-對象映射的實(shí)現(xiàn)是以性能為代價(jià),方便了開發(fā),犧牲了效率。

      4、多余的工作:大多數(shù)ORM框架為了達(dá)到屏蔽某些細(xì)節(jié)問題或者對數(shù)據(jù)庫進(jìn)行抽象,做了很多額外的工作,而這些工作對于大多數(shù)人來說是不需要的。比如,TP的ORM為防止SQL注入,做了很多類似強(qiáng)制類型轉(zhuǎn)換的工作。這樣做不僅僅降低了性能,同時(shí)也改變了數(shù)據(jù)本身的意義,對數(shù)據(jù)造成了污染。


      ORM對數(shù)據(jù)庫優(yōu)化的影響。

      ORM由于其屏蔽了數(shù)據(jù)庫的CURD細(xì)節(jié),程序員大多數(shù)情況下不需要再編寫SQL語句,在一個(gè)小型的網(wǎng)站中,這樣基本是沒有什么問題的。即使效率低下,如今的硬件水平也可以彌補(bǔ)軟件本身的性能問題。但如果在大型項(xiàng)目中盲目的使用ORM,定會(huì)造成性能的低下。原因如下:

      1、上面關(guān)于ORM缺點(diǎn)已經(jīng)提到了關(guān)于性能的兩點(diǎn)問題。

      2、數(shù)據(jù)庫優(yōu)化問題。


      我將會(huì)重點(diǎn)解釋數(shù)據(jù)庫優(yōu)化這個(gè)影響。

      大型項(xiàng)目中,數(shù)據(jù)庫關(guān)系、索引結(jié)構(gòu)等都是經(jīng)過嚴(yán)格控制的。程序員編寫的SQL語句直接影響到數(shù)據(jù)庫的執(zhí)行效率(通過影響SQL執(zhí)行計(jì)劃),有經(jīng)驗(yàn)的程序員可以自己動(dòng)手寫出高效的SQL語句,但毫無經(jīng)驗(yàn)的程序員可能會(huì)使用ORM調(diào)用先關(guān)函數(shù)執(zhí)行數(shù)據(jù)庫操作,或許他能夠獲得好的執(zhí)行計(jì)劃,但我們不能將效率交給上帝來決定。

      問題出現(xiàn)了, 根據(jù)上面的說法,我們是否需要完全自己動(dòng)手寫出SQL語句呢?我覺得在性能要求較高的情景中,應(yīng)該是這樣的。ORM雖然屏蔽了SQL語句,提高了開發(fā)效率,同樣的,它也屏蔽了SQL優(yōu)化的細(xì)節(jié)。

      如果大部分的SQL語句是自己動(dòng)手寫出來的,這時(shí)候ORM框架本身也不在有什么值得我們依賴的優(yōu)勢了。我們既然要自己動(dòng)手寫出SQL語句,那么就可以自己動(dòng)手寫出關(guān)系-對象映射的簡單框架。同樣可以實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫與面向?qū)ο缶幊痰倪B接。


      以上均是始終不夠的胡謅八扯,要是哪里說錯(cuò)的,還請指正。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多