Ich baue gerade ein GIS-System mit hohem Traffic-Aufkommen, das Python im Web-Frontend verwendet. Das System ist zu 99% schreibgeschützt. Im Interesse der Leistung erwäge ich, einen extern generierten Cache von vorgenerierten lesegesteuerten GIS-Informationen zu verwenden und in einer SQLite-Datenbank auf jedem einzelnen Webserver zu speichern. Kurz gesagt, es wird als verteilter, schreibgeschützter Cache verwendet, der nicht über das Netzwerk springen muss. Der Back-End-OLTP-Speicher wird PostgreSQL sein, aber das wird weniger als 1% der Anfragen behandeln.
Ich habe überlegt, Redis zu verwenden, aber das Dataset ist ziemlich groß und erhöht daher die Verwaltungskosten und die Speicherkosten auf den virtuellen Maschinen, auf denen es gehostet wird. Memcache ist nicht geeignet, da es keine Bereichsabfragen durchführen kann.
Werde ich mit SQLite Lese-Parallelitätsprobleme damit tun?
Ist das ein vernünftiger Ansatz?
Nach vielen Recherchen und Performancetests ist SQLite dafür geeignet. Es hat eine gute Parallelität bei statischen Daten. SQLite wird nur dann ein Problem, wenn Sie sowohl Schreibvorgänge als auch umfangreiche Lesevorgänge ausführen.
Weitere Informationen hier:
Wenn der Anwendungsfall nur ein Cache ist, warum verwenden Sie nicht so etwas wie Ссылка .
Sie können Memcached-Bindungen für Python im Pypi-Repository finden.
Eine weitere Option ist, dass Sie materialisierte Ansichten in Postgres verwenden, damit Sie die Dinge einfach halten und alles an einem Ort haben.
Tags und Links sqlite performance concurrency