至今还没有mysql 5版本发布的官方确定日期,但mysql专家mike hillyer从内部抢先获取了有关mysql 5的新特点。在这篇技巧文章中,hillyer回答了读者有关mysql 5和从oracle和microsoft的产品升级到mysql方面的问题。 xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
mysql 5中的哪些特点在何种情况下将可能非常有用?
hillyer:那是一定的!让我们看一看mysql 5中主要的特点:
存储进程(stored procedures)是存储于mysql服务器中的进程码,它能够在服务器端被完全的执行。mysql使用标准的sql:2003存储进程语言,此语言也被称作pl/psm。这里有一个存储进程的例子:
create procedure procedure1 /* name */
(in parameter1 integer) /* parameters */
此存储进程获取一个单精度整型变量,然后根据变量是否等于17,将其插入“birds”或“beasts”表中。
虽然存储进程并不是每个人都需要,但使用强制性的存储进程,将使他们的程序具有可移植性:你可以使用存储进程编写事务处理逻辑,然后在php前端、桌面应用程序和pda程序中重用它,在mysql服务器上调用存储进程。你还能够在c、php、java、vb,或其它任何可以连接mysql的语言中调用同样的存储进程。这可以节省大量的工作,因为你不必要再重复的一遍又一遍的执行同样的逻辑运算。
你可以在这篇文档:http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html中学习到更多有关存储进程的知识。
触发器使用同样的过程语言作为存储进程,不过相比等待用户调用代码,它附加在一个事件上,比如insert(插入)表的事件。事件通常是insert、update和delete。这里是一个触发器的例子:
create trigger t25_bi
before insert on t25
for each row
if left(new.s2,1)<>'a' then set new.s1=0; end if;//
在上面的这种情况下,触发器检查正在插入到表中的数据,看它插入s2字段的最左边的字符若不是“a”,则设置s1列的值为0。触发器能够被用来记录操作(logging activity,就是说你可能希望有一个审计表显示每个动作,另一个表作为日志记录)、验证数据(validating data,根据复杂的标准检查数据的插入值),和不需强制的外来关键字就可以维护表处理程序之间的关系。
在http://dev.mysql.com/tech-resources/articles/mysql-triggers.html,你可以学习到更多有关触发器的知识。
而视图(view)则是“一个数据库中定义的持久的指定的、源表。”将视图想像成一个能够应用于表中的存储查询。这里有几个有关视图的例子:
a view is "a named, derived table whose definition is a persistent part of the database." think of a view as a stored query that can be used as a table. here are a couple of examples of views:
create view v as select column1 from t;
create view v as
select * from t
where colxml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />
使用视图将使mysql的使用简单化。如果你为了事务报告使用一个复杂的查询,它们通常可以容易的转换成一个视图,然后终端用户能够使用视图创建报告。视图还能够在安全方面有所帮助,如果一个用户只有访问一个表单中的某一行的子集的权限,你就可以创建一个视图,分配给他相应的权限,而不必像以前一样把整个表的权限都要给他(比如你想某个用户只能访问多区域表单中的单一区域销售数据)。
在http://dev.mysql.com/tech-resources/articles/mysql-views.html,你可以看到更多有关视图的文章。
至于如何使用mysql的新特典,则依赖于你的应用和你的技术水平。多数用户不需要在程序编写上具有很多经验,就能够从视图中获取巨大的好处,因此非常值得尝试。
mysql的可扩展性如何?
hillyer:这完全取决于你的需要,不过还是让我给你一些真实性的可扩展性的例子。在上个月的2005 mysql用户讨论会上,我遇到了一些运行mysql的,拥有20tb字节数据的用户,他们使用这些数据进行统计分析。此次会议,ticketmaster描述了mysql如何通过复制设定,用mysql的复制体系将应用扩展到处理许多不同地点的服务器,它们每天的售票数超过500,000张。wikipedia同样使用mysql服务器,此服务器拥有32gb的内存,处理高负载的数据库应用,并且mysql还能够处理更多的内存和资源。一些知名的公司,如yahoo、google和slashdot,都使用mysql运行高负载的web应用。
最后我要说的是,这些都取决于你需要何种扩展,不过你可以放心,mysql具有非常好的可扩展性,能够与其它东西很好的结合在一起。
我的公司现在实用磁带驱动器备份mysql。我们的系统有一点老了,现在我们正在寻找另外的解决方案,您能否向我建议一些能够跟mysql一起更好工作的备份系统?
hillyer:通常,一个备份方案是硬件和软件的混合体,而对mysql来说,硬件并不是与备份真正关系紧密的,你可以将备份存储在磁带、光盘,或者磁盘阵列上。如果你之前实用的是磁带,那么你只需要活的一个新的磁带解决方案即可。
在软件方面,有多种方案:你可以实用内建在mysql中的工具,比如mysqldump和mysqlhotcopy,或者实用来自专业公司,如veritas和arkeia的第三方备份解决方案。mysql已经在它的官方网站发布了一个备份方案的列表――http://solutions.mysql.com/search.php?pc=14%
我们现在所有的应用都实用oracle 8i,不过到了升级的时候。我们对mysql低成本非常感兴趣,但是有一个问题,我们不知道mysql有没有能力处理位于两个海岸的公司的动态web销售业务。我们的情况是否能够使用mysql?我们将要考察实用的模型,或者说客户-服务器的转换是不是很困难?
hillyer:根据你们现在正在使用的oracle的情况,mysql将非常适合你们的需要。你们现有的系统需要在账户中存储一些项目,比如广泛的使用存储进程,而mysql支持不同的存储进程标准。oracle使用pl/sql语言,mysql则使用pl/psm,这会导致一个问题,就是如果你使用了大量的oracle特有语法,则需要重写原来的程序。
至于实现处理动态web销售业务,根本不必担心。如ticketmaster和travelocity之类的公司,都在高事务处理环境中广泛使用mysql,并且觉得mysql的规模刚好适合他们的需要。
在模型选择方面,我无法根据你给出的信息作出准确的回答。我知道许多组织最初都是先转移后端数据库,然后考虑改变他们的应用程序,看起来根据情况逐渐的做一些小修改比一次性撕裂整个系统要容易的多。
我们公司已经逐渐(150个用户)转移到了linux。现在在数据库上,我们想脱离微软的sql,但是迁移任务看起来是一个非常大的处理任务,因为我们的it团队只有一个人(就是我),人力资源太少了。而如果我们选择了mysql,会不会丢失一些功能或数据?我是否能够单独处理迁移任务?
hillyer:如果工作做的正确,就不会发生数据丢失。功能则可能不同,这依赖于你现有数据库中存储进程的数量。mysql 5已经有了存储进程,但mysql的存储进程使用的是pl/psm标准,而mssql使用的是t-sql标准。虽然两个标准在许多方面都是相似的,你可能发现你必须修改mssql的存储进程,以让它适用于mysql的工作。
你能够适用mysql migration toolkit帮助你完成mssql到mysql的数据和规划迁移,我还建议你阅读一下我撰写的文章――migrating mssql and microsoft access databases to mysql(将mssql和微软access数据库迁移到mysql,http://dev.mysql.com/tech-resources/articles/migrating-from-microsoft.htmlf)。另外,我还发不了一个有关将mssql和微软access数据库迁移到mysql的演示文稿,你可以在下面的网址查看此文稿:http://www.openwin.org/mike/presentations/uc2005/index.php。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器