Flask + Heroku - AWS S3 是存储静态腌制数据库的最佳方式吗?
Flask + Heroku - Is AWS S3 the best way to store a static pickled database?
我正在将一个应用程序从桌面移动到 heroku,并且需要决定如何管理一个中等大小的静态数据库(~500mb),该数据库包含应用程序经常访问的 pickled 时间序列。
作为静态资源,我的第一个想法是遵循 heroku 指南并将它们托管在 S3 as suggested in this page and access them via boto's s3 functions(因为我不需要直接将数据提供给网络,而是在背景)。
这是管理静态数据库的最佳方法吗,是否有理由改用 heroku 的 postgres db?谢谢
标准答案是需要使用真实的数据库。但在您的情况下,您只需要 内部静态数据 .
您可以加载选取的数据,或者您可以序列化为 JSON 并重新加载它(它至少是可读的),您可以使用 BTree,或者您可以使用从文件保存的 SQLite。
前两者的缺点是需要将数据集加载到内存中。如果您的数据库很大(或者您的实例很小),您将陷入内存危机。最后两个 btrees(键值存储)和 sqlite 为您提供了替代方案。 btrees 是 k-v 和 SQLite 给你一个更传统的关系数据库接口。
另一件要记住的事情是你想如何缓存 s3 访问。大概您不会在每次调用时都下载和反序列化它。你是在 release/startup 上做的吗?您是否检查 sha 哈希或自定义元数据?这取决于您的具体用例。
我为需要保持少量项目状态的应用程序做了类似的事情。我将它写在本地和 S3 上,如果文件丢失,我只从 S3 恢复(因为它只在一台机器上运行)。这不太适合您的用例,但它很相似。
我正在将一个应用程序从桌面移动到 heroku,并且需要决定如何管理一个中等大小的静态数据库(~500mb),该数据库包含应用程序经常访问的 pickled 时间序列。
作为静态资源,我的第一个想法是遵循 heroku 指南并将它们托管在 S3 as suggested in this page and access them via boto's s3 functions(因为我不需要直接将数据提供给网络,而是在背景)。
这是管理静态数据库的最佳方法吗,是否有理由改用 heroku 的 postgres db?谢谢
标准答案是需要使用真实的数据库。但在您的情况下,您只需要 内部静态数据 .
您可以加载选取的数据,或者您可以序列化为 JSON 并重新加载它(它至少是可读的),您可以使用 BTree,或者您可以使用从文件保存的 SQLite。
前两者的缺点是需要将数据集加载到内存中。如果您的数据库很大(或者您的实例很小),您将陷入内存危机。最后两个 btrees(键值存储)和 sqlite 为您提供了替代方案。 btrees 是 k-v 和 SQLite 给你一个更传统的关系数据库接口。
另一件要记住的事情是你想如何缓存 s3 访问。大概您不会在每次调用时都下载和反序列化它。你是在 release/startup 上做的吗?您是否检查 sha 哈希或自定义元数据?这取决于您的具体用例。
我为需要保持少量项目状态的应用程序做了类似的事情。我将它写在本地和 S3 上,如果文件丢失,我只从 S3 恢复(因为它只在一台机器上运行)。这不太适合您的用例,但它很相似。