5
PostgreSQL:使用多个数据库,每个数据库有一个模式,还是一个数据库有多个模式,更好?
在对我的问题之一发表评论之后,我在考虑使用具有X模式的数据库是否更好,反之亦然。 我的情况:我正在开发一个Web应用程序,当人们注册时,我会创建(实际上)一个数据库(不,它不是社交网络:每个人都必须有权访问自己的数据,而从不查看其他用户的数据) 。 这就是我以前的应用程序版本(仍在MySQL上运行)所使用的方式:通过Plesk API,对于每次注册,我都这样做: 创建具有有限权限的数据库用户; 创建一个只能由先前创建的用户和超级用户访问的数据库(用于维护) 填充数据库 现在,我需要对PostgreSQL做同样的事情(该项目正在日趋成熟,而MySQL ...不能满足所有需求)。 我需要使所有数据库/方案备份独立:pg_dump可以在两种方式下完美运行,并且对于可以配置为仅访问一个模式或一个数据库的用户而言,pg_dump可以完美地工作。 因此,假设您比我更有经验的PostgreSQL用户,那么您认为什么是对我而言最好的解决方案,为什么? 使用$ x数据库而不是$ x模式会有性能差异吗?哪种解决方案将来会更好维护(可靠性)? 我所有的数据库/方案都将始终具有相同的结构! 对于备份问题(使用pg_dump),最好使用一个数据库和多个模式,一次转储所有模式:恢复将非常简单,将主转储加载到开发计算机中,然后仅转储和还原所需的模式:是另外一个步骤,但是转储所有模式似乎比逐个转储它们要快。 2012年更新 好吧,在过去的两年中,应用程序的结构和设计发生了很大的变化。我仍在使用该one db with many schemas方法,但是仍然为我的应用程序的每个版本提供一个数据库: Db myapp_01 \_ my_customer_foo_schema \_ my_customer_bar_schema Db myapp_02 \_ my_customer_foo_schema \_ my_customer_bar_schema 对于备份,我会定期转储每个数据库,然后将备份移至开发服务器上。 我也在使用PITR / WAL备份,但是,正如我之前说过的那样,我不太可能必须立即还原所有数据库 ...因此它可能会在今年被淘汰(在我看来,这不是最好的方法) )。 从现在开始,即使应用程序结构已完全更改,“单db-多次模式”方法对我来说也非常有效: 我几乎忘记了:我所有的数据库/方案都将始终具有相同的结构! ...现在,每个模式都有其自己的结构,该结构可动态响应用户数据流。