11

对于那些试图成为优秀的小开发人员并使用 git 对他们的 ExpressionEngine 站点进行版本控制的人来说,你如何处理你的数据库?

在我与多个开发人员在一个 ExpressionEngine 站点上工作的有限经验中,我们不得不全部运行在远程 Web 服务器上运行的单个 MySQL 开发数据库。对于那些尝试过的人来说,它非常缓慢。页面加载很容易花费 5-10 秒,使开发变得极其困难。在远程开发服务器上工作会更快。我试图避免在远程 MySQL 服务器上工作,以便能够在任何地方工作,而不依赖于 Internet 连接速度/质量。

只是想知道其他人如何处理他们的 MySQL 数据库。

您的所有开发人员都使用一个中央数据库吗?您是否像我们一样处理过缓慢的问题?

您是否将数据库置于版本控制之下?您如何处理多个开发人员和多个分支之间的导出/导入?

使用一个开发人员,我可以非常轻松地导入/导出/提交数据库,但是一旦您将另一个开发人员添加到组合中,它就会变得非常混乱。期待听到大家对这个庞大话题的看法。

谢谢!

4

4 回答 4

7

使用远程数据库失败的 DNS 请求似乎浪费了很多时间。

使用start mysqld with --skip-name-resolve. (关于这个主题的更多信息可以在这里找到:http: //dev.mysql.com/doc/refman/5.0/en/host-cache.html

拥有一个远程数据库似乎仍然是我们与多个开发人员一起处理项目的最佳方式。

于 2012-11-07T14:50:21.727 回答
5

我几乎总是使用中央数据库进行开发。根据您使用的主机,速度差异可能不会很大。

显然,如果您没有对数据库进行更改,即仅进行模板开发,则不需要保持数据库同步,因此您可能会调出数据库的本地副本。你只需要记住重复任何数据库更改,如果你最终做了一些。

至于版本控制,我在我的基础存储库中保留了一份我的基础 EE 安装的 SQL 文件。除此之外,我通常不会在 Git 中保留数据库的副本,所以我不会做很多导入/导出等操作。

于 2012-11-07T14:52:43.250 回答
2

在我的公司(4 名开发人员)中,我们每个人都在本地运行自己的数据库。但最近我测试了 Rackspace 云数据库(但还有其他云数据库供应商),以获取可能难以在小型笔记本电脑上运行的重型数据库。它比运行我们自己的数据库服务器相对便宜,并且可以在几分钟内设置或删除。

于 2012-11-07T14:53:05.933 回答
2

你最近看过 EE Profiler 吗?您可能会注意到主页上大约有 20-80 个查询,具体取决于它的复杂性。

问题在于,对于每个查询,MySQL 必须执行一个远程数据请求,下载响应,然后向 ExpressionEngine 提供它的数据。数据库的 20-80 次往返是导致您延迟的原因,我认为您对此无能为力。使用远程(我们的网络之外)数据库时,我会遇到与您相同的延迟。

当 MySQL 在您的机器或生产服务器上运行时,它没有添加的网络请求导致它的数据请求延迟。这就是区别。

至于修复,您所能做的就是移动到托管在内部网络上的数据库。我们有一台模仿我们用于登台的生产环境的 Linux 机器。由于它在我们的网络上,我们可以在database.php文件中使用本地 IP 地址。这快得多。

The problem that we still have is the issue of channels/fields/entries. When a developer is working on a new section, they'll likely need to create a new channel and fields and/or new entries. When we're ready to push that functionality to production, we have to manually make those changes on the production server as there is no way to reliably export them. I am hopeful of this addon though---we'll see.

于 2012-11-07T17:59:55.713 回答