2011-01-12 11 views
2

当在RDMS(MySQL)与图形或文档数据库之间切换时,是否需要更改应用程序代码或彻底重写代码?我正在使用MySQL,但计划在大约5-6个月内切换到某些模块的NoSQL实现,因此我希望向开发团队提供有关开发的最佳实践方面的建议,以便在切换发生后尽量减少时间,并尽量减少代码更改。目前的平台是使用MySQL的PHP​​ codeignitor。网站是一个用户内容网站。稍后从Mysql迁移到nosql。代码要求?

计划是将朋友组件和文档数据库的图形数据库用于存储邮件,配置文件详细信息和活动流。目前我们已经花了2个多月的时间在MYSQL中创建模式,因为交换机将在几个月内发生,这似乎是一种浪费,因此我希望稍后避免尽可能多的代码更改。

对于我可能需要从这些模块的代码中删除所有的SQL查询?

+0

你使用ORM吗?如果是这样,你可能会好起来的。否则,你将不得不重写大部分与模型相关的一切。 – 2011-01-12 21:48:54

+0

没有,没有ORM。甚至像函数/类的应用程序逻辑? – BrianJ 2011-01-12 21:55:44

+0

几乎所有直接接触数据的东西都必须重写。我的建议是将逻辑从mysql中抽象出来,即使它像'function query($ query){return mysql_query($ query);}`一样简单,然后使用query()而不是mysql_query()脚本,然后为所有基本的数据库功能做到这一点。这样,你可以稍后回来,基本上拔掉这些函数,并插入一个新的函数集,它具有相同的名称,可以从任何源中获取数据,并返回与MySQL相同格式的结果。 – Phoenix 2011-01-12 22:13:16

回答

0

您可以使用OQGraph,它是MySQL的可插入图形引擎。可以为你节省一些工作。

0

在你的代码中创建一个数据访问模块。更改将本地化到该模块。您只重新编译数据访问模块。

当然,如果你的代码没有编译成独立的dll的开始,你将不得不重新编译和重新编译大部分的项目。

您必须认识到这是一个界面变化,而不是单纯的实施变化。世界上没有什么神奇的最佳做法可以保护你免于界面变化。你所能做的只是依靠编译好的代码库来分离DLL来本地化代码更改和重新编译。