Ruby on rails 为客户下载数据选项

Ruby on rails 为客户下载数据选项,ruby-on-rails,Ruby On Rails,我有一个多租户Rails应用程序,其中客户的数据以全局范围分隔。现在,我想让客户选择在一次下载中下载他们自己的所有数据。实现这一目标的最佳方式是什么?最好将所有内容输出到CSV文件中吗?CSV是一种常用的格式。关于如何实现这一点,有一个很好的例子: 根据我的经验,我可以建议您将其作为后台计划的过程来实现,因为导出可能会耗费大量资源,并且需要很长时间才能完成。例如,任务完成后,您可以通过电子邮件向用户发送下载链接。将其放入1个csv文件可能会让您头疼 如果你选择CSV,我同意Alex将其作为背景工

我有一个多租户Rails应用程序,其中客户的数据以全局范围分隔。现在,我想让客户选择在一次下载中下载他们自己的所有数据。实现这一目标的最佳方式是什么?最好将所有内容输出到CSV文件中吗?

CSV是一种常用的格式。关于如何实现这一点,有一个很好的例子:


根据我的经验,我可以建议您将其作为后台计划的过程来实现,因为导出可能会耗费大量资源,并且需要很长时间才能完成。例如,任务完成后,您可以通过电子邮件向用户发送下载链接。

将其放入1个csv文件可能会让您头疼

如果你选择CSV,我同意Alex将其作为背景工作

我将引导您通过两种方法(CSV和Feed),然后您可以选择适合您的方法

  • CSV
  • 通常有许多表需要导出。如果你把它全部放在一个CSV文件中,它将是一个有点凌乱的文件。 相反,我会为每个表的每个客户设置一个夜间流程。 这些工具为每个表的每个客户生成CSV,并对其进行分级

    最后,对于每个客户,我会将这些文件合并成一个压缩文件,并准备交付(Web下载、FTP、电子邮件等)

    缺点是缺乏实时性

    如果需要实时(或者如果数据集很大),则必须考虑这对生产数据库的影响。随着时间的推移,它可能会导致严重的性能下降

    解决这个问题的一个选择是拥有只读复制数据库,您可以根据需要进行部署/利用

  • 变革管理
  • 您可以在数据更改时处理数据,而不是每晚或每次请求时创建这些不断增长的文件

    例如,如果您的客户确实需要获取这些数据,则可以将其放入他们的数据库中。我将不再下载CSV或excel,而是提供一个API

    当数据更改进入系统时,您会将更改通知感兴趣的组件。这样,他们就不必去数据库获取更改。API可以有一个拾取位置,该位置可以在任何时候提供更改的数据

    我们在大规模、高容量环境中使用了此机制,并取得了巨大成功

  • 推送通知 最后,还有web钩子。基本上,当您将数据发布到他们的web服务器时
  • 我建议,如果您打算采用CSV路线,请考虑长期阅读影响。您现在可能不需要进行更改,但您应该在计划中准备好项目和解决方案


    最后,我将在一段时间内将任务分解为许多小任务。

    感谢您的全面回答。只有当客户决定不再是我的应用程序的客户并且想要随身携带他的数据时,才需要它,所以它(希望!)不会被频繁使用。