testing - 设置重复的mongodb测试环境

标签 testing mongodb sandbox

我想知道对于我在为我们的团队设置沙箱环境时遇到的问题,社区最推荐的是什么。

目前,我们使用两个单独的 MongoDB 实例,均为 3 个成员副本集,分别用于我们的测试和部署环境。内部人士普遍认为,测试环境中的所有数据大部分都是一次性的,并且只是由开发人员在对应用程序进行单元测试的过程中创建的。

我想为开发团队提供使用真实实时数据进行测试的新选项,但要在单独的安全沙箱实例中进行。起初,我最初认为我可以只使用 copyDatabase 命令每晚将数据复制到一个新数据库中,并将各个开发人员应用程序服务器连接到这个数据库。问题是系统中有大量 GridFS 数据,像这样复制会浪费大量磁盘 i/o,而且我们在较小的云实例中运行。

我对走这条路持谨慎态度,尤其是在有更合适的替代方案的情况下。

是否有可能,例如,设置部署副本集的第四个成员,它只作为从节点运行,将所有查询设置为 slaveOkay = True 并针对该单个节点运行测试?这会传播回其他成员吗?如何处理插入?

我的建议可能不切实际,特别是如果传输必须跨越网络,这也会浪费网络传输。有没有人曾经解决过类似的问题?谢谢!

最佳答案

Slave 仅用于读取。所有写入都必须交给master。这排除了您的“第四个奴隶”选项。

至于测试目的,您真的需要包含所有 gridfs 数据的数据库的精确副本吗?我会尝试只复制“大量”数据的相关部分。这排除了 db.copyDatabase() :) 改为执行 mongodump/mongorestore

此外,我想指出测试数据库和暂存数据库应该是不同的数据库。测试数据库用于单元测试(使用模拟/生成的数据)。暂存数据库填充了生产数据,用于集成/验收测试。

关于testing - 设置重复的mongodb测试环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10685737/

相关文章:

ios - AppStore verifyReceipt 在沙盒中返回 21007

javascript - 我想使用 mongodb 的 _id 检索在特定日期插入的值

java - 我可以信任 Java SecurityManager 沙箱吗?

java - 测试时间格式 HH :MM:SS. sss

node.js - Jest 提示错误……我告诉 Jest 要期待

silverlight - 新 Selenium 用户

node.js - 我不能同时使用 $set 运算符和 $inc 运算符,只有一个在我的情况下有效

node.js - Mongoose:如何生成有效的 mongoose.Types.ObjectId?

sandbox - 尝试从 Flatpak 沙箱中的 Blender 访问 USB 驱动器

docker - kata 容器可以用作沙箱来运行不受信任的代码吗?