为客户下载数据选项

时间:2014-05-22 10:35:31

标签: ruby-on-rails

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

2 个答案:

答案 0 :(得分:1)

将它放入1个csv文件可能会让你头疼。

如果您使用CSV,我同意Alex将其作为后台工作。

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

  1. CSV
  2. 通常,您要导出许多表。如果你把它全部放在一个CSV文件中,那么文件就会有些混乱。 相反,我会为每个表为每个客户设置一个夜间流程。 这些为每个表生成每个客户的CSV并进行分级。

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

    缺点是缺乏实时性。

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

    获得此选项的一个选择是拥有只读复制数据库,您可以根据需要部署/使用。

    1. 变更管理
    2. 不是每晚或每次请求创建这些不断增长的文件,而是可以在数据发生变化时处理数据。

      例如,如果您的客户确实需要获取此数据,则可能是为了放入他们的数据库。我将不再下载CSV或excel并提供API。

      当数据更改进入您的系统时,您会通知感兴趣的组件更改。这样他们就不必去DB来获取更改。 API可以有一个拾取位置,只要存在就会提供已更改的数据。

      我们已经在大规模,高容量环境中使用这种机制并取得了巨大的成功。

      1. 推送通知 最后,还有网络钩子。基本上,当您将更改后的数据发布到其Web服务器时。
      2. 我建议如果您要使用CSV路线,请查看长期阅读影响。您现在可能不需要进行更改,但您应该在计划中准备好项目和解决方案。

        最后,我会将任务分解为很长时间运行的许多小任务。

答案 1 :(得分:0)

CSV是一种常用的格式。如何实现这一点有一个很好的轨道:http://railscasts.com/episodes/362-exporting-csv-and-excel

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