我继承了一个带有大型 Postgres 数据库的项目(超过 150 个表、超过 200 种自定义类型、近 1000 个函数、触发器等)。不幸的是,所有内容都被转储到一个模式 ( public
) 中。从应用程序的角度来看,它工作得很好,但是维护起来却是一场噩梦。
显而易见的事情是按功能将这些对象拆分为单独的模式(例如,所有与供应商相关的东西都进入supplier
模式,所有与管理相关的东西都进入admin
模式等)。一旦完成,当然,需要对代码进行一些更改(好的,很多更改)才能引用新模式。考虑到 Web 应用程序包含大约 2000 个 php 文件,这可能是一项艰巨的任务。同样,由于系统中的每个 php 都已经开始,require_once('controller/config.php');
我可以在那里添加一个调用来设置搜索路径以包含所有新模式:SET search_path = 'public, supplier, admin, ...'
,但不知何故,我潜意识里不喜欢这个解决方案。
有没有其他方法可以处理问题?我不想在重组数据库上花费比绝对必要更多的精力。我也几乎不会在主网站上造成任何停机时间,因为它被世界各地(澳大利亚、欧洲、北美)的客户使用。
你会建议我做什么?