0

我想将我的日志记录数据整合到一个StatisticStore模型中。现在,我的日志数据分散在 3 个模型中,一团糟。

迭代所有 3 个模型的所有记录并在新StatisticStore模型中创建每个记录的最佳方法是什么?

4

2 回答 2

1

如果每个模型只有几千个实体,我会简单地使用数据存储迭代三个模型中的每一个fetch,并将它们存储在新StatisticStore实体中。您甚至可以使用远程 api来做到这一点。

如果每个模型有数千个实体,请查看MapReduce 框架。使用 MapReduce 框架,您需要为三个模型和三个映射函数中的每一个编写一个管道定义,这些函数接受一个实体并将其存储在您的StatisticStore. 在您的情况下,“减少”部分应该是不必要的。

这个 SO 问题的答案也可能提供进一步的启发。

于 2013-08-27T08:57:04.840 回答
0

您没有描述很多限制,所以我认为这只是您所追求的简单复制操作。“最佳方式”有点模糊,我不知道你在比较什么。您唯一需要注意的是在事务中创建新实体、复制数据和删除旧实体的实际工作。这很容易做到,并且可以防止您在出现问题时创建重复项。

远程 API shell 绝对是最省力的编码方式。您可以编写简单的 python 函数来进行事务复制,并在 shell 中运行它。您不需要编写任何额外的处理程序,甚至不需要部署应用程序的新版本。远程 shell 的问题是访问数据存储的速度可能慢 100 倍,因此可能需要很长时间。如果您让它在一夜之间运行,如果您的互联网连接出现问题,它可能会停止 - 尽管如果您在事务中复制实体,这应该不是一个大问题,您可以重新启动操作。作为参考,我最近通过远程 API 运行了一个操作,上传了 6000 个实体,大概需要 5 分钟。如果你可以让操作在一夜之间运行,

mapreduce API 方法将运行得更快,因为负载将分布在多个实例上。设置 mapreduce 需要付出更多努力,您必须部署具有该功能的应用程序的新版本,启动它,等到它完成,并且可能清理代码以及一堆日志记录mapreduce 自动生成的实体。

于 2013-08-27T14:36:04.683 回答