Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • finalSinRedis
2 results

minitwitter

  • Clone with SSH
  • Clone with HTTPS
  • Twotter 🐦

    Proyecto para bases de datos NoSQL

    Pre-requisitos 📋

    _Que cosas necesitas para instalar el software y como instalarlas_
    
    1. Java 1.8 o superior
    2. Elipse 2019-09 (Java EE)
    3. Docker (Windows Pro)
    4. Postman

    Instalación 🔧

    _Requisitos para un ambiente de desarrollo_
    
    • Alternativa 1
    1. Bajar repositorio de Git y abrirlo con Eclipse
    2. Instalar Docker
    3. Crear una imagen de Docker e instalar WildFly
      • Crear una imagen de Docker e instalar Redis (Configurar los puertos correspondientes (6379))
      • Crear una imagen de Docker e instalar RavenDB
    4. Generar un EAR con Eclipse y agregando las IP's correspondientes para las conexiones de las Bases de Datos
      • Agregarle el Ear al WildDly
    5. Hacer RUN a los contenedores creados con las imagenes anteriores
    - Los dockers deben encontrarse en la misma network
    • Alternativa 2
    1. Bajar repositorio de Git y abrirlo con Eclipse
    2. Instalar RavenDB local
    3. Instalar Redis local
    4. Configurar IP's locales para el acceso a la Base de Datos
    - En la configuracion del DocumentStoreHolder.java para RavenDB debe especificarse el nombre de la base de datos.

    Ejecutando las pruebas ⚙️

    Para probar ahora solo necesitamos tener instalado POSTMAN
    y ejecutar alguna consulta POST para probar la carga de Comentarios de esta forma

    http://<IP_del_docker_con_wildfly>/rest/

    • Ejemplos utilizados en localhost /127.0.0.1
    Nombre Metodo URL Parametros
    Crear Usuario POST http://localhost:8080/Twotter-web/rest/usuarios { "nombre": "" ,"email": ""}
    Crear comentario POST http://localhost:8080/Twotter-web/rest/publicar { "texto": "" ,"emailUsuario": ""}
    Leer Comentarios de usuario GET http://localhost:8080/Twotter-web/rest/usuarios/publicaciones { "email": ""}
    Leer Comentario GET http://localhost:8080/Twotter-web/rest/comentario/{idComentario} String
    Comentar Comentario POST http://localhost:8080/Twotter-web/rest/comentar { "id": "" , texto": "" ,"emailUsuario": ""}

    Con estas pruebas debemos de obtener los resultados exitosos de una comunicacion entre los dockers, entre el backEnd java y la base de Raven

    Ejemplo de pruebas ⌨️

    Alta de usuario

    POST: http://localhost:8080/Twotter-web/rest/usuarios

    {
    	"nombre":"Emiliano",
    	"mail": "emimartins@vera.com.uy"
    }

    Publicar Comentario

    POST http://localhost:8080/Twotter-web/rest/publicar

    {
    	"texto" :"Primera Publicacion",
    	"emailUsuario" : "emimartins@vera.com.uy"
    }

    Obtener Publicaciones de usuario

    GET http://localhost:8080/Twotter-web/rest/usuarios/publicaciones

    {
    	"emailUsuario" : "emimartins@vera.com.uy"
    }

    Decisiones 🎲️

    Elegimos usar Redis para el cache de existencia de usuarios.
    
    

    ¿Por que?

    De esta forma accedemos de una forma más rapida a la validación de 
    existencia de usuarios en el caso de que se realicen simultaneas solicitudes que involucren al mismo.

    ¿Como?

    Cuando se crea un usuario se persiste en RavenDB 
    y en Redis (Este último con un tiempo de expiración)
    
    Cuando se realiza cualquier acción que involucre la existencia de un Usuario 
    la logica del negocio realiza la siguiente busqueda del usuario:
    • Buscar existencia en Redis
      • Si existe retorno True
      • Si no existe:
        • Busco existencia en RavenDB
          • Si no existe retorno False
          • Si existe:
            • Persisto en Redis el usuario con tiempo de expiración
            • Retorno True
    y continúa la acción deseada como Comentar o leer comentarios.

    UML 🛠️

    UML

    Autores ✒️

    • Emiliano Martins - **
    • Laura Scappa - **
    • Maximo Lanza - ** )

    Licencia 📄

    Este proyecto está bajo la Licencia (Tu Licencia) - mira el archivo LICENSE.md para detalles