Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Content

Table of Contents
outlinetrue

...

Contact/Work info

  • Time zone : UTC+05:30
  • IM : #anuruddha(irc@freenode) , apremalal (skype) , anuruddhapremalal (gtalk)

About you

I am currently a final year under graduate majoring in the field of electronic and telecommunication engineering.I got to know about Mifos through GSOC and I have made some patches,but not major as of yet.I would like to participate in Google summer of code as i think it would be a great way to become involved in Mifos development, as well as an excellent learning experience.

Personal wiki : /wiki/spaces/~apremalal/overview

Career Goal

To be in a challenging role in which I could utilize my knowledge, skills and talents to bring successful conclusion for projects by taking benefits from the best from each.

Project summary

         MifosX follows the principle of Multitenancy, where a single instance of the application runs on the server serving multiple clients. When the user base gets very large and grows rapidly performance becomes a critical factor. 

Currently the Mifox RSET API allows authenticated users to query the database, for example say a user needs to query clients, with the current API users can request for a list or a particular client, request for a list of clients returns the whole user list to the front end in a json encoded string, but the user might not interested in all of those data that has been received, this causes huge performance hit within the multitenant environment. 

The idea of this project is to improve the performance of processing these large database queries by implementing server side pagination. This allows users to request a portion of a data set.

...

  1.  Adding pagination capabilities to the back-end.

      • Implement necessary methods to handle Api request
        •  Update ‘XXXApiResources’ classes to handle api request. These classes use Jersey for dealing with request.

            Ex :

      Code Block
          @GET
          @Path("/paginated")
          @Consumes({ MediaType.APPLICATION_JSON })
          @Produces({ MediaType.APPLICATION_JSON })
          public String retrievePaginated(@QueryParam("offset") final int offset, @QueryParam("limit") final int limit){//implementation}
      • MIFOSX use spring data for data base write operation, and jdbc template for read operations. Pagination will be implemented on top of the read operations and have to implement an efficient algorithm to retrieve paginated data.

               Current implementation : Github pagination branch

                      This approach is more common and well understood in leading data bases, and easy for developers.

  2. Improve the performance.

      • The pagination algorithm could be improved in number of ways.
        • It could cache the number of pages available to remove the overhead of running the 'count' SQL each time.
        • It could make use of ScrollableResultSet support when fetching the rows.
        • It could make use of database specific features such as MySQL's support for the "LIMIT offset, count" syntax.

      • Response object creation algorithm.
        • Currently MifosX use google Gson for object serialization. Jack son has a better performance bench mark ,so will be look in to update the serialization classes to use Jackson.

  3. Update front-end interface to consume paginated data.

    • Getting familiar with the jquery data table plugin usage.
    • Use jquery data tables plugin to render the paginated data in the front end.

  4. Write unit test cases.

If time permits

...