![PostgreSQL 或 MySQL 用于共享主机](https://linux22.com/image/525658/PostgreSQL%20%E6%88%96%20MySQL%20%E7%94%A8%E4%BA%8E%E5%85%B1%E4%BA%AB%E4%B8%BB%E6%9C%BA.png)
我想为客户提供 SQL 共享主机。
理想情况下我希望:
- 访问隔离(一个用户不应该看到有关其他用户数据库的信息)
- 每个 SQL 用户的 SQL 磁盘空间配额
- 能够限制或降低密集查询的 CPU 使用率,以便每个人都能获得公平的份额
- 其他一些我还没有想到但您可能有所了解的事情。
您推荐哪种引擎,PostgreSQL 还是 MySQL?为什么?
我知道 PostgreSQL 在服务器崩溃或发生故障时有更好的支持,但它无法提供 1) 之类的功能(因为任何人都可以查看 pg_database)。我不知道 MySQL 是否支持 2),但它以某种方式在 CPanel 中完成,所以一定是可能的,我不知道 PostgreSQL 是否支持这一点……
答案1
如果您的用户要共享数据库服务器实例,我不确定您是否可以阻止他们查看服务器上有哪些数据库。(mysql 有“显示数据库”功能)。如果这对您来说是一项关键功能,您可能需要考虑为每个客户配备一个服务器实例。这允许您针对其应用程序调整服务器实例(缓存大小、排序大小等)。
注意:这将要求它们使用您为其分配的特定端口,或者您可以为它们分配要使用的 IP 地址。(如果您使用 rfc 1918 IP 地址(“私有”IP 地址),您实际上拥有无限数量的 IP 地址,只要这些服务器被您数据中心的机器访问,这就可以正常工作。)
另一个选择是使用虚拟服务器,例如 xen 或 vmware。这将使您对每个客户的操作系统配置拥有更多的控制权,并保护他们免受 piggy 用户资源匮乏的困扰(如果您为 xen 主机配置了合理的限制)。
我认为虚拟主机解决方案满足您的所有需求,即使它超出了您问题的具体范围。在我看来,这是实现您的目标最简单、最快捷的方法。
至于我推荐的引擎:Postgresql,每天,全天候。但是,您需要提供客户想要的东西。嗯,如果您使用虚拟机,您可以同时提供两者!