Giter Site home page Giter Site logo

juliancasaburi / bd2-promocion Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 418 KB

Trabajo de promoción | Bases de Datos 2 (2022) | UNLP Informática (4º año) | Spring - PostgreSQL - MongoDB - Docker Compose - US Traffic Accidents Dataset

Shell 0.25% Dockerfile 0.31% Java 99.44%
database db docker docker-compose mongodb postgresql spring spring-batch spring-boot spring-data unlp unlp-informatica us-accidents

bd2-promocion's Introduction

Bases de datos 2 2022 - Trabajo de Promoción

Descripción del Dataset US Accidents

Se provee una descripción del dataset en el archivo DATASET-ABOUT.MD.

Documentación OpenAPI

Se documenta la API con OpenAPI, con la dependencia springdoc-openapi.
Se puede acceder a la interfaz (Swagger UI) para probar los endpoints en la siguiente URL: http://localhost:6868/swagger-ui.html

Swagger UI

Alternativamente, se provee una colección de Postman.

Seeding de MongoDB y PostgreSQL desde archivo csv

  1. Descargar el archivo US_Accidents_Dec19.csv.zip

  2. Descomprimir el archivo .zip

  3. Copiar el archivo US_Accidents_Dec19.csv en ./bbdd2PromocionApp/src/main/resources antes de buildear la imagen del service app, es decir previo a ejecutar por primera vez:

    docker-compose up
  4. Puede lanzar uno o más jobs de seeding realizando una solicitud POST a los endpoints:

    • Seeding de TestModel (MongoDB)
      /seed/mongodb/testModel

    • Seeding de TestModel (PostgreSQL)
      /seed/postgresql/testModel

    • Seeding de Accident (MongoDB)
      /seed/mongodb/accident

    • Seeding de Accident (PostgreSQL)
      /seed/postgresql/accident

API - Query endpoints

  1. /withinRadius

    Retorna los Accident ocurridos dentro del radio
    
    - Parametros:
    longitude: una longitud (por ejemplo, '-84.058723')
    latitude: una latitud (por ejemplo, '39.865147')
    radius: un radio (en kilómetros, por ejemplo 100)
    
  2. /averageDistance

    Obtiene la distancia promedio desde el inicio al fin del accidente
    
  3. /betweenDates

    Retorna los Accident ocurridos entre startDate y endDate
    
    - Parametros:
    startDate: fecha y hora de inicio (por ejemplo: 2016-02-08 06:49:27.000).
    endDate: fecha y hora de fin (por ejemplo: 2016-02-08 09:25:17.000).
    
  4. /streetsMostAccidents

    Retorna las N calles con mas accidentes
    
    - Parametros:
    limit: cantidad de Accident a retornar (valor por defecto: 5).
    
  5. /mostDangerousPointsWithinRadius

    Retorna los N puntos mas peligrosos dentro de un radio dada una latitud y longitud
    
    - Parametros:
    longitude: una longitud (por ejemplo, '-84.058723')
    latitude: una latitud (por ejemplo, '39.865147')
    radius: un radio (en kilómetros, por ejemplo 100)
    limit: cantidad de Accident a retornar (valor por defecto: 5).
    
  6. /mostCommonConditions/weather

    Retorna las condiciones climáticas mas frecuentes
    
  7. /mostCommonConditions/terrain

    Retorna las condiciones de terreno mas frecuentes
    
  8. /mostCommonConditions/hour

    Retorna la hora mas frecuente
    
  9. /mostCommonConditions/dayOfWeek

    Retorna el día mas frecuente
    
  10. /averageDistanceKNearestNeighbors

    Retorna la distancia promedio que existe entre cada accidente y los "k" más cercanos.
    - Parametros:
    k: cantidad de Nearest Neighbors a utilizar durante el cálculo del promedio de distance (valor por defecto: 10).
    

Entorno local

Configuración

Se encuentra en: application-properties

Entorno totalmente local

Puede ejecutar la API en un entorno local, contando con una instalación válida y propiamente configurada de PostgreSQL y MongoDB.

cd ./bbdd2PromocionApp
./mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=6868'

Bases de datos dockerizadas + Spring Boot Local

Alternativamente, puede utilizar el docker-compose iniciando unicamente PostgreSQL y MongoDB e iniciar la app localmente:

Nota: la configuración de variables de entorno de bases de datos dockerizadas se realiza en el archivo .env

sudo docker-compose up postgresdb mongodb
cd ./bbdd2PromocionApp
./mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=6868'

Docker compose

Puede ejecutar la API en un entorno dockerizado (Spring Boot + PostgreSQL + MongoDB).

Configuración

  • Variables de entorno docker: .env
  • Propiedades de spring boot: docker-compose.yml (services -> app -> environment)

Iniciar la aplicación

We can easily start app with a single command:

docker-compose up

Docker will pull the PostgreSQL, MongoDB and Spring Boot images (if our machine does not have it already).

The services can be run on the background adding the -d parameter:

docker-compose up -d

Detener la aplicación

Stopping all the running containers is also simple with a single command:

docker-compose down

If you need to stop and remove all containers, networks, and all images used by any service in docker-compose.yml file, use the command:

docker-compose down --rmi all

bd2-promocion's People

Contributors

facundofabbi avatar geroboza avatar juliancasaburi avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.