Skip to content

Instantly share code, notes, and snippets.

@acadavid
Created October 24, 2011 21:16
Show Gist options
  • Save acadavid/1310345 to your computer and use it in GitHub Desktop.
Save acadavid/1310345 to your computer and use it in GitHub Desktop.
Proyecto Integrador 2

Almacenamiento de la información.

Las necesidades de nuestro módulo en términos de almacenamiento y consulta son diferentes a las de los demás módulos. La diferencia principal es el volumen de datos a almacenar y la concurrencia de las consultas. En primer lugar, nuestro módulo almacenará muchísimos más datos que los demás, sólo el hecho de publicar un contenido en el módulo de Contenidos almacenará una actividad en nuestro módulo, o el simple hecho de loggearse ó visitar un perfil.

Por las razones anteriormente expuestas, nuestra aplicación necesita un mecanismo altamente escalable, fácilmente provisto por una base de datos NOSQL. Además, los queries tienen que tener tiempos rápidos de respuesta. Por estas razones creemos conveniente utilizar el motor MongoDB que ofrece estas ventajas (frente a otras desventajas como la imposibilidad de hacer consultas sobre atributos anidados de una entidad, aunque en nuestro caso no es necesario esto).

En cuanto a XML, para las respuestas de nuestro servicio web, no es necesario tener almacenados las respuestas sino que se generaran en la marcha cuando sean solicitadas. En el peor de los casos, si se necesita almacenar un XML, se puede hacer en texto plano en MongoDB pero no ofrece ninguna ventaja para procesarlo o consultarlo.

Diseño de la aplicación

Métodos para otros módulos

Nuestra aplicación ofrecerá los métodos que habíamos acordado anteriormente de la siguiente manera.

Método aplicación: registrarActividad(Actividad actividad)

URL: /activities

Método HTTP: POST

Parámetros:

<activity>
  <module>Perfil</module>
  <action>Ver</action>
  <user_id>1234</user_id>
  <module_parameters>
    <profile_id>4567</profile_id>
  </module_parameters>
</activity>

Respuesta:

<response>
  <code>544</code>
  <authorized>true</authorized>
  <module_response>
    <![CDATA[
    <html>
    <body>This is the profile</body>
    </html>
    ]]>
  </module_response>
<response>

Interfaz de usuario

Nuestro módulo tendrá una interfaz para los administradores de la comunidad:

Proveerá la siguiente información:

  • Estadísticas del uso de la comunidad. Ej: A qué horas hay más usuarios? Cuales son los contenidos más visitados?

  • Últimas 100 actividades realizadas por usuarios.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment