gpt4 book ai didi

node.js - 在 GAE 上进行 Sequelize 数据库迁移的最佳实践

转载 作者:行者123 更新时间:2023-12-03 22:34:34 26 4
gpt4 key购买 nike

我在 Google App Engine 上使用 Express、Postgres 和 Sequelize 构建了一个应用程序,但在运行更长的迁移时遇到了一些问题。这种迁移只是将我的一个大表中的数据转储到 Elasticsearch 中。
截至目前,我一直在预启动命令中运行我的迁移

npm i && sequelize db:migrate
但我注意到,由于实例的自动缩放特性,Google App Engine 一直在一遍又一遍地运行我的迁移。是否有更好的运行迁移实践?有没有办法只运行一次此迁移并防止仅针对预启动命令进行自动缩放?

最佳答案

首先有必要了解 App Engine 如何处理 scalling 类型:

  • 自动扩展根据请求率、响应延迟和其他应用程序指标创建实例。您可以为这些指标中的每一个指定阈值,以及始终保持运行的最小实例数。
  • 基本扩展会在您的应用程序收到请求时创建实例。当应用程序空闲时,每个实例都将关闭。基本缩放非常适合间歇性或由用户事件驱动的工作。
  • 手动扩缩指定不管负载水平如何持续运行的实例数。这允许诸如复杂的初始化和应用程序之类的任务依赖于内存随时间的状态。

  • 我建议您选择手动扩展以设置您需要/想要的特定实例数量,或者,如果您打算使用自动扩展,只需注意限制(最大/最小(空闲)实例)以设置特定限制。但是,您可以选择最适合您要求的配置。
    话虽如此,无论您选择哪种扩展方法,似乎每次 GAE 扩展时您的脚本都会重新启动,或者,脚本告诉您的应用程序一遍又一遍地重复该过程。如果您分享有关如何执行脚本及其作用的详细信息,以便获得更好的视角,这可能会很有用。
    此任务的一个可能解决方法是将迁移脚本本身的功能移植到 GAE 应用程序中受管理员保护的处理程序的主体中,这可以通过对特定 URL 的 HTTP 请求触发。
    我认为可以将潜在的长时间运行的迁移操作拆分为一系列较小的操作(使用推送任务队列),对 GAE 更加友好。
    另外,我建议你看看这个 thread
    但是我知道您想将数据从 PostgreSQL 迁移到一个 Elasticsearch 表,我发现了这个 tutorial 建议从您的 PostgreSQL 数据库创建一个 CSV 文件,然后您可以将数据从 CSV 传递到 Json 格式,这是因为您可以使用服务 Elasticdump 将您的 Json 文件格式化为 Elastic Search 文档,这些步骤是在 Node JS 上进行的,因此您可以根据数据大小在 App Engine 或 Cloud 函数中创建脚本并执行导入,例如:
    # import
    node_modules/elasticdump/bin/elasticdump --input=formatted.json --output=http://localhost:9200/

    关于node.js - 在 GAE 上进行 Sequelize 数据库迁移的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62699134/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com