Skip to content
This repository was archived by the owner on Jan 4, 2024. It is now read-only.

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

Notifications You must be signed in to change notification settings

juliancasaburi/bd2-promocion

Folders and files

NameName
Last commit message
Last commit date
Aug 10, 2022
Jun 3, 2022
Jun 10, 2022
Jul 27, 2022
Aug 10, 2022
Aug 5, 2022
Aug 5, 2022
Aug 5, 2022

Repository files navigation

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

About

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

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages