展望微软下一代数据库系统
2007-11-11 04:23:48 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇川绾剧晫鈧箍鍎遍幏鎴︾叕椤掑倵鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懐顦ч柣蹇撶箲閻楁鈧矮绮欏铏规嫚閺屻儱寮板┑鐐板尃閸曨厾褰炬繝鐢靛Т娴硷綁鏁愭径妯绘櫓闂佸憡鎸嗛崪鍐簥闂傚倷鑳剁划顖炲礉閿曞倸绀堟繛鍡樻尭缁€澶愭煏閸繃宸濈痪鍓ф櫕閳ь剙绠嶉崕閬嶅箯閹达妇鍙曟い鎺戝€甸崑鎾斥枔閸喗鐏堝銈庡幘閸忔﹢鐛崘顔碱潊闁靛牆鎳愰ˇ褔鏌h箛鎾剁闁绘顨堥埀顒佺煯缁瑥顫忛搹瑙勫珰闁哄被鍎卞鏉库攽閻愭澘灏冮柛鏇ㄥ幘瑜扮偓绻濋悽闈浶㈠ù纭风秮閺佹劖寰勫Ο缁樻珦闂備礁鎲¢幐鍡涘椽閸愵亜绨ラ梻鍌氬€峰ù鍥敋閺嶎厼鍨傞幖娣妼缁€鍐煥濠靛棙顥滈柣锕備憾濮婂宕掑▎鎺戝帯濡炪們鍨归敃銈夊煝瀹ュ鍗抽柕蹇曞Х椤斿姊洪幖鐐插姶闁告挻鐟╅幃姗€骞庨懞銉у幐闂佸憡鍔戦崝搴㈡櫠閺囩姷纾奸柍褜鍓熷畷姗€鍩炴径鍝ョ泿闂傚⿴鍋勫ú銈吤归悜鍓垮洭鏁冮埀顒勬箒濠电姴锕ら悧蹇涙偩濞差亝鐓涢悘鐐额嚙婵″ジ鏌嶇憴鍕伌鐎规洖宕埢搴ょ疀閹惧妲楃紓鍌氬€搁崐鐑芥⒔瀹ュ绀夐幖杈剧到閸ㄦ繃銇勯弽顐粶濡楀懘姊洪崨濠冨闁搞劍澹嗙划濠氬箮閼恒儱鈧敻鏌ㄥ┑鍡欏嚬缂併劏妫勯湁闁绘ǹ宕甸悾鐑樻叏婵犲啯銇濇俊顐㈠暙閳藉鈻庨幇顓炩偓鐑芥⒑鐠囨彃顒㈤柣顓у櫍瀹曪繝骞庨懞銉ヤ粧濡炪倖娲嶉崑鎾垛偓瑙勬礀閻栧ジ銆佸Δ浣哥窞閻庯綆鍋呴悵顐⑩攽閻樻剚鍟忛柛锝庡灣瀵板﹪宕滆閸嬫挾绮☉妯绘悙缂佺姵鐓¢弻娑㈠Ψ椤旂厧顫╅梺钘夊暟閸犳牠寮婚敐澶婃闁圭ǹ瀛╅崰鎰版⒑閼姐倕鏋庣紓宥咃躬瀵鈽夐埗鈹惧亾閿曞倸绠f繝闈涙川娴滎亝淇婇悙顏勨偓銈夊礈濞嗘挻鍋嬮柛鈩冪▓閳ь剚妫冨畷姗€顢欓崲澹洤绠圭紒顔煎帨閸嬫捇鎳犻鈧崵顒傜磽閸屾艾鈧娆㈤敓鐘茬獥婵°倕鎳庣粻浼存煙闂傚鍔嶉柛瀣ф櫊閺岋綁骞嬮敐鍡╂缂佺虎鍘搁崑鎾绘⒒娴h櫣甯涢柛鏃€娲滅划鏃堟濞磋櫕鐩畷姗€顢欓崗鍏夹氶梻渚€鈧偛鑻晶顖炴煏閸パ冾伃妤犵偞甯¢獮瀣攽閹邦亞纾婚梺璇叉唉椤骞愭搴g焼濞撴埃鍋撻柛鈺冨仱楠炲鏁傞挊澶夋睏闂備礁婀辩划顖滄暜閳哄倸顕遍柍褜鍓涚槐鎾存媴閻熸澘濮㈤悷婊勫閸嬬喖宕氶幒鎴旀瀻闁规儳鐤囬幗鏇炩攽閻愭潙鐏﹂柣顓у枛閳讳粙顢旈崼鐔哄幍闁荤喐鐟ョ€氼剚鎱ㄩ崶銊d簻闁靛濡囩粻鐐存叏婵犲啯銇濋柡灞芥嚇閹瑩鎳犵捄渚純濠电姭鎷冮崒姘ギ闂佸搫鐬奸崰鏍箹瑜版帩鏁冮柨婵嗘噽閿涙捇姊绘担鐟邦嚋缂佽瀚板畷鎴濃槈閵忕姷鍘撮梺鐟邦嚟婵參宕戦幘缁樻櫜閹煎瓨锚娴滅偓銇勯幘瀵糕姇婵炲懎锕弻锛勪沪閻e睗锝嗙箾绾板彉閭鐐茬箳娴狅箓鎸婃径濠呭帿闂傚倸鍊烽悞锕傛儑瑜版帒纾归柡鍥ュ灩缁犵娀鏌熼柇锕€鏋熸い顐f礋閺岀喖骞嗚閹界姴鈹戦娑欏唉闁哄本鐩獮姗€寮堕幋鐘点偡闂備礁鎲¢幐绋跨暦椤掑嫧鈧棃宕橀鍢壯囨煕閳╁喚娈樺ù鐘虫倐濮婃椽鎳¢妶鍛瘣闂佸搫鎳忛惄顖炲箖妤e啯鍊婚柦妯猴級閵娧勫枑濠㈣埖鍔曠壕濠氭煙閸撗呭笡闁哄懏鐓¢獮鏍垝閻熸澘鈷夐梺璇茬箰缁夌懓顫忛搹鍦<婵☆垵顕ч棄宥呪攽閻愭彃绾ч柨鏇樺灪娣囧﹪鎮界粙璺槹濡炪倖鐗楀銊╂偪閳ь剟姊婚崒姘偓鎼佹偋婵犲嫮鐭欓柟閭﹀枦婵娊鏌ゅù瀣珖缁炬崘妫勯湁闁挎繂鐗婇ˉ澶愭煟閹炬潙濮堥柟渚垮妼铻g紒瀣仢椤鈹戦垾鍐茬骇闁告梹鐟╅悰顔嘉熼崗鐓庣彴闂佽偐鈷堥崜锕€危娴煎瓨鈷掑ù锝嚽归弳閬嶆煙绾板崬浜扮€规洘鍔栫换婵喰掔粙鎸庡枠鐎殿喛鍩栭幆鏃堝箻鐎涙ɑ婢戝┑锛勫亼閸婃牕顫忔繝姘ラ悗锝庝憾閸熷懘鏌曟径娑滅濞存粍绮嶉妵鍕箻鐠鸿桨绮跺┑鈩冨絻椤兘寮婚敐澶嬫櫜闁搞儜鍐ㄧ婵°倗濮烽崑鐐垫暜閿熺姷宓侀悗锝庡枛缁秹鏌嶈閸撶喖骞冨Δ浣虹瘈婵﹩鍘搁幏娲煟閻斿摜鎳冮悗姘煎弮瀹曟洖螖閸涱喚鍘卞┑鈽嗗灥閵嗏偓闁稿鎹囬幃銏ゅ箵閹烘垹闃€婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘垿濡甸崟顖氱闁告鍋熸禒鑲╃磼閻愵剙鍔ゆい顓犲厴瀵鎮㈤悡搴n槶閻熸粌绻掗弫顔尖槈閵忥紕鍘撻梻浣哥仢椤戝懘鎮橀敃鍌涚厪闁搞儜鍐句純濡ょ姷鍋炵敮鈥崇暦閸楃儐娓婚柟顖嗗本顥$紓鍌氬€搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾閽樻繈姊洪鈧粔鎾几娴g硶鏀介柣妯挎珪閻ㄦ垹鈧鎸风欢姘跺蓟濞戙垹鐒洪柛鎰典簴婵洭姊虹粙鍖″姛闁稿繑锕㈠璇测槈濡攱鏂€闂佺硶鍓濋〃蹇斿閳ь剚淇婇悙顏勨偓鏍ь潖瑜版帒绀夐柡鍥ュ灩閻撴﹢鏌熸潏楣冩闁稿﹤顭烽弻娑㈠Ψ閵忊剝鐝栭柡宥忕節濮婄粯鎷呴崨濠傛殘闂佸湱枪椤兘骞冮悜鑺ユ櫆闁伙絽澶囬弨铏節閻㈤潧孝婵炶绠撳畷鐢稿礃椤旂晫鍘撻梺鍛婄箓鐎氼剟寮抽悢鍏肩叆婵炴垶鐟ч惌鎺撴叏婵犲洨绱伴柕鍥ㄥ姍楠炴帡骞嬪⿰鍐╃€抽梻鍌欑閹诧繝鎮烽妷锔绘闁归棿绀侀悡婵嬫煙閻愵剚鐏遍柛顐邯閺屾盯顢曢妶鍛亖闂佸憡蓱閹倿寮婚敐鍫㈢杸闁哄洨鍋橀幋椋庣磼缂併垹骞栭柣鏍帶閻g兘骞嬮敃鈧粻濠氭偣閸ヮ亜鐨洪柣銈傚亾婵犵數鍋犻幓顏嗗緤娴犲绠熼柨鐔哄Т绾捐銇勯弽顐沪闁抽攱鍨归惀顏堫敇閻愭潙娅f繛瀛樼矊缂嶅﹪骞冪捄琛℃闁哄诞鍐ㄐ曢梻浣虹《閺備線宕戦幘鎰佹富闁靛牆妫楃粭鎺楁煕閻曚礁浜伴柟顖氬暙鐓ゆい蹇撴噽閸樺憡绻涙潏鍓у埌婵犫偓鏉堛劍娅犳い蹇撶墛閻撳啴鎮峰▎蹇擃仼闁诲繑鎸抽弻鐔碱敊閻e本鍣伴悗娈垮枛閻栧ジ鐛€n喗鍋愰弶鍫厛閺佸洭姊婚崒姘偓椋庣矆娴i潻鑰块弶鍫涘妿娴犳岸姊绘担渚敯濠殿喓鍊楅崚鎺撴償閵娿儳顦梺鍦劋椤ㄥ懐鐚惧澶嬬厱妞ゆ劑鍊曢弸搴∶归悩鐑橆仩缂佽鲸鎸婚幏鍛村礈閹绘帒澹嶆俊鐐€栧ú妯荤箾婵犲洤鏋侀柛鎰靛枛绾惧吋绻涢幋鐐跺妤犵偛鐗撳缁樻媴閸涘﹥鍎撳┑鐐茬湴閸ㄨ棄鐣峰┑鍡欐殕闁告洦鍓欓埀顒€鐖奸弻锝呂熼懖鈺佺闂佺粯鎸诲ú鐔煎蓟閻斿吋鍤嬫い鎺嗗亾濠碉紕鍘ч湁婵犲﹤瀚崝銈夋煃鐟欏嫬鐏撮柡浣哥Ч瀹曠喖顢曢埄鍐╃窔闂傚倷鑳舵灙闁挎洏鍎甸幃褔鎮╅懠顒佹濠电娀娼ч鍡涘疾濠靛鐓冪憸婊堝礈閻旂厧鐏抽柨鏇炲€搁柨銈嗕繆閵堝倸浜鹃梺缁樺笒閻忔岸濡甸崟顖氱鐎广儱鐗嗛崢锛勭磽娴e搫孝濠⒀傜矙閸┾偓妞ゆ巻鍋撻柛妯荤矒瀹曟垿骞橀弬銉︽杸闂佺粯枪娴滎剛绮i弮鍫熺厱閻庯綆鍋掑▓鏃堟煃鐟欏嫬鐏存い銏$懅濞戠敻鎮滈悾灞藉冀濠电姷鏁搁崑娑㈠箯閹寸姴绶ら柛顭戝暎閿濆绠涢柡澶庢硶椤斿﹪姊洪悷鏉挎毐缁剧虎鍙冨畷浼村箻鐠囪尙顔嗛梺缁樶缚缁垶宕甸幋锔界厾缂佸娉曟禒娑欐叏閿濆棗濮嶆慨濠傤煼瀹曟帒顫濋钘変壕闁绘垼濮ら崵鍕煠閸濄儲鏆╁ù鐘崇缁绘繈鎮介棃娑楃捕濡炪倖娲﹂崣鍐ㄧ暦濡も偓铻e〒姘煎灠濞堛劌顪冮妶鍡楀闁稿﹥鐗滈埀顒佺濮樸劑鍩€椤掑倹鍤€濠㈢懓锕畷浼村冀瑜夐弸鏃堟煏婵犲繐顩紒鈾€鍋撻梻浣圭湽閸ㄨ棄岣胯閻楀海绱撴担鍝勪壕婵犮垺岣跨划鏃堟偡闁箑娈ㄩ梺鍝勮閸庤京绮婚悽鍛婄厵闁绘垶岣跨粻姗€鏌涢悙鍨毈闁哄矉缍侀幃鈺呮倻濮楀棔鍝楅梺璇茬箰缁诲牓宕濆畝鍕垫晩闊洦绋戝敮閻熸粌顦靛畷鎴﹀箻閼搁潧鏋傞梺鍛婃处閸撴瑧鍠婂鍛斀闁宠棄妫楁禍婵堢磼鐠囨彃鈧潡鏁愰悙鍓佺杸婵炴垶鐟﹂崕顏堟⒑闂堚晛鐦滈柛姗€绠栭弫宥呪堪閸愶絾鏂€闂佸疇妫勫Λ妤呮倶閻樼粯鐓欑痪鏉垮船娴滀即鏌ㄥ┑鍫濅粶妞ゆ挸銈稿畷鍫曞煛閸愯法闂繝鐢靛仩閹活亞绱炴笟鈧棢闁规崘顕х粈澶屸偓骞垮劚椤︿即鎮″▎鎴犵<閻庯綆浜炴禒銏ゆ煛閸℃稐鎲鹃柡宀嬬秮閺佹劙宕惰楠炲螖閻橀潧浠滄い鎴濐樀瀵偊宕橀鑲╁姦濡炪倖甯掗崐缁樼▔瀹ュ應鏀介柣妯虹-椤f煡鏌涚€e墎绉柡灞剧洴婵$兘骞嬪┑鍡樻婵°倗濮村ú顓㈠箖濡ゅ啯鍠嗛柛鏇ㄥ墮绾板秶绱撴担鍓叉Ч闁瑰憡濞婇崹楣冨籍閸繄顦ㄥ銈嗘煥濡插牐顦归柡灞剧洴閸╁嫰宕楅悪鈧禍顏勎涢崟顐悑闁搞儮鏅濋敍婵囩箾鏉堝墽鍒板鐟帮躬瀹曟洟骞囬悧鍫㈠幈闂侀潧枪閸庨亶銆傚畷鍥╃<妞ゆ梻鈷堥崕蹇斻亜閹惧啿鎮戠€垫澘瀚埀顒婄秵娴滄牠宕戦幘缁樼叆閻庯絻鍔嬬花濠氭⒑閻熺増鎯堢紒澶婄埣钘濋柨鏃堟暜閸嬫挸鈻撻崹顔界亪闂佽绻戠换鍫ュ春閻愬搫绠i柨鏇楀亾闁绘搫绻濋弻娑㈠焺閸愮偓鐣兼繛瀵稿閸ㄨ泛顫忓ú顏勫窛濠电姴娴烽崝鍫曟⒑閸涘﹥澶勯柛娆忛鐓ら柛娑橈梗缁诲棝鏌曢崼婵堢闁告帊鍗抽弻娑㈡偆娴e摜浠搁悗瑙勬礃閸旀瑥鐣疯ぐ鎺濇晝闁挎繂鎳庢导搴㈢節绾版ɑ顫婇柛銊﹀▕瀹曘垼顦崇紒鍌氱У閵堬綁宕橀埡浣插亾閸偅鍙忔俊顖滃帶娴滈箖鎮楀鐐

核心提示:微软的下一代数据库系统(代号Yukon)已经浮出水面,这一版本的数据库系统有不少的新特色,展望微软下一代数据库系统,比如它使用的Transact-SQL将更加符合ANSI-99 SQL的标准,查询语句将更灵活,如果你希望返回一个简单的数据集和(resultset)或是只是进行一个数据操作(使用DML或是DDL),一旦被
微软的下一代数据库系统(代号Yukon)已经浮出水面。这一版本的数据库系统有不少的新特色。比如它使用的Transact-SQL将更加符合ANSI-99 SQL的标准,查询语句将更灵活,更富表达性。Yukon允许程序员用.NET的语言,比如C#,VB.NET来开发自定义函数(user-defined functions),存储过程(stored procedures)和触发(triggers)。另外它还支持W3的XQuery语言,支持xml(标准化越来越近了)等等。
在Yukon的酝酿和设计过程中,设计师对下一代数据库系统的编程能力下了很多气力。微软内部的开发人员认为,下一代的数据库系统一定要包括更多的对称编程模式,对各种数据类型的查询应该更灵活。所谓的对称编程模式是指对于常见的数据库操作,用户应该可以使用xml(标准化越来越近了),.NET或是传统的T-SQL程序.
在这种设计思想的指导下,Yukon在许多方面有了大的拓展。首先,.NET的公用语言执行环境(CLR)被融合到了新的系统里;第二,融合进来的.NET提供了很多强有力的数据库对象;第三,xml(标准化越来越近了)在这版的数据库里得到了更好和更深的支持;第四,数据库的服务器端提供了对xml(标准化越来越近了)查询(XQuery)以及xml(标准化越来越近了)规范定义语言XSD的支持;第五,传统意义上的T-SQL也得到了进一步的增强
新的编程模式和新增的语言一道使得数据库应用的开发有了更丰富的选择。新的体系结构使得我们更容易构造可靠的,可扩展的,稳定的应用,并且开发的效率也得到了极大的提高。Yukon中还引入了全新的服务代理(Service Broker),一种分布式的一部消息传递机制,现在让我们先看看编程语言方面的增强。
Transact-SQL 语言的增强
Yukon对微软的T-SQL有了很多的增强。用户可以在Yukon的Online帮助中得到详细的信息,限于便服,在此不一一列了。新增的特色表明了微软对ANSI-99 SQL标准的进一步支持,同时也反映了对广大用户反馈意见的相应。新的增强主要是为了使查询更富有表达性。有几种新增的查询可以很好的覆盖用户常用的一些查询类型。比如说,递归查询可以返回有层次机构的结果集合(hierarchical resultset)或是a bill of materials。
Yukon提供了新的PIVOT和UNPIVOT操作。这些操作的输入是表格类的表达式(table-valued expression),其输出结果同样是表格类型。PIVOT操作是将行转变为列,并进行集合以及其他的数学操作。在输入的表格中它将以一个给定的列为轴进行旋转,其成生的表格的列是有不同值的原旋转列。这种操作使得生成的表格变宽(设想一个5列100行的输入表格,其结果可能是100列5行的表格)。UNPIVOT是PIVOT的逆操作。它将输入表格的列转换为行。其结果是使输入表格变窄。
Yukon的异常捕捉和处理机制也有了很大的变化。它使用了和.NET一致的TRY/CATCH结构。导致交易终止的错误将会被捕捉并且处理。另外为了配合.NET的框架提供的安全,复制,提示服务以及xml(标准化越来越近了)等等功能(security, replication, Notification Services, xml(标准化越来越近了)),Yukon引入了不少新的语言构造。.NET在服务器端的技术也极大了影响了SQL数据库的研制和发展。
在SQL服务器中使用.NET来编程
程序员可以在Yukon中使用和.NET兼容的高级程序语言进行开发,利用VB.NET,C#这一类的语言编写自定义函数(user-defined functions),存储过程(stored procedures)和触发(triggers)。另外,利用管理程序(managed code)还可以开发自定义函数(UDTs),集合(aggregates),函数(functions)。公用语言执行环境(CLR)是.NET的核心,它是一切基于.NET开发的程序的运行平台。它提供了诸多的服务,比如实时编译(just-in-time compilation),内存管理和分配(memory management and allocation),类型安全强制(type safety enforcement),异常处理(exception handling),线程管理(thread management)以及安全检查(security)等等(CLR对于.NET程序就好比Java的虚拟机对于Java程序一样)。在Yukon中,.NET程序将和在CLR中完全相同的方式运行。
将CLR整合到Yukon中的好处是显而易见的。Yukon获得了CLR的各种有益的功能,如自动的内存管理,资源分配,垃圾回收等等。Yukon提供了一套.NET assemblies,这样允许程序员直接操作数据库对象。数据的操作是通过一套特殊的ADO.NET来实现的。这些新的方法和原来的ADO.NET非常相似,程序员应该感到非常的熟悉和亲切。细一点说,我们可以把Yukno集成了CLR的好处归结为以下几点:
1.丰富了编程模式。CLR兼容的高级程序语言比T-SQL要丰富的多,也强大的多。它们提供的功能和特色是以往SQL程序员不敢想象的。此外,Yukon还提供了一系列的类库(Framework APIs),这些类库的功能比以前SQL内置的功能强大的多。
2.增强了安全性。管理程序运行于数据苦支持的CLR环境当中。这使得数据库的对象比以往的扩展存储过程(extended stored procedures)更安全。
3.用户自定义的类型和集合。通过对CLR的集成,这两个新增的对象扩展了SQL数据库的查询和存储能力。
4.为今后的Visual Studio®开发环境指明了方向。今后程序员可以向开发其他.NET程序那样用VB.NET或是C#这类的高级语言进行数据库的开发,调试工作。
5.性能的增强。在一些情况下,.NET语言的编译和执行可以提供比T-SQL更好的性能。
充分开发CLR的潜能
在以前的SQL数据库应用的开发中,服务器端的程序被限制于T-SQL。而在新的Yukon中,由于集成了CLR,使得开发工作变得前所未有的容易和方便。像VB.NET和C#这类的高级语言,全面支持数组(Array),结构化的异常处理(structured exception handling)以及各种集合操作(Collections)。这些功能使得程序员可以编写更复杂的逻辑和计算工作。
更突出的一点就是Visual Basic .NET and C# 是面向对象的语言,它们自身所具有的数据封装(encapsulation),继承(inheritance)和多态性(polymorphism)是T-SQL所不能比拟的。在大型系统的开发中,这种基于模块化开发机制的优越性会更加明显。它可以更好的组织你的源程序,增加代码的重用性。将源程序按照逻辑关系编译成不同的assemblies和n字域(namespaces)可以增强程序的组织性,让程序员更方便的浏览和使用已有的程序。
Yukon实现了三个层次的assemblies安全的管理控制。这种安全机制是对以往基于用户验证和授权机制和新的CLR安全机制的有机合成。新的三级管理层次为:
最高层次: 安全接触(SAFE)。它只允许接触和计算数据
次高层次: 外部接触(EXTERNAL_ACCESS)。它允许接触外部的系统资源
最低层次: 不安全接触(UNSAFE)。只要不对系统的稳定性造成影响,就不加限制。
在T-SQL和管理程序(Managed code)之间的取舍
管理程序非常适于进行数字密集型的计算和复杂的逻辑处理。.NET对于字符串 (String),规则表达式(regular expressions),错误捕捉等等有着更好的支持。另外.NET提供的上千个类(Class) 和方法可以在自定义函数(user-defined functions),存储过程(stored procedures)和触发(triggers)中很方便的使用。所以对于有大量字符创操作,数学计算,日期运算,系统资源存取,高级加密运算,文件操作,图像处理或是xml(标准化越来越近了)的情形,管理的存储过程,函数,触发,集合要比传统意义上的T-SQL等强大和简洁。
使用管理的程序的另外一个好处就是类型安全。在管理的程序执行之前,CLR要对其进行检查以保证它的安全运行。比如说,对于一个内存读写的操作,CLR要先进行检查以保证在读取的时候没有写操作在进行。
在准备编写存储过程,触发,或是UDFs之前,你要权衡各种情况,在传统的T-SQL和管理程序(Managed code)之间做出选择。选择的标准是你当前问题的具体特点。如果你的主要操作是数据存取以及相对简单的逻辑运算,那么T-SQL则非常合适。对于有大量数值计算以及复杂逻辑运算的情况,管理程序(Managed code)则更适用。
程序放置在什么地方也是很关键的一步。T-SQL和管理程序(Managed code)都是在数据库的引擎内运行。把.NET和数据库紧密放置在一起可以有效的发挥服务器的硬件运算能力。当然最好是用SQL数据库的Profile程序来测量一下你的具体程序的运行性能,然后再做出决定。Yukon的Profile程序有了进一步的增强。可以更深层次的测量SQL数据库内的CLR的性能,并且会以更直观的图形方式来输出对比测试结果。下面就让我们来具体看看Yukon中新增的一些功能。
用户定义的类,函数和集合(User-defined Types, Functions, and Aggregates)
Yukno支持扩展的CLR的类系统。这些扩展的类可以在服务器端定义表(table),也可以在客户端进行数据操作。用户自定义类型(UTDs)允许用户扩展已有的类。这些扩展的具体实现是用的管理程序(managed code)。比如说,你可以定义一些用于地理空间的类型,一些特殊的金融类型或是特别的时间日期类型以适应你独特的要求。
用.NET的术语来说,UTDs是结构(struct)或是参考类型(reference type),而不是类(class)或枚举(enum)。这意味着内存的是用是由CLR控制优化的。不过,UTDs不支持继承和多态性(inheritance and polymorphism)。它可以有公用或是私有函数(public and private functions)。事实上,诸如限制检查(constraint checking)应该由私有函数来完成。举例来说吧,如果你想定义一个地理空间的类型,这可能包含经度,纬度也许还有高度信息,你可以定义相应的私有成员来完成这一任务。这类型创建完成后,你可以把他注册到SQL数据库中。这个被编译的DLL就会被存放在SQL数据库中。
用户自定义函数(UDFs)有两种类型:一种是标量值型的(scalar-valued),这种函数返回单一的值,如字符串,整数,比特等等。另外一种是表格值型的(Table-valued)。这种函数返回有一个或多个列组成的数据集合。
Yukon允许用户定义新的集合(aggregate)操作的能力远远超过了以前的版本。用户用管理语言开发的集合可以被T-SQL或是其他的管理语言调用。这些新开发的集合是.NET的类,它可以引用数据库中存在的其他编译好的类库(Class Library)。你可以使用用户定义的集合将数据库中的数据转化为数值型变量。比如你最近的一次用户调查的数据存放到数据库中,通过一个用户定义的统计函数你可以得到加权平均或是标准偏差。
管理的存储过程
这是一种管理程序,其工作方式就像传统的存储过程一样。如果你希望返回一个简单的数据集和(resultset)或是只是进行一个数据操作(使用DML或是DDL)。一旦被注册到数据库中,那么使用它就像是用一个普通的存储过程那样。将一段管理程序包装成存储过程的语法如下(基于现在早期的Yukon版本)
CREATE PROCEDURE mysproc (@username NVARCHAR(4000))
AS
EXTERNAL NAME YukonCLR:[MyNamespace.CLRCode]:: myfunction
(未完)
- ››微软word 2010中打印份数设置方法
- ››微软PowerPoint 2013细节功能介绍
- ››微软Bing Tranalator将支持雅虎Babel Fish用户
- ››微软关于Windows 7 SP1安装的建议
- ››微软应延长Windows XP寿命的10大理由
- ››微软Windows 7 SP1 RC 官方已经提供下载
- ››微软也为谷歌的Android系统制作应用程序
- ››微软发布超级计算机版Excel测试版本
- ››微软推出Windows 7自动升级程序
- ››微软证实不会在欧洲市场发布Win7无浏览器版
- ››微软将允许PowerPoint和Excel文件嵌入网页
- ››微软发8月补丁修9大漏洞 DLL劫持漏洞未修复
更多精彩
赞助商链接