Python:寻找有关充当数据库缓存的网络服务器设置的建议
Python: Looking for recommendations for a webserver-setup acting as a database-cache
我正在寻找一个轻量级的网络服务器设置,作为多个外部数据库的 REST-API 缓存。
项目的固定要求:在 CentOS7
上使用 Python3
指南:创建一个轻量级的网络服务器,它需要健壮和快速
用例场景:
在服务启动期间,我需要在 RAM 中缓存来自 10 个外部数据库服务器的数据。每个服务器有 5 tables 与 ca。每个 100k 行。所以总而言之,我需要将数据合并为 5 tables 和 ca。 1 毫。条目。每 10 分钟我需要再次查询服务器以识别 new/removed 行并更新缓存。网络服务器将收到从缓存中查找单个条目的请求,该条目由 table 和给定的搜索条件过滤(如“field_1” ="value_X")。
预期网络负载:平均。 1 request/sec.,(罕见)峰值负载 ca。 100 requests/sec.
现在我对上述场景的问题:
- 我可以从数据库服务器获取数据,格式为 json、xml 或 csv。对于该用例,推荐使用哪种格式(快速“插入”到具有 1 mio 行的 table)?
- 我应该如何将数据存储在内存中? pandas 数据帧?
- 总而言之,所有这一切的推荐框架是什么? pandas, gunicorn, supervisor & nginx?
非常感谢任何输入。
要反序列化您的数据,CSV will be the fastest method 在大多数情况下。这允许您在不同的线程中读取多行并降低复杂性。
为了存储数据,我建议使用性能最高的解决方案,这可能是使用现有的(否)SQL 数据库实现,或者使用 SQL 以编程方式更简单的方式ite in-memory 数据库。 Pandas 更适合分析,虽然我知道您想获得与普通 DBMS 类似的功能来获取数据。对于这些用例,SQLite is faster(并且更容易)比 Pandas。
在您的用例中,我建议使用 the FastAPI library 在 Python 内的多个线程中自动为 API 提供服务。你不需要在它前面有另一个网络服务器,除非你想在那里做缓存。该脚本可以从这些线程中访问 in-memory 数据库或专用的 DBMS 应用程序。使用主管取决于您的用例 - 在容器内或者如果脚本作为服务运行,则不需要它。
我正在寻找一个轻量级的网络服务器设置,作为多个外部数据库的 REST-API 缓存。
项目的固定要求:在 CentOS7
上使用 Python3指南:创建一个轻量级的网络服务器,它需要健壮和快速
用例场景: 在服务启动期间,我需要在 RAM 中缓存来自 10 个外部数据库服务器的数据。每个服务器有 5 tables 与 ca。每个 100k 行。所以总而言之,我需要将数据合并为 5 tables 和 ca。 1 毫。条目。每 10 分钟我需要再次查询服务器以识别 new/removed 行并更新缓存。网络服务器将收到从缓存中查找单个条目的请求,该条目由 table 和给定的搜索条件过滤(如“field_1” ="value_X")。
预期网络负载:平均。 1 request/sec.,(罕见)峰值负载 ca。 100 requests/sec.
现在我对上述场景的问题:
- 我可以从数据库服务器获取数据,格式为 json、xml 或 csv。对于该用例,推荐使用哪种格式(快速“插入”到具有 1 mio 行的 table)?
- 我应该如何将数据存储在内存中? pandas 数据帧?
- 总而言之,所有这一切的推荐框架是什么? pandas, gunicorn, supervisor & nginx?
非常感谢任何输入。
要反序列化您的数据,CSV will be the fastest method 在大多数情况下。这允许您在不同的线程中读取多行并降低复杂性。
为了存储数据,我建议使用性能最高的解决方案,这可能是使用现有的(否)SQL 数据库实现,或者使用 SQL 以编程方式更简单的方式ite in-memory 数据库。 Pandas 更适合分析,虽然我知道您想获得与普通 DBMS 类似的功能来获取数据。对于这些用例,SQLite is faster(并且更容易)比 Pandas。
在您的用例中,我建议使用 the FastAPI library 在 Python 内的多个线程中自动为 API 提供服务。你不需要在它前面有另一个网络服务器,除非你想在那里做缓存。该脚本可以从这些线程中访问 in-memory 数据库或专用的 DBMS 应用程序。使用主管取决于您的用例 - 在容器内或者如果脚本作为服务运行,则不需要它。