我在生产环境中设置了一个 mongo 分片。在我的应用程序中,我每天创建数据库,因为我的单日数据库大小达到 18 GB。
我的数据库中有一个集合,用于记录我网站点击量的原始数据。我仅在一天内使用此集合,因为整个原始数据通过我的 db 脚本转换为聚合数据。
我想在一天结束时删除这个集合,但我的困惑是由于这个集合的大小(几乎 6 GB)而且我的数据库大小超过 17 GB 使用修复数据库命令是否安全。
你能建议我一个方法来做到这一点。
我在生产环境中设置了一个 mongo 分片。在我的应用程序中,我每天创建数据库,因为我的单日数据库大小达到 18 GB。
我的数据库中有一个集合,用于记录我网站点击量的原始数据。我仅在一天内使用此集合,因为整个原始数据通过我的 db 脚本转换为聚合数据。
我想在一天结束时删除这个集合,但我的困惑是由于这个集合的大小(几乎 6 GB)而且我的数据库大小超过 17 GB 使用修复数据库命令是否安全。
你能建议我一个方法来做到这一点。
MongoDB(2.4 版)目前在数据库级别分配存储。您是正确的,您需要运行该repairDatabase
命令才能回收预分配的存储。
如果该空间很快将再次被重用(即第二天的原始数据),您可以将其分配而不是运行修复。如果您每天处理不同数量的数据,这可能会使用一些过多的存储空间,因为您基本上会保持在分配了最多存储空间的“高水位线”。
如果您担心空间使用情况,更好的方法是将原始数据添加到单独的数据库中,当您不再需要原始数据时可以删除该数据库(即您的原始数据每天进入单独的数据库/集合而不仅仅是一个单独的集合)。