【问题标题】:Moving from Mysql to nosql later. Code requirements?稍后从 Mysql 迁移到 nosql。代码要求?
【发布时间】:2011-06-08 03:29:11
【问题描述】:

在 RDMS (MySQL) 到图形或文档数据库之间切换时,是否需要大量更改应用程序代码或完全重写代码?我正在使用 MySQL,但计划在大约 5-6 个月内切换到某些模块的 NoSQL 实现,因此我想向我的开发团队提供有关开发最佳实践的建议,以最大限度地减少稍后发生切换时的时间并最大限度地减少代码更改。当前平台是带有 MySQL 的 PHP codeignitor。Website 是一个用户内容站点。

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

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

【问题讨论】:

  • 你使用过 ORM 吗?如果是这样,您可能会没事。否则,您将不得不重写与模型有关的大部分内容。
  • 不,没有 ORM。甚至像函数/类这样的应用程序逻辑?
  • 几乎所有直接接触数据的东西都必须重写。我的建议是从 mysql 中抽象一点逻辑,即使它像 function query($query){return mysql_query($query);} 这样简单,然后在脚本中使用 query() 而不是 mysql_query(),然后对几乎所有基本的 DB 函数执行此操作.这样,您可以稍后再回来,基本上拔下这些函数并插入一个具有相同名称的新函数集,该函数集从任何来源提取数据并以与 MySQL 相同的格式返回结果。
  • 使用动态查询是否会影响性能?我会这么认为,因为它必须首先查找 $query1 是什么,然后查找数据库中的值,然后将输出显示给用户?

标签: php sql database nosql


【解决方案1】:

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

【讨论】:

  • 看起来很有趣,但需要研究它是否可以大规模扩展。
  • 它与 MariaDB 5.2 捆绑在一起,因此您可以下载它进行测试。我看过一个关于它的 MySQL 大学会议,其中有一些非常令人兴奋的演讲。它看起来确实不错。
【解决方案2】:

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

当然,如果您的代码一开始没有被编译成单独的 dll,那么您将不得不重新构建和重新编译大部分项目。

您必须意识到这是一个接口更改,而不仅仅是实现更改。世界上没有神奇的最佳实践可以保护您免受界面更改的影响。您所能做的就是依赖一个结构合理的代码库,该代码库经过编译以分离 DLL,以本地化代码更改和重新编译。

【讨论】:

  • PHP 不是一种编译语言(编译为可执行文件 - 可能是,但通常不是),但正确构建应用程序始终是一个好主意;)
  • 我迷路了。这在英语中是什么意思? :)
猜你喜欢
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
相关资源
最近更新 更多