Skip to content

Instantly share code, notes, and snippets.

@mejibyte
Forked from acadavid/pi2.md
Created October 24, 2011 22:49
Show Gist options
  • Save mejibyte/1310609 to your computer and use it in GitHub Desktop.
Save mejibyte/1310609 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, loggearse ó visitar un perfil almacenará una actividad en nuestro módulo.

Por las razones anteriormente expuestas, nuestra aplicación necesita un mecanismo altamente escalable. Este es el fuerte de las bases 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 esto no es necesario).

Las respuestas de nuestro servicio web estarán en formato XML. Sin embargo, en nuestro módulo no es necesario almacenar información en formato XML porque es un formato que ofrece poca versatilidad a la hora de hacer consultas. El XML de nuestras respuestas se generará en la marcha cada vez que haya una solicitud a nuestra aplicación, utilizando la información que tendremos almacenada en otro formato en MongoDB. En el peor de los casos, si por alguna razón que no hemos considerado se llegara a necesitar 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 para administradores

Nuestro módulo tendrá una interfaz para los administradores de la comunidad que proveerá la siguiente información:

  • Estadísticas del uso de la comunidad. Ejemplo: ¿A qué horas hay más usuarios activos? ¿Cuáles son los contenidos más visitados? ¿Cuál es el usuario que más votos positivos ha recibido? ¿Cuál es el perfil más popular de la comunidad? ¿Cuáles secciones son raramente utilizadas?

  • Lista de todas las actividades realizadas por usuarios (por defecto, se mostrarán 100 y estarán ordenadas según fecha de realización).

Esta interfaz estará debidamente protegida contra accesos no autorizados con la colaboración del módulo de Políticas.

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