{"id":22563630,"url":"https://github.com/nicoacu/tp_soporte_ticketera","last_synced_at":"2025-03-28T13:13:51.314Z","repository":{"id":263440594,"uuid":"890407661","full_name":"nicoacu/tp_soporte_ticketera","owner":"nicoacu","description":"Repositorio presentación/exposición para materia: Administración de Base de Datos - ISTEA ","archived":false,"fork":false,"pushed_at":"2024-12-10T03:12:05.000Z","size":146,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T13:28:42.331Z","etag":null,"topics":["azure","mockup","sql"],"latest_commit_sha":null,"homepage":"","language":"TSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nicoacu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-18T14:14:08.000Z","updated_at":"2024-12-10T03:12:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"1b05736d-bf9c-4e54-8729-86157ae48b01","html_url":"https://github.com/nicoacu/tp_soporte_ticketera","commit_stats":null,"previous_names":["nicoacu/tp_soporte_ticketera"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoacu%2Ftp_soporte_ticketera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoacu%2Ftp_soporte_ticketera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoacu%2Ftp_soporte_ticketera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nicoacu%2Ftp_soporte_ticketera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nicoacu","download_url":"https://codeload.github.com/nicoacu/tp_soporte_ticketera/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246034302,"owners_count":20712857,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","mockup","sql"],"created_at":"2024-12-07T23:12:08.288Z","updated_at":"2025-03-28T13:13:51.291Z","avatar_url":"https://github.com/nicoacu.png","language":"TSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Trabajo Práctico/Exposicion: Administración de Bases de Datos\n#### 75883-2024-2C-Infraestructuras 22-División A-Día martes\n\n**Alumnos:**\n- Mateo Parra\n- Florencia Ponce de León \n- Federico Tesone\n- Nicolás Acuña\n\n# Draft Diagrama Entidad Relacion (Primera Presentacion) \n![alt text](https://i.imgur.com/ROF0WEs.png)\n\u003ci\u003e[link a presentación](https://www.canva.com/design/DAGW156nKBs/-WWN8APy9T1_6QDJaYPv2Q/edit?utm_content=DAGW156nKBs\u0026utm_campaign=designshare\u0026utm_medium=link2\u0026utm_source=sharebutton)\u003c/i\u003e\n\n# Diagrama Entidad Relacion (Actual - 2da Iteración)\n\n![(imagen)](https://i.imgur.com/tOTKvp6.png)\n\u003ci\u003e[link imagen](https://i.imgur.com/tOTKvp6.png)\u003c/i\u003e\n\n# Vistas\n\n## Vista Historial\n\n![(imagen)](https://i.imgur.com/Vh1oED5.png)\n\u003ci\u003e[link imagen](https://i.imgur.com/Vh1oED5.png)\u003c/i\u003e\n\n## Vista Reportes\n\n![(imagen)](https://i.imgur.com/sLxkgiz.png)\n\u003ci\u003e[link imagen](https://i.imgur.com/sLxkgiz.png)\u003c/i\u003e\n\n\n# Guía de Referencia del Repositorio:\n\n## Introducción:\nEste repositorio utilizado para el trabajo práctico cuenta con 2 carpetas de scripts sql, correspondiente a dos iteraciones distintas:\n\n1ra Iteración: 9 archivos `.sql`: se crea una base, se insertan datos, se utiliza stored values y se crean vistas. \n2da Iteración: 9 archivos `.sql`: se crea una base, se insertan datos, se utilizan funciones y se crean indices. \n\nEn ambas iteraciones, se le han asignado a cada archivo un número en el nombre para señalizar el orden de ejecución de los mismos.\n\nAntes de la ejecución de cada script, es necesario constatar la conexión a la base de datos. En nuestro caso, la misma se encuentra desplegada como servicio en Azure bajo el dominio `ticketera.database.windows.net`:\n\n![(imagen)](https://i.imgur.com/iL7YZZZ.png)\n\u003ci\u003e[link imagen](https://i.imgur.com/iL7YZZZ.png)\u003c/i\u003e\n\n---\n\n# Instrucción 1ra Iteración\n\n## Orden de Scripts:\n\n- `0-Creacion_Login.sql` : Se generan Logins para cada uno de los usuarios (integrantes del grupo). Los logins se generan con una cuenta de administrador sobre la base `master`.\n\n\u003e Nota: Las contraseñas son a fines demostrativos.\n\n- `1-Creacion_Database.sql` : Se genera la base del negocio: `soporte_ticketera` junto con sus tablas: `dbo.clientes`, `dbo.tickets` y `dbo.tecnicos`\n\n- `2-Creacion_Usuarios.sql` : Se crean los USERS (por cada uno de los integrantes del grupo) que se van a poder conectar a la base `soporte_ticketera`. Se le asigna a cada uno el rol de `db_owner` a modo de demo.\n\n\u003e Nota: Si bien no es una buena práctica generalizar los permisos/roles de esa manera, a fines de demostración y dado que esto no es un entorno productivo se lo realiza asi destacando simplemente la importancia de gestionar usuarios.\n\n- `3-Insertar_Clientes.sql` : En esta query se autocompletan cammpos de la tabla `dbo.clientes` como mockup y para fines demostrativos. \n\n- `4-Insertar_Tecnicos.sql` : En esta query se autocompletan cammpos de la tabla `dbo.tecnicos` como mockup y para fines demostrativos. \n\n- `5-Insertar_Tickets.sql` : En esta query se autocompletan cammpos de la tabla `dbo.tickets` como mockup y para fines demostrativos. \n\n- `6-Creacion_Stored_Procedures.sql` : Queries para que programaticamente se ejecuten acciones prediseñadas sobre la base utilizando el codigo del negocio. En este caso, se contemplaron la generación de Stored Procedures para las siguientes funcionalidades:\n\n- 1- Creacion Ticket.\n- 2- Actualizacion Ticket.\n- 3- Creacion Cliente.\n- 4- Creacion Técnico.\n\n- `7-Creacion_Vistas.sql` : Vistas para ejecutar consultas prediseñadas y optimizar el uso de recursos. Esto no se ejecuta a traves de un store procedure porque al hacer consultas no queremos exponenciar el tamaño de la base y consumir recursos.\n\n- `8-Consultas_y_Execs.sql` : Queries demostrativos para realizar consultas a las vistas creadas, ejecuciones de stored procedures y resultados posteriores. \n\n# Instrucción 2da Iteración\n\n## Orden de Scripts:\n\n- `0. CREATE DB.sql`: Creacion de todas las tablas.\n- `1. INSERT Clientes.sql`: Inserta datos para la tabla clientes.\n- `2. INSERT Tecnicos.sql`: Inserta datos para la tabla tecnicos.\n- `3. CREATE dbo.SLA - ALTER dbo.Tickets.sql`: Crea tabla SLA y agrega Constraints en tabla Tickets.\n- `4. INSERT dbo.SLA.sql`: Crea tabla SLA.\n- `5. INSERT tickets abiertos-progreso.sql`: Inserta datos: tickets abiertos-en progreso.\n- `6. INSERT tickets cerrados.sql`: Inserta datos: tickets cerrados.\n- `7. CREATE FUNCTION ObtenerEstadoTicket.sql`: Crea funcion .\n- `8. CREATE INDEX.sql`: Crea índice para futuro uso.\n\n\n\n# Extra\n\n## Disaster Recovery\n\nLo siguiente son planes relacionados a la recuperación ante desastres o problemas con la base de datos. \n\n### Backup\n\nTeniendo en cuenta que en este ejercicio se optó por utilizar Azure para hostear el servicio de la base de datos, se contempla informarle a los clientes de las siguientes opciones con respecto al almacenamiento de backups en la infraestructura de la nube:\n\n- Storage de zona local/única\n- Storage redundante de zona\n- Storage redundante regional\n- Storage redundante regional/zonal\n\n\u003e \u003ci\u003eA mayor redundancia, mayores costos.\u003c/i\u003e\n\nDe forma genérica, se planea realizar:\n\n- **Full backups cada semana:** Involucra una copia completa de toda la base de datos.\n\n- **Backups Diferenciales (cada 24 horas):** Solamente contempla los datos que se han cambiado desde el último backup de manera incremental. \n\n*Ejemplo de uso: Si el último full backup fue un lunes, el backup diferencial del jueves contendrá los cambios del martes miercoles y jueves.*\n\n- **Backups de Logs de Transacciones (Cada 15 minutos):**  Se utilizan para realizar restores point-in-time, solo guarda el detalle de las transacciones que modifica datos, como INSERT, UPDATE y DELETE\n\n*Ejemplo de uso: Si se requiere realizar un backup a 15 minutos atrás. La suma del Full backup, el Backup diferencial y los backups de las transacciones permiten recuperar el estado completo de una base a su punto más reciente.*\n\n\u003e Nota: La periodicidad de dichos backups se debe estipular luego del analisis de las métricas explicadas en la sección **Restore**\n\n### Restore\n\nDependiendo el negocio del cliente se busca definir el Recovery Point Objective (RPO) y Recovery Time Objective (RTO) del plan de restore\n\n\u003e Recovery Point Objective (RPO): Cantidad máxima de datos que se pueden perder sin poner en riesgo la operación del negocio.\n\u003e Recovery Time Objective (RTO): Tiempo máximo aceptable de downtime de servicios/base.\n\nEn adición a estos factores, se debe determinar el Point-in-time Recovery (PITR) y la Retención de largo plazo (LTR)\n\n\u003e Point-in-time Recovery (PITR): Backups que permiten recuperar data de una x cantidad de tiempo atrás. vinculado con el RPO.\n\u003e Long-term retention (LTR): Tiempo que se planea guardar backups de bases de datos a largo plazo.\n\nSe plantea adicionalmente realizar testeos periodicos para validar que el backup y el proceso de restore funciona correctamente.\n\n[Documentacion adicional sobre Backups](https://learn.microsoft.com/en-us/azure/azure-sql/database/automated-backups-overview?view=azuresql)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicoacu%2Ftp_soporte_ticketera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicoacu%2Ftp_soporte_ticketera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicoacu%2Ftp_soporte_ticketera/lists"}