Performance SQLite是否适合用作web服务器上的只读缓存?

Performance SQLite是否适合用作web服务器上的只读缓存?,performance,sqlite,concurrency,Performance,Sqlite,Concurrency,我目前正在构建一个高流量的GIS系统,该系统在web前端使用python。系统为99%只读。为了提高性能,我正在考虑使用预生成的读取优化GIS信息的外部生成缓存,并将其存储在每个web服务器上的SQLite数据库中。简而言之,它将被用作一个分布式只读缓存,而不必在网络上跳跃。后端OLTP存储将是postgreSQL,但它将处理不到1%的请求 我曾考虑过使用Redis,但数据集非常大,因此它会增加托管该数据集的虚拟机的管理成本和内存成本。Memcache不适合,因为它无法执行范围查询 SQLite

我目前正在构建一个高流量的GIS系统,该系统在web前端使用python。系统为99%只读。为了提高性能,我正在考虑使用预生成的读取优化GIS信息的外部生成缓存,并将其存储在每个web服务器上的SQLite数据库中。简而言之,它将被用作一个分布式只读缓存,而不必在网络上跳跃。后端OLTP存储将是postgreSQL,但它将处理不到1%的请求

我曾考虑过使用Redis,但数据集非常大,因此它会增加托管该数据集的虚拟机的管理成本和内存成本。Memcache不适合,因为它无法执行范围查询

SQLite这样做会遇到读取并发问题吗


这是一种明智的方法吗?

如果用例只是一个缓存,为什么不使用

您可以在pypi存储库中找到python的memcached绑定

另一个选择是在postgres中使用物化视图,这样可以使事情保持简单,并将所有内容都放在一个地方


好的,经过大量的研究和性能测试,SQLite适合于此。它对静态数据具有良好的请求并发性。只有在执行写操作和重读操作时,SQLite才会成为一个问题

更多信息请点击此处:


这可能是我见过的第一个SQLite是最明智的方法的案例。SQLite表会定期使用来自中心postreSQL数据库的数据进行更新?否-它们将来自单独的脱机数据库,并在源数据更改时生成,这可能是每季度一次。然后将它们上载到web服务器,交换文件,然后重新启动mod wsgi实例。基本上-没有写入,只是文件被交换掉。原始海报上说:“Memcache不适合,因为它不能进行范围查询。”Memcache不适合如上所述。我实际上提出了物化视图,但是从后端Postgres生成一个SQLite数据文件,这个文件大约需要4个小时,包括所有的数学运算。我不想把它放在一个DB引擎中,因为我必须放大而不是缩小,这是很昂贵的。一旦一个地方是一个篮子里所有的鸡蛋。此外,网络流量可能会很昂贵(与CPUmemorydisk相比)。感谢您在找到答案后发布。