【问题标题】:How to read millions of records from spring MongoDB and process it如何从 Spring MongoDB 中读取数百万条记录并进行处理
【发布时间】:2022-01-18 12:36:02
【问题描述】:

我正在做一个项目,我需要将 MongoDB 字段迁移到 GC 存储。 MongoDB 中总共有 500 万个文档,我需要从中将一些字段转移到 GC 存储中。我想知道是否有任何有效的读取方式,例如:前 100 条记录,然后将其传输到 GC,然后再次读取接下来的 100 条记录,依此类推。我知道 mongoTemplate 有 findAll 分页,但在研究之后我发现这不是一个好方法。我们在 mongoDB 中是否有任何类型的项目阅读器?

【问题讨论】:

    标签: mongodb spring-boot spring-data-jpa spring-mongodb


    【解决方案1】:

    有很多方法可以做到这一点。

    首先,您需要考虑将文档存储在 GCS 中的选项...

    例如parquet(用于分析的列)、avro(基于行)、多个 JSON,... 以及您希望如何将此表分区为文件。

    如果您打算将所有文档保存到一个文件中,则不能分发此过程,而如果您打算对数据进行分区,则可以按分区分发。

    其次,您需要考虑源文档的结构... 为了批量读取数据,您需要按唯一列(例如 _id)排序并使用 skip & take 对其进行分页。如果要对数据进行分区,则需要对每个分区进行分页,或者分成足够小的分区以便一次读取每个分区。

    回答完这些问题后,您可以选择适合串行工作或分布式工作的技术(例如 Spark 用于分布式)。

    【讨论】:

    • 这次迁移是一次性的,我在mongo文档plaincontent、htmlcontent、附件中有以下大字段需要迁移到google cloud bucket。
    • 这不能回答我提出的任何问题。再读一遍我的回答,如果它没有给你指示,也许可以找一位顾问来帮助你。
    • 嗨@Danny Varod,首先感谢您分享解决方案,如果您能详细解释一下,我对此很陌生。我目前使用从 mongoDB 获取记录并将其上传到 GC 的 Spring Batch,然后我需要将 GC URI 更新为我们将来将使用的文档。
    • 那么每个文档一个文件?无论如何,有很多细节需要考虑,而关于您试图实现的目标的细节很少。事实上,这个问题是无法回答的。似乎您需要一位(在大数据方面经验丰富的软件工程师)顾问来采访您,然后指导您选择符合您的要求和偏好的特定解决方案(可能需要几个小时的会议时间,如果您愿意,可能需要更多时间)执行)。尝试寻找当地顾问。
    猜你喜欢
    • 2019-04-29
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2023-03-02
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    相关资源
    最近更新 更多