|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。 在SQLServer2005的很多被鼎力保举的特征内里,有一项大概对那些利用SQLServer事情的编程职员最有用的是CommonLanguageRuntime,大概简写为CLR。CLR可让编程职员间接在SQLServer中创立存储历程、触发器,用户自界说函数,汇合体和范例。CLR有良多的答应,可是也有一些缺点。
关于CLR的主要性有一些次要的缘故原由。起首,跟着SQLServer编程手艺的成熟,代码编写职员堕入了SQLServer本身的一些限定当中,而且在很年夜水平上依附内部的代码来实行一些沉重的移植。T-SQL(事件处置SQL)在前往数据集方面很好,可是除这个以外则体现欠安。CLR使得成绩的办理有了大概,而且在SQLServer外部举行数据操纵,而这些底本必要一个完整自力的程序来完成的。.NET的操纵代码和实行速率比SQLServer/T-SQL好很多;.NET中的统一位的代码能够运转更快地运转很多次,当它是二进制的,而不是作为存储历程来构建时。
利用CLR的另外一个伟大的优点就是平安。一切的代码都在运转前检测范例和平安权限。比方,先前没有被写进的内存是不同意被成绩中的代码读取的。CLR也很完美;.NET框架中的每样器材都能够从存储历程、触发器大概用户函数举行会见——除处置相似用户接口的类,它在SQLServer是不管怎样不会有效的。
要避免CLR代码胡乱运转,微软为CLR代码的挪用创立了一个三层的平安模子:SAFE,EXTERNAL_ACCESS和UNSAFE。SAFE权限汇合在实质上与传统的存储历程可以做的事变一样。在SQLServer以外不克不及对其举行任何修正。EXTERNAL_ACCESS同意经由过程.NET对注册表和文件体系举行会见。UNSAFE正如其名。标志为UNSAFE的代码不克不及做任何事变,而且它实践上是不该该在调试大概实行情况以外利用的。年夜多半的编程职员应当永久都不必要用到高于EXTERNAL_ACCESS级其余任何器材。(假如你必要在存储历程大概函数的情况中与文件体系大概注册表对话,这有大概意味着你必要从头思索你实验的逻辑了。)
但是,CLR并非合适统统。一方面,它大概合适那些不简单、必要举行编程,在T-SQL中完成的情况。很多复杂的操纵能够在T-SQL以存储历程的体例完成,而且不必要扩大到内部历程。这意味着高低文互换和分外的事件开支,这两项中的任何一项开支都能起首抹消你利用CLR取得的速率提拔。CLR最好用于替换扩大存储历程——比方,那些必需关闭在数据库中,可是却十分贫苦,没法用T-SQL沉着完成,同时又不克不及轻松挪动到营业逻辑开端的事变。
另外一个大概的弱点就是:正如SQL的首脑RodPaddock在他的blog中指出的,假如你讲营业逻辑中的某个元素挪动到数据库,那便可能会引发可丈量性的成绩。究竟,SQLServer更合适于按比例进步的单个年夜型呆板,而不是高出在几个对照小的呆板(一般是依照营业比例来的)上。这一点指出了有选择的利用CLR有多主要。T-SQL简便、无效;CLR/.NET高贵而且局限普遍。准确的事情选择准确的工具,只管具有浩瀚选择也不错。
你会发现实际上MySQL可以更少地占用资金,前者的每CPU许可费用一般从4000美元到25000美元不等,而MySQL企业版的支持和维护成本就更低了。 |
|