Aujourd’hui, grosse journée de travail sur le projet!
- mise en place du VPS sous Debian 8 64bits. (Apache, PHP 7.0, PostgreSQL)
- migration de MySQL vers Postgres (recommandé par Victor, merci d’ailleurs!)
L’API (enfin le début d’API) est enfin en ligne à l’adresse : https://zonny.me/docs
Pour l’essayer vous pouvez utiliser les différents tokens suivants :
- test
- test1
- test2
- test3
Vous pouvez tout essayer! Merci cependant de ne pas supprimer ces comptes. N’hésitez pas à nous faire part de vos remarques, suggestions…
La migration de MySQL vers Postgres a été un long travail… très long. En effet, beaucoup de requêtes étaient incompatibles avec Postgres (des conditions comme IF()
qui devient case when then else end
, des alias qui ne peuvent pas se situer partout dans la requête comme après le WHERE) ou encore la structure de la base de données qui demande des types de variables différents (varchar n’existe pas sous Postgres par exemple). Mais heureusement http://www.sqlines.com/online était là !
Les raisons de passer sous Postgres étaient Postgis mais surtout les benchmarks qui semblent montrer que Postgres est plus rapide lorsqu’il y a beaucoup de données (j’espère que c’est vrai et que j’ai pas fait tout ça pour rien ). Je dois dire que j’ai été agréablement surpris par Postgres. Certaines fonctions simplifient la vie comme par exemple COALESCE()
(je ne connais pas d’équivalent sous Mysql en tout cas!).
Cependant j’ai rencontré beaucoup de difficultés dont 2 persistent :
- Comment créer un alias après un WHERE ? Car par exemple j’ai la requête suivante :
1 | SELECT * FROM members WHERE function()<15000 OR function()=0 ORDER BY function() DESC |
La fonction va t-elle être exécutée 3 fois ? Y a-t-il un système de cache ou bien une solution plus adaptée ?
- Dans l’API, la distance entre deux points est maintenant calculées par la fonction de Postgis
ST_Distance()
. Cependant j’ai l’impression que la distance retournée entre deuxST_Point
n’est pas correcte. Je re vérifierai demain.
Merci d’avance pour votre future aide . Ce sera tout pour aujourd’hui sinon mais j’aurai d’autres questions pour demain ne vous en faites pas !