Mod 7:Aplicación Ofertas Trabajo
Enviado por llauraff • 13 de Enero de 2024 • Práctica o problema • 980 Palabras (4 Páginas) • 185 Visitas
EJERCICIO 1
-Apartado 1:
Realizar un análisis acerca del modelo de datos y la arquitectura de distribución y replicación de los datos que se adecúe mejor a los requisitos de la aplicación descrita.En cuanto a modelo de datos, hay que argumentar la conveniencia de que se elija este último, qué modelo sería el más adecuado
En base al enunciado podemos concluir que la aplicación va a trabajar con grandes cantidades de datos que podemos clasificar en cuatro entidades principales:
- Portales de búsqueda
- Diferentes requisitos de búsqueda por usuario
- Diferentes usuarios
- Ofertas de trabajo
Las ofertas de trabajo van a tener una gran variedad de características que dependerán de cada usuario por lo que vamos a necesitar un modelo que pueda almacenar valores diferentes de forma flexible. Además, nos encontramos con que va a tener que trabajar con un gran volumen de datos por lo que va a tener que poder ser escalable. Basándonos en estos dos matices, almacenar diferentes tipos de datos de forma flexible y capacidad de escalado, yo me quedaría con un modelo de datos Documental.
Este tipo de modelo de datos precisamente se caracteriza por una gran flexibilidad a la hora de almacenar la información en forma de documentos que podrán contener cualquier tipo de información. Además, se pueden almacenar en forma de colecciones que podemos distribuir en varios servidores y así aumentar la escalabilidad de la aplicación pudiendo soportar un gran volumen de datos.
Estas dos características que me hacen decantarme principalmente por este modelo de datos son a la vez las que fallarían en un modelo de datos Relacional, ya que con este no obtendríamos flexibilidad a la hora de almacenar los datos y no tendríamos una gran escalabilidad ya que toda la base de datos debería encontrarse en el mismo servidor.
Apartado 2:
Describir una colección de MongoDB que almacenará la información sobre las solicitudes realizadas por cada usuario, ilustrándolo con las colecciones y tipos de documentos que serían necesarios.
-Colección Ofertas:
-id: Clave del documento 🡪 ObjectId
Portal: Portal de origen de la oferta 🡪 String,
Puesto: Puesto que se oferta 🡪 String
Requisitos: Requisitos de la oferta (idiomas, lenguajes
de programación, puesto de trabajo ...) 🡪 Array
Experiencia: Se requiere o no experiencia 🡪 String
Ciudad: Ciudad de la oferta 🡪 String
Sueldo: Sueldo ofrecido 🡪 Number
Contrato: Tipo de contrato 🡪 String
-Colección Usuario:
-id: Clave del documento 🡪 ObjectId
Nombre: Nombre 🡪 String
Apell1: Primer apellido 🡪 String
Apell2: Segundo apellido del usuario 🡪 String
DNI: Número de documento 🡪 String
Domicilio: Domicilio 🡪 String
Ciudad: Ciudad de residencia 🡪 String
Requisitos: Requisitos de las ofertas a consultar 🡪 Array
DispoGeo: Disponibilidad geográfica 🡪 String,
Experiencia: Experiencia previa 🡪 String
Email: Email de contacto 🡪 String
Teléfono: Teléfono de contacto 🡪 String
-Colección OfertaUsu
-id: Clave del documento 🡪 ObjectId
DNI: Número de documento del usuario 🡪 String
Id_oferta: id de la oferta origen 🡪 ObjectId
Puesto: Puesto de la oferta 🡪 String
CiudadOferta: Ciudad de la oferta 🡪 String
Requisitos: Requisitos de la oferta 🡪 Array
Contrato: Tipo de contrato de la oferta 🡪 String
CiudadUsu: Ciudad de residencia 🡪 String
Domicilio: Domicilio de residencia 🡪 String
FechaInscripcion: Fecha en que se seleccionó la oferta 🡪 Date
Apartado 3: Realiza las siguientes consultas
**Antes de empezar las consultas preparamos la BD
- Se genera una base de datos denominada db.busqEmpleo:
[pic 1]
-Inserto la oferta de trabajo 1:
db.Ofertas.insert({‘Portal’: ‘Infojobs’,
‘Empresa’: ‘BlueTab’,
‘Puesto’:’Director Proyecto’,
‘Requisitos’:[‘Gestion Proyectos’,’Ingles’],
‘Experiencia’:’S’,
‘Ciudad’:’Barcelona’,
‘Sueldo’:50000,
‘Contrato’:’Indefinido’
})
[pic 2]
-Usuario 1:
[pic 3]
-OfertaUsu 1: La hacemos combinando los dos anteriores
**Obtengo el _id asignado la Oferta 1 (y de paso se comprueba que fue insertado con éxito) para rellenar OfertaUsu1
[pic 4]
[pic 5]
Recuperar todas las ofertas de trabajo que ha solicitado el usuario con nombre ‘Isabel’ y apellidos ‘Cabrerizo Alonso’.
Hago un join entre la colección de Usuario y OfertaUsu usando el campo DNI para unir:
db.getCollection('OfertaUsu').aggregate([
{ "$addFields": { "DNI": "11084807A" }},
...