Saya menulis aplikasi web intensif data yang dikirimkan melalui apache. Pertanyaan saya adalah tentang cara mengatur pemrosesan yang terbaik karena ada beberapa opsi.
Saya memiliki OpenLayers / JQuery / Javascript, PostGIS / Postgresql (dengan pgsql), python / psycopg2, php.
Basis data berisi sekitar 3 juta baris dan prototipe saat ini berjalan sebagai berikut:
Pengguna mengklik suatu titik di jendela OpenLayers
Koordinat dikirim sebagai permintaan AJAX melalui ke fungsi python di server
Saat ini aplikasi saya tidak memiliki kewarganegaraan
Psycopg2 Python digunakan untuk memanggil prosedur tersimpan pgsql dan sekumpulan nilai WKT (dan bidang data) yang besar dikembalikan ke modul python
Bidang data digunakan untuk mengkategorikan catatan WKT dalam python sebagai berikut: semua nilai WKT dikategorikan ke dalam salah satu dari 5 grup. Sekitar 1% dari nilai WKT sebenarnya dimodifikasi.
Lima set / grup WKT disangga untuk membuat lima poligon yang berbeda. Saat ini saya memanggil prosedur tersimpan dalam database untuk melakukan ini. Ini pada gilirannya hanya menggunakan ST_BUFFER. (Saya sudah mempertimbangkan menggunakan Shapely tetapi saya tidak yakin akan ada keuntungan kinerja karena perpustakaan GEOS digunakan dalam kedua kasus ...)
Akhirnya 5 nilai teks WKT dibungkus dalam string JSON dan dikirim kembali ke OpenLayers untuk dirender sebagai lima lapisan.
Saya menemukan bahwa kemacetan adalah pencarian spasial awal dan tahap buffering akhir.
Saya kira pertanyaannya adalah:
Apakah ada cara yang lebih baik untuk mengatur berbagai hal? Sebagai contoh, haruskah SEMUA pemrosesan data dilakukan dalam PostgreSQL (misalnya dengan kursor) dan apakah ini akan menjadi hal yang baik dalam hal pemeliharaan dan kinerja? Apakah lebih baik menggunakan server ubin untuk menghindari melewatkan string WKT panjang ke klien web? Bagaimana Anda mengatasinya?