我们有一款产品,使用 Postgres 来存储 RDBMSish 数据(帐户、账单等),并使用 MongoDB 来存储每个帐户的数据(显然无法在 Postgres 上维护)。
在本地开发中,我们设置了我们的盒子,以便将psql
实例和mongod
实例放在同一个盒子上(伴随应用程序服务器和 Web 服务器),但是随着我们进入测试阶段,我想知道什么是最适合生产环境的设置,或者更易于设置和维护。
一个实例(云服务器)将两个数据库放在一起,还是我们应该拆分实例,每个实例都应该有自己的机器?(显然第二种选择总是更好)
有没有人经历过这些设置并有一些见解?我们也在考虑完全迁移到 MongoDB 的可能性,但这种可能性还很遥远。
答案1
通常,在同一系统上托管两个类似数据库的程序不是一个好主意。具体来说,MongoDB 被设计为它所在的任何机器的唯一租户。Postgress 稍微友好一些,但作为唯一租户也会更开心。
但也有需要注意的地方:
- 如果系统有足够的 RAM 来让两个数据库将其数据库完全缓存在 RAM 中,那么在有足够的 I/O 的情况下,它们就可以愉快地共存。
- 如果数据库非常不对称(psql 中的账户元数据数据库很小,mongo 中的账户数据库很大),那么只要您有足够的 RAM 来实现快速的 Mongo 性能和 psql 所需的位,您就可以共享。
- 如果两个数据库都很大,单独运行时无法放入内存中,那么强烈建议使用两台服务器。
如果您将来决定合并到 Mongo,那么您可以愉快地将 DB 服务器规模缩减为单个服务器。