首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > MySQL 5.0和PostgreSQL 8.1
【标  题】:MySQL 5.0和PostgreSQL 8.1
【关键字】:MySQL,5.0,PostgreSQL,8.1
【来  源】:http://blog.joycode.com/sunmast/archive/2005/11/07/mysql_postgres_complus.aspx

MySQL 5.0和PostgreSQL 8.1

MySQL 5.0的发布已经有好些天了,添加了“企业应用”所需的特性,它终于支持存储过程和触发器了;不过,企业应用最大的需求之一,被很多初学者所忽略了的(这个现象来自对论坛的观察),是MySQL 5.0新增加的对分布式事务的支持:http://dev.mysql.com/doc/refman/5.0/en/xa.html,基于Open Group的XA规范。

最近又看到新闻,PostgreSQL 8.1也快发布了。在其RC1版本的Release Notes中,也看到了它新增的对XA的支持:http://developer.postgresql.org/docs/postgres/release.html#RELEASE-8-1。不知道这个算不算是PostgreSQL迫于MySQL的压力才推出的功能;对于数据库这样的产品,分布式事务的支持只能算一个基本功能,Oracle和SQL Server在很早以前就已经支持了,这实在不是什么新鲜玩意儿。只是这些开源数据库也开始支持这种关键功能,这应该可以成为真正挑战商业数据库的起点。

这些数据库实现XA规范时,也都采用了2PC的方式(2-Phase Commit)。也有一些产品采用了OMG的CORBA OTS规范,也有一些使用了XA规范但用的是一步提交(XA规范同时支持这两种方式)。然而,最流行的还是基于XA和2PC的方式。SQL Server,Oracle都已经支持(Sybase和DB2也支持XA 2PC,但我不确定它们的驱动也支持);MySQL和PostgreSQL也增加了对它的支持。

Windows和.NET对这种分布式事务(XA和2PC)也有着良好的支持。对于Windows Server 2003和Windows XP,可以简单的使用COM+ 1.5的无组件服务做到:

ServiceConfig scopeConfig = new ServiceConfig();
scopeConfig.Transaction = TransactionOption.Required; ServiceDomain.Enter(scopeConfig); try { // business actions } catch(Exception e) { ContextUtil.SetAbort(); } finally { ServiceDomain.Leave(); }

.NET 2.0的FCL有System.Transactions.TransactionScope类可用:http://msdn2.microsoft.com/en-us/library/system.transactions.transactionscope.aspx。用法更简单,而其背后也是通过ServiceDomain和COM+ 1.5实现的。

对于要求兼容Windows 2000的系统,则可以自己实现一个服务组件来做到这一点。如PetShop 3.0里面的例子,基本的代码看起来是这个样子:

[Transaction(TransactionOption.Required)]
public class BusinessComponent : ServicedComponent { [AutoComplete] public void BusinessProcess() { // business actions } }

在// business actions段,可以同时建立到多个数据库服务器的连接,数据库提供商也可不同,进行多步数据操作,并且保证这些操作是一个原子操作(实际上能保证所有四个ACID属性)。这就是分布式事务的威力,也是大型应用中必须实现的需求。

写到这里也许你已经打算用MySQL的.NET Connector试试MySQL的这个新功能了。不过还得再等等,MySQL是升级了,它的.NET Connector还没升级,开源社区看起来还是更喜欢Java(显然),因为Java版的Connector已经可以了。为新版PostgreSQL准备的.NET驱动也还在开发过程中。不过它们实现的分布式事务规范和COM+的相同,所以没有理由不支持,就看驱动的了。到时候,你是否也会考虑考虑使用这些开源的产品呢?

COM+也是个好东西,并且目前为止这是.NET下(COM+的托管包装见System.EnterpriseService命名空间)实现分布式事务的唯一途径。我刚加入Infosys不久,涉及到的两个.NET项目(一个B/S一个C/S)均使用了ES/COM+。得益于COM+服务良好的灵活性和可伸缩性,配合Windows Cluster Service,满足了客户苛刻的需求。

李开复给中国学生的第五封信 – 你有选择的权利:【上一篇】
C# Anonymous Methods的前台和幕后 [Part.1]:【下一篇】
【相关文章】
  • Zend Studio 3.5.0
  • PHP 5.0.1 Released!
  • Solaris9下利用mysql认证的pureftp安装配置实例
  • freebsd+qmail+mysql+vpopmail之完全ports安装
  • Postfix邮件系统安装手册(MySQL+IGENUS+TLS+QUOTA)
  • Freebsd postfix with SASL2 mysql courier-imap完全por
  • 数据库基础:SQL导出到MYSQL
  • PHP 5.0 + MYSQL 5.0 + WIN2003
  • Apache2+php4.3.6+MySQL4.0.20+SSL详细配置过程
  • Apache+PHP+Mysql+PhpMyAdmin+IPB实战指南
  • 【随机文章】
  • osgi介绍(二)一个假想的实例
  • 最近看了几本书
  • Visual Basic 实现某一天的下/上 一个星期几是那一天
  • 使用设计中心查看内容
  • 新颖固体图像传感器的发展及应用
  • 是搞网站的都应该了解-浅谈网站入侵的常用方法和一般思路
  • XI-2000无线接入点
  • 视频会议五种趋势
  • mysql常用操作
  • asp.net 中DataGrid自定义分页(简单,实用,易懂)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.