84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
目前产品在使用阶段,采用了阿里云ubuntu上部署了一系列东西,如:nginx、phpfpm、mysql、beanstalkd。 产品在初期,代码和数据库经常变更,而且变化非常多,有时数据库的结构都有大调整。 我在这方面没有太多经验。该怎么维护线上代码和数据库,有什么好的方案吗? 看到有了发了这个项目多版本开发,更新数据库结构时的优美方案?,但不是很了解。
学习是最好的投资!
感觉楼主没有提到“测试系统”呢? 我描述一下我之前负责的项目的数据库维护方式:首先数据库分为正式库、测试库、开发库。开发人员只能操作开发库,并且每次操作的SQL语句都要提交到SVN(这里要求他们严格按照顺序提交打上时间戳)这里有个建议就是开发人员提交SQL时区分是数据操作语句还是数据结构操作语句分两个文件。测试库由一个人维护,待需要更新测试库时,就把svn中的SQL文件按照时间顺执行。把这些执行通过的SQL文件统一保存,待正式库更新时使用。 原则就是保证更新测试系统和正式系统操作一致。将问题尽量暴露在测试环境中,降低正式环境的风险。
可以使用Git做本版本管理工具,使用Capistrano进行线上实时部署。这样一旦确认变更,直接把对应的分支部署上去就可以了。 你可以看看这篇文章,Capistrano可以用于部署/维护多种编程语言开发的项目。
这种问题不同的框架有不同的解决方案。唯一可以无视框架的是手写迁移的sql脚本。可以先把数据库dump下来在本地测试好新的代码和迁移后的数据,然后再到线上更新。当然如何更新线上的数据库和代码是另一个问题了。
代码管理的话推荐git,git的hooks非常好用,在初期利用hook在master分支的每一次提交都可以同步到线上 数据库的话一开始就最好使用第三方的数据库不要自己维护,rds买一台一年也才不到500吧
代码管理肯定要用git或者svn之类的
楼主的问题是一个管理问题,不能单独用技术去解决
比如团队中每个工程师自己记录对数据库结构的变动,上线时统一集成在一起由经理确定上线改动数据库结构
尽量在功能模块上划分清楚,每个人负责一个或者几个模块,尽量不交叉,这样互相修改对方代码的机会就会少,带来的合并和覆盖就会少,再辅助一些版本控制的流程就会更加容易些
如果数据库经常变更,可以使用mongodb。至于代码管理,可以使用svn进行版本控制。
感觉楼主没有提到“测试系统”呢? 我描述一下我之前负责的项目的数据库维护方式:首先数据库分为正式库、测试库、开发库。开发人员只能操作开发库,并且每次操作的SQL语句都要提交到SVN(这里要求他们严格按照顺序提交打上时间戳)这里有个建议就是开发人员提交SQL时区分是数据操作语句还是数据结构操作语句分两个文件。测试库由一个人维护,待需要更新测试库时,就把svn中的SQL文件按照时间顺执行。把这些执行通过的SQL文件统一保存,待正式库更新时使用。
原则就是保证更新测试系统和正式系统操作一致。将问题尽量暴露在测试环境中,降低正式环境的风险。
可以使用Git做本版本管理工具,使用Capistrano进行线上实时部署。这样一旦确认变更,直接把对应的分支部署上去就可以了。
你可以看看这篇文章,Capistrano可以用于部署/维护多种编程语言开发的项目。
这种问题不同的框架有不同的解决方案。唯一可以无视框架的是手写迁移的sql脚本。可以先把数据库dump下来在本地测试好新的代码和迁移后的数据,然后再到线上更新。当然如何更新线上的数据库和代码是另一个问题了。
代码管理的话推荐git,git的hooks非常好用,在初期利用hook在master分支的每一次提交都可以同步到线上
数据库的话一开始就最好使用第三方的数据库不要自己维护,rds买一台一年也才不到500吧
代码管理肯定要用git或者svn之类的
楼主的问题是一个管理问题,不能单独用技术去解决
比如团队中每个工程师自己记录对数据库结构的变动,上线时统一集成在一起由经理确定上线改动数据库结构
尽量在功能模块上划分清楚,每个人负责一个或者几个模块,尽量不交叉,这样互相修改对方代码的机会就会少,带来的合并和覆盖就会少,再辅助一些版本控制的流程就会更加容易些
如果数据库经常变更,可以使用mongodb。至于代码管理,可以使用svn进行版本控制。