我有两个存储(PostgreSQL,MongoDB),因为我需要在我的计算机上本地开发应用程序(理想情况下是脱机),我需要将这些存储中的数据复制到我的硬盘。
无论如何,这些数据库都是大型数据库,大约有数百GB的数据。
我不需要存储那里的所有数据,只需要对它们进行采样即可在本地启动我的应用程序。两个存储都有一些功能强大的数据导出工具(pg_dump,mongodump,mongoexport等)。
但我不知道如何轻松有效地导出小样本数据。即使我将获取所有表/集合的列表并构建一些白名单,这将定义表,这应该限制行数,但是会出现触发器,函数,索引等问题。
答案 0 :(得分:1)
我不知道测试MongoDB,但对于PostgreSQL来说,这就是我的工作。
我在针对将数据库端与应用程序端分开的数据库进行开发时遵循模式。为了测试数据库端,我有一个测试模式,其中包含一个重置真实模式中所有数据的存储过程。此重置是在MERGE模式之后完成的(删除具有无法识别的密钥的任何记录,更新具有匹配密钥但已更改的记录,并插入缺失的记录)。在运行每个单元测试之前调用此重置。这为存储的函数提供了简单明了的测试覆盖率。
为了测试调用数据库的代码,数据库层总是被模拟,因此永远不会有任何实际进入数据库的调用。
您所描述的内容向我建议您尝试将单元测试与集成测试混合,我强烈建议您不要这样做。当您已经证明基本功能并且想要证明组件之间的集成以及可能还有性能时,会发生集成测试。对于IT,您确实需要代表性硬件上的代表性数据集。通常这意味着一台专用机器,并使用哈德森进行CI。
您似乎要进入的方向很难,因为正如您已经注意到的那样,处理大量数据并且很难生成代表性数据集(大多数CI系统实际上使用的是生产数据)被“清理”了敏感信息)
这就是为什么我工作的大部分地方都没有这样做的原因。
答案 1 :(得分:0)
只需复制一遍。按照今天的标准,数百GB不是很多 - 你可以花80美元购买2000GB磁盘。
如果您在小样本数据上测试代码,那么您如何知道您的编码对于完整数据库是否足够有效?
请记住,如果密码超出公司大楼,请使用强密码进行加密。