Contents |
Proposed by: CUNY School of Professional Studies / New York City Office of Emergency Management
Contact (name, email, irc, skype): Chad Heuschober, chad.heuschober@mail.cuny.edu, chadheus@freenode, cunychad
Best way and times to contact during RHoK 2.0 Dec 4/5 2010: email, available most other means late mornings through evenings EST
To support its continued evolution and growth, Sahana Agasti has recently started the development of a new series (2.0) on a new framework: Symfony/Doctrine. While the move to an ORM was a must for the future of the application, it has introduced a number of performance issues including poor query optimization with forms. This problem definition hopes to address this issue and improve the overall performance of the application to enable its use in large-scale deployment scenarios.
The NYC OEM (see below) uses Sahana Agasti for its sheltering plans. These plans would require the data management of nearly 750,000 persons with associated metadata for a single event. Over time, these numbers would be expected to grow. Currently, some of the forms generated by Doctrine models produce upwards of 60 individual queries to the database when a single, well-executed join query might return the same results. The extraneous queries slow down response times and prevent the system from being used at the projected capacity levels.
Right now, the only constraint is DQL and the limited subset of database functionality that it provides. The only time we use DoctrineRawSQL is when we need to use a subquery. It is our hope that those with symfony and/or sql experience can work through the models to locate opportunities for a reduction in the total number of queries executed and/or generic performance optimizations.
SELECT t1.id, t1.timestamp, t1.status FROM table AS t1 INNER JOIN (SELECT t2.id, MAX(t2.timestamp) AS mxts FROM table GROUP BY t2.id) AS t3 ON t1.id = t3.id AND t1.timestamp = t3.mxts ;
To participate:
The Agasti Mayon trunk can be found on Launchpad at: https://code.launchpad.net/~sahanaphp-committers/sahana-agasti/mayon
Documentation for Agasti Mayon can be found at: http://wiki.sahanafoundation.org/doku.php/agasti:mayon:start
More information about Agasti Mayon and links to other resources can be found at the official documentation wiki with special note given to the Mayon 911 page.[1]
Sahana Agasti is an open-source PHP-based disaster management software registered by the Sahana Software Foundation, first created in response to the 2004 Tsunami, and used by emergency management organizations and grassroots organizers alike to coordinate preparedness, response, and recovery tasks throughout disaster operations. Used by the New York City Office of Emergency Management (NYC OEM), and supported by development efforts from the City University of New York School of Professional Studies (CUNY SPS), the National Library of Medicine, Respere, and an international community of developers, Sahana Agasti is an internationally recognized platform for disaster operations management.
The Agasti Mayon (2.0) branch is currently being headed by the CUNY SPS team, a subset of whom will be actively participating in RHoK #2 to try to merge any solutions directly into the Mayon trunk. The CUNY SPS team is also supported by their partner, the New York City Office of Emergency Management who is slated to be the first active installation of the Agasti Mayon in 2011.
All Sahana Agasti projects are registered under the Sahana Software Foundation (SSF). For more information about the SSF, please see: http://sahanafoundation.org/
Some of this work begun by the CUNY SPS Team and integrated into the codebase, but the work was stalled and not universally applied throughout the app.