您的位置:绿色软件编程开发 -> MSSQL教程为何不用MySQL?
为何不用MySQL?
发布于:2007-2-20 17:26:21来源:不详阅读次数:TAG列表:暂时还没有tag

注意:这篇文档写于20005月。因此,它并不能说明MySQL的最新特性。但从中我们仍然可以了解RDBMS的一些基本概念、原理,从而在实践中更好地应用数据库,同时也才能对一些不实的炒作保持必要的警惕。

 为何不用MySQL

作者:Ben Adida  译者:马维达

几乎每周、有时甚至更为频繁,总有人会问我们为何不采用MySQL作为OpenACSRDBMS(关系式数据库管理系统)。ACS Classic teamArsDigita)也一再地在他们的论坛上遇到同样的提问。如果MySQL对于Slashdot来说足够好的话,它也一定能够用于OpenACS,不是吗?

不对。 这篇简短的论文将尝试解释为何MySQL不仅对OpenACS来说是错误的选择,它也不应被用于任何处理关键数据的系统。

RDBMS的目的

RDBMS的目的是提供一种可靠的永久存储机制,在ACID测试中具体表述了这种机制的非常严格的特性。我将直接引用Philip Greenspun的精彩解释(以Oracle作为RDBMS的代表):

原子性(Atomicity

事务的执行结果或者被全部提交、或者被全部回滚(roll back)。要么所有的变动都生效,要么就没有变动生效。假定一个用户正在编辑一条注释,Web脚本告诉数据库“将旧注释值拷贝到审计表中,并用新文本更新活动表”。如果在拷贝之后、更新之前硬盘变满的话,审计表插入就将被回滚。

一致性(Consistency

数据库从一种有效状态转换到另一种有效状态。仅在服从用户定义的完整性约束时,一个事务才是合法的。不允许非法的事务,而且,如果不能满足某完整性约束的话,该事务会被回滚。例如,假定你定义了一条规则:论坛表中的帖子必须与有效的用户ID相关联。然后你雇用了Joe Novice来编写管理页面。Joe编写了一个删除用户页面,它不会检查删除是否会产生一些无主的论坛帖子。然而像Oracle这样的RDBMS将会进行检查,并中止任何事务,如果它产生的论坛帖子为已被删除的用户所拥有的话。

隔离性(Isolation

一个事务的结果对于其他事务是不可见的,直到该事务完成为止。例如,假定你有一个显示新用户和他们的照片的页面。按照出版者的要求,在页面中每个用户都有一张面部照片,如果用户没有照片的话就显示一幅表示无照片的图像。在新用户Jane在你的站点注册的同时,老用户Bill正在查看新用户页面。处理Jane的注册的脚本会对若干表进行插入:usersmugshotsusers_demographics。如果Jane的面部照片很大的话,上述插入可能会需要一些时间。如果Bill的查询在Jane的事务提交之前开始的话,Bill根本不会在他的新用户页面上看到Jane,即使在Jane的事务中,对某些表的插入已经完成。



[1] [2] [3]  下一页

复制地址发给您的朋友阅读!

查看更多评论

100分 85分 70分 55分 40分 25分 10分 0分 用户名字:
    Copyright © 2005-2008 www.orsoon.com (未来软件园) 浙ICP备05048683号.