From 614836f5c130a30e9ab57c1b1e121a1a61a07cc7 Mon Sep 17 00:00:00 2001 From: vicmc99 Date: Sun, 9 Apr 2023 05:48:53 -0400 Subject: [PATCH 01/15] Change references style to numeric --- document/uhthesis.cls | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/document/uhthesis.cls b/document/uhthesis.cls index e5b37e1f..01a7bde8 100644 --- a/document/uhthesis.cls +++ b/document/uhthesis.cls @@ -23,7 +23,7 @@ \RequirePackage{csquotes} \RequirePackage[ style=apa, - citestyle=authoryear, + citestyle=numeric, hyperref=true, backref=true ]{biblatex} @@ -77,14 +77,14 @@ \DeclareCiteCommand{\cite} {\usebibmacro{prenote}} {\usebibmacro{citeindex}% - \printtext[bibhyperref]{\usebibmacro{cite}}} + \printtext[bibhyperref]{[\usebibmacro{cite}]}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand*{\cite} {\usebibmacro{prenote}} {\usebibmacro{citeindex}% - \printtext[bibhyperref]{\usebibmacro{citeyear}}} + \printtext[bibhyperref]{\usebibmacro{cite}}} {\multicitedelim} {\usebibmacro{postnote}} From f423b0f9f9433734386e93b43869755baf2faef3 Mon Sep 17 00:00:00 2001 From: vicmc99 Date: Sun, 9 Apr 2023 06:51:02 -0400 Subject: [PATCH 02/15] Add layout for Business Intelligence background chapter --- document/MainMatter/Background.tex | 1 - .../BusinessIntelligence/AnalyticalSystems.tex | 10 ++++++++++ .../BusinessIntelligence.tex | 18 ++++++++++++++++++ .../Background/BusinessIntelligence/ETL.tex | 6 ++++++ .../TransactionalSystems.tex | 7 +++++++ document/Thesis.tex | 9 ++++++++- 6 files changed, 49 insertions(+), 2 deletions(-) delete mode 100644 document/MainMatter/Background.tex create mode 100644 document/MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex create mode 100644 document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex create mode 100644 document/MainMatter/Background/BusinessIntelligence/ETL.tex create mode 100644 document/MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex diff --git a/document/MainMatter/Background.tex b/document/MainMatter/Background.tex deleted file mode 100644 index 70d0236a..00000000 --- a/document/MainMatter/Background.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Estado del Arte}\label{chapter:state-of-the-art} diff --git a/document/MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex b/document/MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex new file mode 100644 index 00000000..7d672850 --- /dev/null +++ b/document/MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex @@ -0,0 +1,10 @@ +\section{Online Analytical Processing (OLAP)} \label{section:olap} + +\textbf{TODO}: La introducci\'on de esta secci\'on es presentar el concepto de OLAP + +\subsection{Objetivos de los sistemas OLAP} +\subsection{Arquitectura de los sistemas OLAP} +\subsection{Almacenes de datos} +\subsection{Modelo Dimensional} +\subsection{Arquitectura de un almac\'en de datos} +\subsection{Herramientas OLAP} diff --git a/document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex b/document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex new file mode 100644 index 00000000..923b6eae --- /dev/null +++ b/document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex @@ -0,0 +1,18 @@ +\chapter{Sistemas de Inteligencia de Negocios}\label{chapter:bi-systems} + +\textbf{TODO}: A\~nadir una breve introducci\'on que cubra los siguientes puntos: +\begin{enumerate} + \item Definici\'on de Inteligencia de Negocios. + \item C\'omo es utilizada la inteligencia de negocios y qu\'e beneficios tiene? + \item Componentes principales de una soluci\'on de inteligencia de negocios +\end{enumerate} +Una breve descripci\'on del contenido del resto del cap\'itulo: +``Las secciones en las que se estructura el resto del cap\'itulo recogen un estudio de los distintos componentes de una soluci\'on +de inteligencia de negocios de forma respectiva. La secci\'on \ref{section:oltp} presenta los sistemas transaccionales...'' + +\include*{MainMatter/Background/BusinessIntelligence/TransactionalSystems} +\include*{MainMatter/Background/BusinessIntelligence/AnalyticalSystems} +\include*{MainMatter/Background/BusinessIntelligence/ETL} + + + diff --git a/document/MainMatter/Background/BusinessIntelligence/ETL.tex b/document/MainMatter/Background/BusinessIntelligence/ETL.tex new file mode 100644 index 00000000..d9819ef7 --- /dev/null +++ b/document/MainMatter/Background/BusinessIntelligence/ETL.tex @@ -0,0 +1,6 @@ +\section{Procesos ETL}\label{section:etl} +TODO: A\~nadir la definici\'on de los procesos ETL +\subsection{Objetivos de los procesos ETL} +\subsection{ETL vs ELT} +\subsection{Operaciones de los Procesos ETL} +\subsection{Herramientas para Procesos ETL} diff --git a/document/MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex b/document/MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex new file mode 100644 index 00000000..8b6cbd78 --- /dev/null +++ b/document/MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex @@ -0,0 +1,7 @@ +\section{Online Transaction Processing (OLTP)} \label{section:oltp} + +\textbf{TODO}: La introducci\'on de esta secci\'on es presentar el concepto de OLTP + +\subsection{Objetivos de los sistemas OLTP} +\subsection{Arquitectura de los sistemas OLTP} +\subsection{Modelo Relacional} \ No newline at end of file diff --git a/document/Thesis.tex b/document/Thesis.tex index 7f16e298..9c65148d 100644 --- a/document/Thesis.tex +++ b/document/Thesis.tex @@ -14,6 +14,7 @@ \usepackage{xcolor} \usepackage{multicol} \usepackage{graphicx} +\usepackage{newclude} \floatstyle{plaintop} \restylefloat{table} \addbibresource{Bibliography.bib} @@ -89,7 +90,13 @@ \mainmatter \include{MainMatter/Introduction} -\include{MainMatter/Background} + +% Business Intelligence section +\include{MainMatter/Background/BusinessIntelligence/BusinessIntelligence} +% \include*{MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex} +% \include*{MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex} +% \include*{MainMatter/Background/BusinessIntelligence/ETL.tex} + \include{MainMatter/Proposal} \include{MainMatter/Implementation} From 950b69e0f426add7a340c5bd51d29e88e8860d09 Mon Sep 17 00:00:00 2001 From: vicmc99 Date: Sun, 9 Apr 2023 09:03:31 -0400 Subject: [PATCH 03/15] Set thesis document structure for parallel working --- document/MainMatter/AutomaticETL/AutomaticETL.tex | 1 + .../BusinessIntelligence/AnalyticalSystems.tex | 0 .../BusinessIntelligence/BusinessIntelligence.tex | 6 +++--- .../{Background => }/BusinessIntelligence/ETL.tex | 0 .../BusinessIntelligence/TransactionalSystems.tex | 0 .../{ => Implementation}/Implementation.tex | 0 document/MainMatter/{ => Proposal}/Proposal.tex | 0 document/Thesis.tex | 11 ++++------- 8 files changed, 8 insertions(+), 10 deletions(-) create mode 100644 document/MainMatter/AutomaticETL/AutomaticETL.tex rename document/MainMatter/{Background => }/BusinessIntelligence/AnalyticalSystems.tex (100%) rename document/MainMatter/{Background => }/BusinessIntelligence/BusinessIntelligence.tex (78%) rename document/MainMatter/{Background => }/BusinessIntelligence/ETL.tex (100%) rename document/MainMatter/{Background => }/BusinessIntelligence/TransactionalSystems.tex (100%) rename document/MainMatter/{ => Implementation}/Implementation.tex (100%) rename document/MainMatter/{ => Proposal}/Proposal.tex (100%) diff --git a/document/MainMatter/AutomaticETL/AutomaticETL.tex b/document/MainMatter/AutomaticETL/AutomaticETL.tex new file mode 100644 index 00000000..876cfd46 --- /dev/null +++ b/document/MainMatter/AutomaticETL/AutomaticETL.tex @@ -0,0 +1 @@ +\chapter{Generaci\'on Autom\'atica de Procesos ETL}\label{chapter:auto-etl} diff --git a/document/MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex similarity index 100% rename from document/MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex rename to document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex diff --git a/document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex b/document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex similarity index 78% rename from document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex rename to document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex index 923b6eae..87298b79 100644 --- a/document/MainMatter/Background/BusinessIntelligence/BusinessIntelligence.tex +++ b/document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex @@ -10,9 +10,9 @@ \chapter{Sistemas de Inteligencia de Negocios}\label{chapter:bi-systems} ``Las secciones en las que se estructura el resto del cap\'itulo recogen un estudio de los distintos componentes de una soluci\'on de inteligencia de negocios de forma respectiva. La secci\'on \ref{section:oltp} presenta los sistemas transaccionales...'' -\include*{MainMatter/Background/BusinessIntelligence/TransactionalSystems} -\include*{MainMatter/Background/BusinessIntelligence/AnalyticalSystems} -\include*{MainMatter/Background/BusinessIntelligence/ETL} +\include*{MainMatter/BusinessIntelligence/TransactionalSystems} +\include*{MainMatter/BusinessIntelligence/AnalyticalSystems} +\include*{MainMatter/BusinessIntelligence/ETL} diff --git a/document/MainMatter/Background/BusinessIntelligence/ETL.tex b/document/MainMatter/BusinessIntelligence/ETL.tex similarity index 100% rename from document/MainMatter/Background/BusinessIntelligence/ETL.tex rename to document/MainMatter/BusinessIntelligence/ETL.tex diff --git a/document/MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex similarity index 100% rename from document/MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex rename to document/MainMatter/BusinessIntelligence/TransactionalSystems.tex diff --git a/document/MainMatter/Implementation.tex b/document/MainMatter/Implementation/Implementation.tex similarity index 100% rename from document/MainMatter/Implementation.tex rename to document/MainMatter/Implementation/Implementation.tex diff --git a/document/MainMatter/Proposal.tex b/document/MainMatter/Proposal/Proposal.tex similarity index 100% rename from document/MainMatter/Proposal.tex rename to document/MainMatter/Proposal/Proposal.tex diff --git a/document/Thesis.tex b/document/Thesis.tex index 9c65148d..56448073 100644 --- a/document/Thesis.tex +++ b/document/Thesis.tex @@ -92,13 +92,10 @@ \include{MainMatter/Introduction} % Business Intelligence section -\include{MainMatter/Background/BusinessIntelligence/BusinessIntelligence} -% \include*{MainMatter/Background/BusinessIntelligence/TransactionalSystems.tex} -% \include*{MainMatter/Background/BusinessIntelligence/AnalyticalSystems.tex} -% \include*{MainMatter/Background/BusinessIntelligence/ETL.tex} - -\include{MainMatter/Proposal} -\include{MainMatter/Implementation} +\include{MainMatter/BusinessIntelligence/BusinessIntelligence} +\include{MainMatter/AutomaticETL/AutomaticETL} +\include{MainMatter/Proposal/Proposal} +\include{MainMatter/Implementation/Implementation} \backmatter From 880bc232a9f72f56f58a1424d73be96bee051524 Mon Sep 17 00:00:00 2001 From: vicmc99 Date: Sun, 9 Apr 2023 09:09:22 -0400 Subject: [PATCH 04/15] Update readme with workflow --- README.md | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c3ec8678..2457da7f 100644 --- a/README.md +++ b/README.md @@ -1 +1,86 @@ -# Latex template for students thesis of MatCom +## Writting a Chapter +### Chapter Structure +Each chapter will be structured as follows: +- An **introduction section** which should be concise and no longer than one page. This section must provide answers to the following questions: + + - What topic are you going to discuss in the chapter? (Definitions) + - Why is it relevant to discuss that topic? (Context and real life applications) + - How is structured the current chapter? (Content of the rest of the sections) + +- **Content sections** in a logical order so each one refers to sections that the reader is already familiar with. + +To work in parallel in the same chapter we need to stablish some conventions. All the chapters of the thesis will be in the `document\MainMatter\` directory. I will use the chapter called *"Sistemas de Inteligencia de Negocios"* to illustrate how these conventions will work. + +- Each `chapter` will have his own directory with a descriptive name. In this case we will have the `document\MainMatter\BusinessIntelligence\` directory. +- Each `chapter` directory will have the following files: + + - A `.tex` main file with the same name as the directory. In this file we will write the introductory section of the chapter and include the files of the chapter's sections. This is how this file should look like: + + ```LaTex + % Set the name of the chapter and its label + \chapter{Sistemas de Inteligencia de Negocios}\label{chapter:bi-systems} + + % Write here the introductory section content + + % These commands include the content of the sections files + \include*{MainMatter/BusinessIntelligence/TransactionalSystems} + \include*{MainMatter/BusinessIntelligence/AnalyticalSystems} + \include*{MainMatter/BusinessIntelligence/ETL} + ``` + + - A `.tex` file for each section, each one with a descriptive name and structured as follows: + + ```LaTex + % Set the name of the section and its label + \section{Online Analytical Processing (OLAP)} \label{section:olap} + + % Write here the introduction to the section + + % Subsections for the contents + \subsection{Objetivos de los sistemas OLAP} + % Write here... + \subsection{Arquitectura de los sistemas OLAP} + % Write here... + \subsection{Almacenes de datos} + % Write here... + \subsection{Modelo Dimensional} + % Write here... + \subsection{Arquitectura de un almac\'en de datos} + % Write here... + \subsection{Herramientas OLAP} + % Write here... + + ``` + + Having separate files for the sections of a chapter will allow us to work together in the same chapter but in different sections. This way we can avoid merge conflicts while working in parallel. + + We include the chapters in the main thesis `.tex` file like this: + + ```LaTex + \include{MainMatter/BusinessIntelligence/BusinessIntelligence} + \include{MainMatter/AutomaticETL/AutomaticETL} + \include{MainMatter/Proposal/Proposal} + \include{MainMatter/Implementation/Implementation} + ``` + + > The difference between `\include{file}` and `\include*{file}` is that the first one will create a new page for the content of the file. + +### Tracking progress + +For trackign the progress we will use GitHub issues. We will create an issue for each section of a chapter (including the introductory section). Each issue will contain a task list including all the subsections to complete the section. + +Each milestone of the project will be completing a chapter and each one will have a provisional deadline. + +### Writting a chapter + +To write a chapter we will create branches with the following naming convention: + +`//
/` + +For example: + +`vicmc99/BusinessIntelligence/TransactionalSystems/Add-Relational-Database-Subsection` + +In each pull request you will have to assign me as reviewer + +It should never happen to have two branches open on the same section of the same chapter at the same time. \ No newline at end of file From b4687e0fbf7a1f6c110418ab1602be56719756b9 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Wed, 19 Jul 2023 16:16:36 -0400 Subject: [PATCH 05/15] Update TransactionalSystems.tex --- .../BusinessIntelligence/TransactionalSystems.tex | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex index 8b6cbd78..554034c9 100644 --- a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex @@ -2,6 +2,20 @@ \section{Online Transaction Processing (OLTP)} \label{section:oltp} \textbf{TODO}: La introducci\'on de esta secci\'on es presentar el concepto de OLTP +Claro, la tecnología de procesamiento de transacciones en línea (OLTP) es un sistema crítico en +la infraestructura tecnológica de muchas organizaciones, ya que permite el procesamiento de +transacciones en tiempo real. Esto significa que los datos se actualizan al instante y están +disponibles para su uso inmediato. Los sistemas OLTP se utilizan en una amplia variedad de +aplicaciones, desde la banca y las finanzas hasta el comercio electrónico y la atención médica. + \subsection{Objetivos de los sistemas OLTP} \subsection{Arquitectura de los sistemas OLTP} + +los sistemas OLTP se basan en una arquitectura cliente-servidor, donde los clientes envían +solicitudes al servidor para realizar transacciones en la base de datos. El servidor procesa +estas solicitudes y actualiza la base de datos en tiempo real, lo que permite una respuesta +rápida a las solicitudes de los clientes. Los sistemas OLTP también utilizan técnicas de +concurrencia y control de transacciones para garantizar la integridad de los datos y prevenir +problemas como la corrupción de datos o la pérdida de información. + \subsection{Modelo Relacional} \ No newline at end of file From f6c0c975d39d76e8a7d15e01486414f60caa4f4d Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Thu, 20 Jul 2023 15:16:48 -0400 Subject: [PATCH 06/15] Add Introduction for OLTP section --- .../MainMatter/BusinessIntelligence/AnalyticalSystems.tex | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex index 7d672850..2c475898 100644 --- a/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex @@ -2,6 +2,12 @@ \section{Online Analytical Processing (OLAP)} \label{section:olap} \textbf{TODO}: La introducci\'on de esta secci\'on es presentar el concepto de OLAP +El Procesamiento Anal\'itico en L\'inea (\textbf{OLAP}) es una tecnología de organización de grandes bases de datos +comerciales que facilita a los usuarios el an\'alisis de grandes conjuntos de datos multidimensionales de manera +eficiente y efectiva. A diferencia de las bases de datos relacionales tradicionales, que se centran en el procesamiento +de transacciones y la actualización de datos en tiempo real, OLAP se enfoca en el análisis de datos históricos y la +identificación de patrones y tendencias. + \subsection{Objetivos de los sistemas OLAP} \subsection{Arquitectura de los sistemas OLAP} \subsection{Almacenes de datos} From cf2ed324878519bdf89a4018fb94e1e2a1aff062 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Thu, 20 Jul 2023 16:16:36 -0400 Subject: [PATCH 07/15] Update AnalyticalSystems.tex --- .../MainMatter/BusinessIntelligence/AnalyticalSystems.tex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex index 2c475898..b897e657 100644 --- a/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex @@ -9,6 +9,10 @@ \section{Online Analytical Processing (OLAP)} \label{section:olap} identificación de patrones y tendencias. \subsection{Objetivos de los sistemas OLAP} + +En términos generales, el objetivo principal de OLAP es proporcionar una plataforma para el análisis de datos +multidimensionales de manera eficiente y efectiva. + \subsection{Arquitectura de los sistemas OLAP} \subsection{Almacenes de datos} \subsection{Modelo Dimensional} From 2e3f3972a56ef3c38e47a22177a5b0568e2db92a Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Wed, 2 Aug 2023 21:28:27 -0400 Subject: [PATCH 08/15] added bibliography and finish some writes --- document/Bibliography.bib | 71 ++++++ document/Graphics/dimension.png | Bin 0 -> 58039 bytes document/Graphics/hechos.png | Bin 0 -> 30933 bytes document/Graphics/star schema.png | Bin 0 -> 36625 bytes .../AnalyticalSystems.tex | 216 +++++++++++++++++- 5 files changed, 284 insertions(+), 3 deletions(-) create mode 100644 document/Graphics/dimension.png create mode 100644 document/Graphics/hechos.png create mode 100644 document/Graphics/star schema.png diff --git a/document/Bibliography.bib b/document/Bibliography.bib index e69de29b..85b79b98 100644 --- a/document/Bibliography.bib +++ b/document/Bibliography.bib @@ -0,0 +1,71 @@ +@misc{foote_brief_2018, + title = {A {Brief} {History} of the {Data} {Warehouse}}, + url = {https://www.dataversity.net/brief-history-data-warehouse/}, + abstract = {A Data Warehouse (DW) stores corporate information and data from operational systems and a wide range of other data resources. Data Warehouses are designed to support the decision-making process through data collection, consolidation, analytics, and research.}, + language = {en-US}, + urldate = {2023-03-10}, + journal = {DATAVERSITY}, + author = {Foote, Keith D.}, + month = apr, + year = {2018}, + keywords = {History}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\A36IKVEL\\brief-history-data-warehouse.html:text/html}, +} + +@misc{naeem_data_2020, + title = {Data {Warehouse} {Concepts}: {Kimball} vs. {Inmon} {Approach}}, + shorttitle = {Data {Warehouse} {Concepts}}, + url = {https://www.astera.com/type/blog/data-warehouse-concepts/}, + abstract = {Inmon vs Kimball: Which data warehouse concept should you use to design a data warehouse. Find out in this blog.}, + language = {en-US}, + urldate = {2023-03-10}, + journal = {Astera}, + author = {Naeem, Tehreem}, + month = feb, + year = {2020}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\DVQ44NVM\\data-warehouse-concepts.html:text/html}, +} + +@misc{noauthor_snowflake_2018, + title = {Snowflake {Schema} in {Data} {Warehouse} {Model}}, + url = {https://www.geeksforgeeks.org/snowflake-schema-in-data-warehouse-model/}, + abstract = {A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.}, + language = {en-us}, + urldate = {2023-03-10}, + journal = {GeeksforGeeks}, + month = aug, + year = {2018}, + note = {Section: DBMS}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\QXG6SE7S\\snowflake-schema-in-data-warehouse-model.html:text/html}, +} + +@misc{noauthor_kimball_nodate, + title = {Kimball vs. {Inmon} in {Data} {Warehouse} {Architecture}}, + url = {https://www.zentut.com/data-warehouse/kimball-and-inmon-data-warehouse-architectures/}, + abstract = {We will discuss about the Kimball vs. Inmon in data warehouse architecture and design approach. We also answer the question of how to choose Kimball or Inmon's architecture to build data warehouse.}, + language = {en-US}, + urldate = {2023-03-12}, + journal = {zentut}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\VP7BZI6R\\kimball-and-inmon-data-warehouse-architectures.html:text/html}, +} + +@book{diaz2012introduccion, + title={Introducci{\'o}n al business intelligence}, + author={D{\'\i}az, Josep Curto}, + year={2012}, + publisher={Editorial UOC} +} + +@book{kimball2011data, + title={The data warehouse toolkit: the complete guide to dimensional modeling}, + author={Kimball, Ralph and Ross, Margy}, + year={2011}, + publisher={John Wiley \& Sons}, +} + +@book{inmon2005building, + title={Building the data warehouse}, + author={Inmon, William H}, + year={2005}, + publisher={John wiley \& sons} +} \ No newline at end of file diff --git a/document/Graphics/dimension.png b/document/Graphics/dimension.png new file mode 100644 index 0000000000000000000000000000000000000000..0f149686ff0028cd0a9d1fbe20fdce5047d98041 GIT binary patch literal 58039 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

~hLUj96rk*eR# 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 TChd^s8Sr{7rv|Q(F$?++R-E2p literal 0 HcmV?d00001 diff --git a/document/Graphics/hechos.png b/document/Graphics/hechos.png new file mode 100644 index 0000000000000000000000000000000000000000..2f7acb00daee7597a24eb2d1f0d2b85acc9f45d9 GIT binary patch literal 30933 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 literal 0 HcmV?d00001 diff --git a/document/Graphics/star schema.png b/document/Graphics/star schema.png new file mode 100644 index 0000000000000000000000000000000000000000..2b941cfd265f412a3a0f0cf62eba1bb0d462ad53 GIT binary patch literal 36625 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 literal 0 HcmV?d00001 diff --git a/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex index b897e657..91279a5b 100644 --- a/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/AnalyticalSystems.tex @@ -1,7 +1,5 @@ \section{Online Analytical Processing (OLAP)} \label{section:olap} -\textbf{TODO}: La introducci\'on de esta secci\'on es presentar el concepto de OLAP - El Procesamiento Anal\'itico en L\'inea (\textbf{OLAP}) es una tecnología de organización de grandes bases de datos comerciales que facilita a los usuarios el an\'alisis de grandes conjuntos de datos multidimensionales de manera eficiente y efectiva. A diferencia de las bases de datos relacionales tradicionales, que se centran en el procesamiento @@ -11,10 +9,222 @@ \section{Online Analytical Processing (OLAP)} \label{section:olap} \subsection{Objetivos de los sistemas OLAP} En términos generales, el objetivo principal de OLAP es proporcionar una plataforma para el análisis de datos -multidimensionales de manera eficiente y efectiva. +multidimensionales de manera eficiente y efectiva. De forma m\'as espec\'ifica OLAP tiene el objetivo de: + +\begin{itemize} + \item Brindar a los analistas de datos flexibilidad a la hora de realizar sus labores, permitiendoles analizar los datos desde + diferentes perspectivas y dimensiones, así como la capacidad de agregar o desagregar los datos según sea necesario. + \item Ofrecer an\'alisis de forma r\'apida y eficiente, incluso cuando se manejan grandes cantidades de datos. + \item Ser fácilmente accesible para los usuarios finales, incluso si no tienen experiencia en programación o en el + manejo de bases de datos. Esto se logra a través de interfaces de usuario intuitivas y herramientas de análisis + visuales que permiten a los usuarios explorar los datos de manera interactiva. + \item Ser f\'acilmente integrable con otras aplicaciones de análisis y reporting, lo que permite a las organizaciones + utilizar la tecnología en conjunto con otras herramientas de análisis de datos y visualización. + \item Otorgar seguridad permitiendo a las organizaciones controlar quiénes tienen acceso a los datos y qué acciones + pueden realizar. Esto es especialmente importante en el caso de datos confidenciales o críticos para el negocio. +\end{itemize} \subsection{Arquitectura de los sistemas OLAP} + +La arquitectura de un sistema OLAP consiste en múltiples componentes que trabajan en conjunto para brindar un entorno +analítico integral. Estos son los componentes fundamentales de un sistema OLAP: + +\subsubsection{Fuentes de Datos:} +El primer componente de un sistema OLAP son las fuentes de datos. Estas pueden ser cualquier número de diferentes +tipos de fuentes de datos, como bases de datos relacionales o archivos planos. Las fuentes de +datos son típicamente el punto de partida para el proceso ETL (Extraci\'on, Transformaci\'on, Carga), que extrae datos +de los sistemas fuente y los carga en el sistema OLAP. + +\subsubsection{ETL:} +El siguiente componente son los procesos ETL. Estos son los procesos que hacen posible +que los datos sean extra\'idos de los sistemas fuente, se transformen en el formato requerido por el sistema OLAP y luego se +cargan en el sistema OLAP. Los procesos ETL son los responsables de garantizar la calidad y consistencia de los datos, +así como de realizar cualquier limpieza o agregación de datos necesarios. + +\subsubsection{Almacén de datos:} +El tercer componente de un sistema OLAP es el almacén de datos, Data Warehouse en ingl\'es. Aquí es donde se almacenan y +organizan los datos de manera optimizada para consultas analíticas. M\'as adelante se profundizar\'a en las especificidades +de los Almacenes de Datos. + +\subsubsection{Motor OLAP:} +El motor OLAP es el responsable de responder consultas analíticas de forma rápida y eficiente sobre +los datos en el almacén de datos. El motor OLAP consiste en un conjunto de algoritmos y estructuras de datos +optimizadas para consultas analíticas, como cubos multidimensionales, índices de bits y esquemas en estrella. + +\subsubsection{Herramientas de cliente:} +El último componente de un sistema OLAP son las herramientas de cliente. Estas son las herramientas que utilizan los +usuarios finales para interactuar con el sistema OLAP y realizar consultas analíticas. Las herramientas de cliente pueden +incluir desde simples paneles basados en web hasta herramientas sofisticadas de visualización y análisis de datos. + \subsection{Almacenes de datos} + +El término \emph{Data Warehouse} fue acuñado por primera vez por Bill Inmon en 1990. William H. Inmon planteó que: +“Un \textbf{\emph{Data Warehouse}} es una colección de datos integrada, orientada a sujetos, variante en el tiempo y +no volátil, utilizada como apoyo para los procesos de toma de decisión.” + +Analizando cada uno de los elementos principales de esta definición, se puede obtener una mejor comprensión de qué es un +almacén de datos: + +\subsubsection{Orientados a sujetos:} +% +Hace referencia a un sistema que est\'a organizado en base a temas o conceptos especiales, permitiendo que los datos y la +información de un mismo tipo quede siempre conectada. + +\subsubsection{Integrados:} +Los datos se obtienen de fuentes diferentes, por ejemplo de los diferentes departamentos de una organización, por lo que se +deben aplicar técnicas que permitan determinar las interrelaciones existentes entre los datos, para luego guardarlos en el +almacén y que puedan ser accedidos eficientemente durante las consultas. + +\subsubsection{No Vol\'atiles:} +La información contenida en un almac\'en de datos existe para ser leída, pero no modificada. + +\subsubsection{Variables con el tiempo:} +Los cambios producidos en los datos a lo largo del tiempo quedan registrados, para que los informes que se generen reflejen +esas variaciones. + + +No se puede hablar de Almacenes de Datos sin mencionar los modelos dimensionales. A trav\'es de los a\~{n}os, la industria +a conclu\'ido que el modelado dimensional es la t\'ecnica m\'as apropiada para entregar datos a los usuarios de los +almacenes de datos. En la siguiente sección profundizaremos en el modelo dimensional. + \subsection{Modelo Dimensional} + +Un modelo dimensional contiene la misma información que un modelo normalizado, pero empaqueta los datos en un formato +distinto, que tiene como objetivos de diseño la comprensión del usuario, el rendimiento de las consultas y la resiliencia +al cambio. Un modelo dimensional se compone de dos elementos fundamentales: las tablas de hechos y las tablas de dimensi\'on. +% +\subsubsection{Tablas de Hechos: } +% +Una tabla de hechos es la tabla principal en un modelo dimensional, en la cual se almacenan las mediciones de desempeño del +negocio, generalmente valores num\'ericos\cite{kimball2011data}. Una fila en una tabla de hechos corresponde a una medida. +% +\begin{figure}[ht] + \centering + \includegraphics[width=0.5\textwidth]{../document/Graphics/hechos.png} + \caption{Tabla de Hechos Daily Sales (Ventas Diarias) \cite{kimball2011data}} + \label{fig:facts} + \end{figure} +% + +La Figura\ref{fig:facts} muestra un ejemplo de una tabla de hechos que contiene datos sobre las ventas de un producto, en una fecha dada, +en una tienda determinada. N\'otese que los atributos Quantity Sold (Cantidad Vendida) y Dollar Sales Amount (Cantidad de +Ventas en Dólares), son atributos num\'ericos que pueden ser de gran ayuda para analizar la rentabilidad y otros indicadores +del negocio. + +Las tablas de hechos normalmente ocupan el $90\%$\cite{kimball2011data} del espacio de las bases de datos dimensionales, por tanto, +los desarrolladores deben tener bien en cuenta el espacio que ocupa la tabla. Es inconveniente almacenar +registros num\'ericos que no vayan a aportar nada relevante a los an\'alisis. Esto tambi\'en se aplica para los atributos +de tipo texto, ya que ocupan mayor espacio que los datos num\'ericos y por su naturaleza heterog\'enea es conveniente +mantenerlos fuera de las tablas de hechos; aunque esto no es absoluto\cite{kimball2011data}. + +Las tablas de hechos contienen dos o m\'as llaves for\'aneas, que conectan con las llaves primarias de las tablas de +dimensiones. +% +\subsubsection{Tablas de Dimensiones: } +% +Las tablas de dimensiones contienen los descriptores textuales del negocio. Cada dimensión se identifica por su llave +primaria, la cual es \'unica y sirve como base para asegurar la integridad referencial en cualquier tabla de hechos con +la que se interrelaciona. Los atributos de las tablas de dimensi\'on son la fuente fundamental de restricciones en las +consultas al modelo dimensional, son fundamentales para hacer que el almacén de datos sea utilizable y comprensible. Las +dimensiones implementan la interfaz de usuario para el almacén de datos, por tanto, cuánto más tiempo se dedique a +proporcionar atributos con información detallada y terminología comercial, mejor es el almacén de datos. + +\begin{figure}[ht] + \centering + \includegraphics[width=0.5\textwidth]{../document/Graphics/dimension.png} + \caption{Tabla de Dimensi\'on Producto \cite{kimball2011data}} + \label{fig:dimension} + \end{figure} + +La Figura\ref{fig:dimension} muestra un ejemplo de la tabla de la dimensi\'on Product (Producto). +% +\subsubsection{Esquema Estrella y Esquema Copo de Nieve: } + +Las tablas de hechos y tablas de dimensiones se combinan para formar un modelo dimensional. Como se puede observar en la +Figura\ref{fig:dimmodel}, la tabla de hechos Ventas, que almacena las medidas de inter\'es, se encuentra en el centro del esquema, +interrelacionada a las tablas de dimensiones, que le proporcionan a las medidas atributos descriptivos. + +\begin{figure}[ht] + \centering + \includegraphics[width=1\textwidth]{../document/Graphics/star schema.png} + \caption{Modelo Dimensional \cite{kimball2011data}} + \label{fig:dimmodel} +\end{figure} + +A esta estructura se le conoce como Esquema Estrella (\emph{Star Schema}). Debido a su simplicidad, son f\'aciles de leer +y de comprender los procesos que intentan modelar. Adem\'as tienen un rendimiento sobresaliente, con pocas operaciones se +pueden manejar consultas complicadas sobre los hechos. Sin embargo, tienen una deficiencia, con tal de mantener la +simplicidad, permiten redundancia de datos en las tablas de dimensiones. + +Ejemplo de esto es la tabla de la dimensi\'on Product, Figura\ref{fig:dimension}. N\'otese que se puede almacenar varios productos de una +misma marca, por tanto, la información de Brand Descriptor (Descriptor de Marca) se repetir\'ia por cada producto de la +misma marca. Lo mismo sucede con Category Description (Descriptor de Categor\'ia) y otros de los atributos. Es decir, la +información en esta tabla ser\'a redundante. Sin embargo, con el objetivo de optimizar el rendimiento de las consultas y +de mantener la legibilidad del modelo, se abstiene de crear una tabla aparte con la informaci\'on de las marcas, y unirla +a la dimensi\'on Product mediante una llave for\'anea. Si se realiza esta transformaci\'on en las tablas de dimensi\'on, +el Esquema Estrella converge al Esquema Copo de Nieve (\emph{Snowflake Schema}). + +En el esquema Copo de Nieve, las dimensiones se encuentran normalizadas en varias tablas relacionales. El efecto Copo de Nieve solo afecta a las tablas de +dimensiones, las tablas de hechos permanecen iguales que en el Esquema Estrella, en el centro del modelo. La ventaja de este esquema es que puede ayudar a reducir +la redundancia y mejorar la integridad de los datos. Sin embargo, en este esquema las consultas pueden resultar menos eficientes que en el Esquema Estrella, debido +a que intervienen un mayor número de tablas en las operaciones. Adem\'as, el Esquema Copo de Nieve puede resultar m\'as dif\'icil de entender y mantener, pues incrementa la complejidad del +dise\~{n}o del modelo. + +La decisi\'on de usar uno u otro esquema depende de los requerimientos espec\'ificos del proyecto y de las compensaciones entre rendimiento de las consultas, +la complejidad del esquema y la integridad de los datos. + + \subsection{Arquitectura de un almac\'en de datos} + +La estructura de un Almac\'en de Datos puede ser separada por capas. Aunque esto es un tema pol\'emico. Los mismos Inmon y Kimball tienen posiciones dispares +con respecto a este tema. Seg\'un Inmon los Data Marts est\'an f\'isicamente separados del Almac\'en de Datos y la forma de acceder a los datos es a trav\'es de los Data Marts \cite{inmon}. +Por otro lado, Kimball no concibe esta separaci\'on y los usuarios acceden a los datos del almac\'en directamente \cite{kimball2011data}. + +Cada autor propone diferentes nombres para las capas, pero de manera general pueden distinguirse 3 capas: + +\subsubsection{Sistemas Operacionales:} +Son las fuentes de datos primarias del Almac\'en de Datos. + +\subsubsection{Almac\'en de Datos Empresarial:} +Es la capa fundamental del almac\'en. Almacena los datos reconciliados, extra\'idos de los sistemas operacionales. De acuerdo con Kimball esta capa est\'a compuesta +por los datos integrados de los distintos Data Marts. En cambio, seg\'un Inmon es una estructura en tercera forma normal y los Data Marts derivados, separados f\'isicamente. + +\subsubsection{Capa de Reportes:} Es donde los usuarios interact\'uan con el Almac\'en de Datos. + \subsection{Herramientas OLAP} + +En el campo del Procesamiento Analítico en Línea (OLAP), existen varias herramientas y plataformas establecidas que +proporcionan capacidades sólidas para el análisis de datos y el apoyo a la toma de decisiones. Estas herramientas ofrecen +una amplia gama de características y funcionalidades para empoderar a las organizaciones en la obtención de conocimientos a +partir de sus datos. A continuaci\'on discutiremos algunas de las m\'as conocidas: + +\subsubsection{Microsoft SQL Server Analysis Services (SSAS): } + +Microsoft SQL Server Analysis Services (SSAS) es una herramienta OLAP que forma parte del conjunto de herramientas +de Microsoft SQL Server. Brinda capacidades de análisis multidimensionales y minería de datos, permitiendo a los +usuarios crear y gestionar cubos OLAP para un análisis avanzado de datos. SSAS admite tanto el modelo multidimensional +como el modelo tabular, brindando flexibilidad en la modelización y consultas de datos. + +\subsubsection{Oracle Essbase: } + +Oracle Essbase es una herramienta OLAP ofrecida por Oracle Corporation. Proporciona un sistema de gestión de bases de datos +multidimensionales que permite realizar análisis y pronósticos complejos. Admite diversas técnicas de modelado de datos, incluyendo +dimensiones densas y dispersas, así como capacidades avanzadas de cálculo. Essbase se integra con otras herramientas y +plataformas de Oracle, ofreciendo una solución integral para análisis empresarial. + +\subsubsection{IBM Cognos TM1: } + +IBM Cognos TM1 es una potente herramienta OLAP diseñada para la gestión del rendimiento y la planificación. Permite a las +organizaciones crear modelos multidimensionales y realizar análisis en tiempo real de datos financieros y operativos. TM1 +ofrece un entorno dinámico y flexible para presupuestar, pronosticar y modelar escenarios. Proporciona capacidades +avanzadas de consolidación de datos, análisis "what-if" y análisis predictivo. TM1 se integra con otras herramientas de +IBM Cognos, mejorando las capacidades generales de inteligencia empresarial. + +\subsubsection{Pentaho Mondrian: } + +Pentaho Mondrian es un servidor OLAP de código abierto que forma parte de la plataforma de análisis empresarial Pentaho. +Permite a los usuarios la creación e implementaci\'on de cubos OLAP para el análisis interactivo de datos. Mondrian es +compatible con el lenguaje de consulta MDX (Multi-Dimensional eXpressions) y proporciona una interfaz basada en web +para consultar y explorar datos. Ofrece características que permiten la navegaci\'on en datos multidimensionales como +desglose, segmentación y pivotar. Mondrian se integra con otras herramientas de Pentaho, brindando una +suite integral para la integración de datos, informes y análisis. From 76918cbb6809ec9d3771c6906d4d6385bca59b30 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Wed, 9 Aug 2023 19:55:22 -0400 Subject: [PATCH 09/15] OLTP objectives finished --- document/Bibliography.bib | 17 +++++++ .../TransactionalSystems.tex | 49 ++++++++++++++++--- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/document/Bibliography.bib b/document/Bibliography.bib index 85b79b98..8ee3da75 100644 --- a/document/Bibliography.bib +++ b/document/Bibliography.bib @@ -68,4 +68,21 @@ @book{inmon2005building author={Inmon, William H}, year={2005}, publisher={John wiley \& sons} +} + +@misc{oltpAzure, + title = {Online transaction processing ({OLTP}) - {Azure} {Architecture} {Center} {\textbar} {Microsoft} {Learn}}, + url = {https://learn.microsoft.com/en-us/azure/architecture/data-guide/relational-data/online-transaction-processing}, + urldate = {2023-08-08}, + file = {Online transaction processing (OLTP) - Azure Architecture Center | Microsoft Learn:C\:\\Users\\Chuchi\\Zotero\\storage\\R94PD4QG\\online-transaction-processing.html:text/html}, +} + +@misc{oltpOracle, + title = {¿{Qué} es {OLTP}?}, + url = {https://www.oracle.com/ar/database/what-is-oltp/}, + abstract = {OLTP implica insertar, actualizar y/o suprimir pequeñas cantidades de datos en un almacén de datos para recopilar, gestionar y proteger transacciones.}, + language = {es}, + urldate = {2023-08-08}, + keywords = {OLTP vs OLAP}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\UBC7LXYA\\what-is-oltp.html:text/html}, } \ No newline at end of file diff --git a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex index 554034c9..d4798bc6 100644 --- a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex @@ -1,14 +1,51 @@ \section{Online Transaction Processing (OLTP)} \label{section:oltp} -\textbf{TODO}: La introducci\'on de esta secci\'on es presentar el concepto de OLTP +En el ámbito de los sistemas de administración de bases de datos, el Procesamiento de Transacciones en Línea (OLTP) es un +tipo de procesamiento de datos que consiste en ejecutar una serie de transacciones que ocurren simultáneamente y en +tiempo real. Los sistemas OLTP están diseñados para garantizar la integridad y coherencia de los datos en un entorno de +múltiples usuarios. -Claro, la tecnología de procesamiento de transacciones en línea (OLTP) es un sistema crítico en -la infraestructura tecnológica de muchas organizaciones, ya que permite el procesamiento de -transacciones en tiempo real. Esto significa que los datos se actualizan al instante y están -disponibles para su uso inmediato. Los sistemas OLTP se utilizan en una amplia variedad de -aplicaciones, desde la banca y las finanzas hasta el comercio electrónico y la atención médica. +Los datos transaccionales son información que rastrea las interacciones relacionadas con las actividades de una +organización. Estas interacciones pueden ser transacciones comerciales, como pagos de clientes, pagos realizados +a proveedores, movimientos en el inventario de una organización, pedidos recibidos o servicios entregados. Los eventos +transaccionales, usualmente contienen una dimensión de tiempo, algunos valores +numéricos y referencias a otros datos\cite{oltpAzure}. Aunque, con el paso de los años, especialmente desde la llegada de +Internet, la definición de transacción +se ha expandido para poder abarcar todas las posibles formas de interacción digital entre un usuario y un negocio a través +de cualquier sensor conectado a la web. Además, incluye cualquier tipo de acción, como descargar pdfs en una +página web, ver un video específico, entre otros\cite{oltpOracle}. + +Los sistemas OLTP se centran principalmente en respaldar las operaciones comerciales diarias. Las transacciones que procesan +son brebes y sencillas, que normalmente implican la inserción, modificación o recuperación de cantidades pequeñas de datos. \subsection{Objetivos de los sistemas OLTP} + +El objetivo fundamental de los sistemas OLTP es brindar rapidez en las consultas de los usuarios y +garantizar que los datos permanezcan consistentes y actualizados. De forma m\'as espec\'ifica, los objetivos de +los sistemas OLTP son: + +\begin{itemize} + \item Posibilitar el procesamiento de transacciones en tiempo real. La rapidez que brinda OLTP en el procesamiento de + las transacciones, permite a las organizaciones mantener datos actualizados y + confiables. + + \item Mantener la integridad y la coherencia de los datos durante todo el proceso transaccional. Los sistemas OLTP + cumplen las propiedades ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad), por tanto garantizan un + procesamiento de datos confiable y sin errores. + + \item Recuperar y manipular datos de forma eficiente para respaldar las operaciones transaccionales. Los sistemas OLTP + est\'an optimizados para responder consultas e implementan mecanismos de indexación que proporcionan rapidez y presici\'on + a la hora de recuperar datos. Adem\'as, ofrecen capacidades s\'olidas de manipulaci\'on de datos, lo que permite + insertar, eliminar o actualizar registros de forma segura. + + \item Proporcionar alta disponibilidad y escalabilidad. Es necesario que los sistemas OLTP sean capaces de manejar una + gran cantidad de usuarios y transacciones concurrentes sin verse afectado su rendimiento. + + \item Mantener la seguridad y la privacidad de los datos es un objetivo fundamental de los sistemas OLTP. Con este fin, + estos sistemas implementan medidas de seguridad, como controles de acceso, encriptación y mecanismos de autenticación, + para proteger los datos de manipulaciones o accesos no autorizadas. +\end{itemize} + \subsection{Arquitectura de los sistemas OLTP} los sistemas OLTP se basan en una arquitectura cliente-servidor, donde los clientes envían From 1b91c26e8d77aee9cc71e302693168cb317e8cb2 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Thu, 17 Aug 2023 12:42:05 -0400 Subject: [PATCH 10/15] Update TransactionalSystems.tex --- .../TransactionalSystems.tex | 97 +++++++++++++++++-- 1 file changed, 89 insertions(+), 8 deletions(-) diff --git a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex index d4798bc6..0f2ea687 100644 --- a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex @@ -48,11 +48,92 @@ \subsection{Objetivos de los sistemas OLTP} \subsection{Arquitectura de los sistemas OLTP} -los sistemas OLTP se basan en una arquitectura cliente-servidor, donde los clientes envían -solicitudes al servidor para realizar transacciones en la base de datos. El servidor procesa -estas solicitudes y actualiza la base de datos en tiempo real, lo que permite una respuesta -rápida a las solicitudes de los clientes. Los sistemas OLTP también utilizan técnicas de -concurrencia y control de transacciones para garantizar la integridad de los datos y prevenir -problemas como la corrupción de datos o la pérdida de información. - -\subsection{Modelo Relacional} \ No newline at end of file +Los sistemas OLTP se basan en una arquitectura cliente-servidor, donde los clientes envían solicitudes al servidor para +realizar transacciones en la base de datos. El servidor procesa estas solicitudes y actualiza la base de datos en tiempo +real. Los sistemas OLTP también utilizan técnicas de concurrencia y control de transacciones para garantizar la integridad +de los datos y prevenir problemas como la corrupción de datos o la pérdida de información. Por tanto la arquitectura de los +sistemas OLTP puede ser separada, generalmente, en los siguientes componentes: + +\begin{itemize} + \item \textbf{Interfaz de usuario:} Este componente permite la interacci\'on entre los usuarios y sistema OLTP. Seg\'un + los requisitos del sistema, la interfaz puede ser basada en la web, una aplicaci\'on m\'ovil o de escritorio. + + \item \textbf{Lógica del Negocio:} Este componente alberga las reglas comerciales y la lógica + que rige el procesamiento de las transacciones. Es la encargada de validar los datos entrados por los usuarios, + garantizar el cumplimiento de las restricciones de integridad y organizar la distribuci\'on de los datos entre los + distintos componentes del sistema. + + \item \textbf{Administrador de transacciones:} El administrador de transacciones es el encargado de asegurar la + la coherencia y atomicidad de las transacciones. Implementa mecanismos para el manejo de múltiples transacciones + simultáneas, garantizando as\'i su ejecuci\'on de forma aislada y que los cambios que generen sean confirmados o + revertidos. Implementa mecanismos de control de concurrencia y tolerancia a fallos. + + \item \textbf{Almacenamiento de datos:} Por norma general, los sistemas OLTP suelen hacer uso de sistemas de gestión + de bases de datos relacionales (RDBMS) para almacenar datos transaccionales, aprovechando as\'i las bondades del + Modelo Relacional. +\end{itemize} + +\subsection{Modelo Relacional} + +En los primeros años de las bases de datos, cada aplicaci\'on defin\'ia su propia estructura para almacenar sus datos. +Si otros desarrolladores querían crear aplicaciones que usen esos datos, primero deb\'ian familiarizarse a fondo con +la estructura de datos particular que les servir\'ia de fuente. Estas estructuras particulares, eran ineficientes, difíciles +de mantener y optimizar. El Modelo Relacional fue concebido para dar soluci\'on al problema de las m\'ultiples estructuras +de datos arbitrarias. + +El Modelo Relacional impuso un estándar para representar datos y consultarlos que cualquier aplicación pod\'ia usar. +Desde sus inicios, fue reconocido por la comunidad de desarrolladores que la principal fortaleza del Modelo Relacional +estaba en el uso de tablas, que eran una forma intuitiva, eficiente y flexible de almacenar y acceder a +información estructurada. + +Con el paso del tiempo, surgió otro de los pilares del Modelo Relacional, el Lenguaje de Consulta Estructurado, SQL por +sus siglas en ingl\'es. Durante años, SQL ha sido ampliamente utilizado como lenguaje para escribir y consultar las bases +de datos. El basamento de SQL es el \'algebra relacional, por lo cual es un lenguaje matemático coherente que mejora el +rendimiento de todas las consultas. + + +\subsubsection{Ventajas del Modelo Relacional} + +Existen varias ventajas al usar el modelo relacional para administrar datos: + +\begin{itemize} + \item \textbf{Flexibilidad:} Las operaciones de inserción, modificación y eliminaci\'on son realizadas sin interrumpir + todo el sistema. + + \item \textbf{Escalabilidad:} Las bases de datos relacionales pueden escalar tanto vertical como horizontalmente, + asegurando el manejo de grandes volúmenes de datos de forma eficiente. Esta característica es primordial en el + mundo actual basado en datos. + + \item \textbf{Integridad de los datos:} El diseño de las relaciones y restricciones del Modelo Relacional garantiza + el cumplimiento de la integridad de los datos. +\end{itemize} + + +\subsubsection{Componentes del Modelo Relacional} + +El Modelo Relacional consta de varios componentes claves. En primer lugar tenemos las Tablas. En el Modelo Relacional +los datos son almacenados en tablas. Cada tabla representa una entidad o concepto. Las tablas est\'an formadas por filas +y columnas, lo cual permite el almacenamiento estructurado de los datos. + +Por otra parte est\'an los Atributos. Estos definen las características o propiedades de una entidad. Cada columna de una +Tabla corresponde a un Atributo de la entidad que representa dicha Tabla. Cada Atributo posee su propio tipo de datos y +ayudan a definir la naturaleza y la estructura de los datos. + +Por \'ultimo, encotramos las Relaciones. Estas representan asociaciones entre tablas y definen como las Tablas interactúan +entre si. Además, juegan un papel fundamental en el mantenimiento de la integridad de los datos y en su recuperación de forma +eficiente. + +Pero organizar los datos en Tablas, sin seguir alguna regla puede contribuir a la aparici\'on de datos redundantes en la +base de datos. La redundancia en las bases de datos se manifiesta cuando se tienen varias copias de los mismos datos en la +base de datos, por ejemplo, si se tiene una tabla que representa a la entidad Estudiante que est\'a relacionada con otra +tabla Departamento, almacenar los detalles completos del departamento como id_departamento, nombre_departamento y +jefe_departamento repetidamente por cada registro de estudiante es redundante. La soluci\'on a este problema yace en el +proceso de Normalización. + + + +La normalización **es** un proceso esencial **en** el modelo relacional **que** ayuda a eliminar la redundancia **y** +garantiza la integridad de los datos. A través de una serie **de** pasos, los diseñadores de bases de datos pueden +desglosar tablas más grandes, lo que da como resultado **una** mejor consistencia e integridad de los datos y requisitos +reducidos de espacio de almacenamiento. Cada formulario normal representa una etapa diferente **en** el proceso de +normalización **y** ayuda a abordar anomalías de datos específicas. \ No newline at end of file From 2bb46fd85bfedf49e9fb6a6afa4aa31bddd46ee7 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Fri, 18 Aug 2023 19:56:14 -0400 Subject: [PATCH 11/15] added bibliography and finish the writing --- document/Bibliography.bib | 35 +++++++++++++++ .../TransactionalSystems.tex | 43 +++++++++++++++---- 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/document/Bibliography.bib b/document/Bibliography.bib index 8ee3da75..d40a2521 100644 --- a/document/Bibliography.bib +++ b/document/Bibliography.bib @@ -85,4 +85,39 @@ @misc{oltpOracle urldate = {2023-08-08}, keywords = {OLTP vs OLAP}, file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\UBC7LXYA\\what-is-oltp.html:text/html}, +} + +@book{garcia2008database, + title={Database systems: the complete book}, + author={Garcia-Molina, Hector}, + year={2008}, + publisher={Pearson Education India} +} + +@book{silberschatz2005database, + title={Database systems concepts}, + author={Silberschatz, Abraham and Korth, Henry and Sudarshan, Shashank}, + year={2005}, + publisher={McGraw-Hill, Inc.} +} + +@misc{helenclu_database_2023, + title = {Database normalization description - {Microsoft} 365 {Apps}}, + url = {https://learn.microsoft.com/en-us/office/troubleshoot/access/database-normalization-description}, + abstract = {Describe the method to normalize the database and gives several alternatives to normalize forms. You need to master the database principles to understand them or you can follow the steps listed in the article.}, + language = {en-us}, + urldate = {2023-08-18}, + author = {helenclu}, + month = jul, + year = {2023}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\WH495648\\database-normalization-description.html:text/html}, +} + +@misc{noauthor_what_nodate, + title = {What is a relational database?}, + url = {https://www.oracle.com/database/what-is-a-relational-database/}, + abstract = {Learn the definition of a relational database and how it can help your business.}, + language = {en}, + urldate = {2023-08-18}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\QEGMHW8Q\\what-is-a-relational-database.html:text/html}, } \ No newline at end of file diff --git a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex index 0f2ea687..125531fd 100644 --- a/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex +++ b/document/MainMatter/BusinessIntelligence/TransactionalSystems.tex @@ -117,7 +117,9 @@ \subsubsection{Componentes del Modelo Relacional} Por otra parte est\'an los Atributos. Estos definen las características o propiedades de una entidad. Cada columna de una Tabla corresponde a un Atributo de la entidad que representa dicha Tabla. Cada Atributo posee su propio tipo de datos y -ayudan a definir la naturaleza y la estructura de los datos. +ayudan a definir la naturaleza y la estructura de los datos. Además, hay atributos llamados llaves primarias cuyos +valores son \'unicos para cada registro y sirven para identificarlos univocamente. También, las llaves for\'aneas son +otro tipo de atributo que referencian a registros de otras tablas. Por \'ultimo, encotramos las Relaciones. Estas representan asociaciones entre tablas y definen como las Tablas interactúan entre si. Además, juegan un papel fundamental en el mantenimiento de la integridad de los datos y en su recuperación de forma @@ -126,14 +128,37 @@ \subsubsection{Componentes del Modelo Relacional} Pero organizar los datos en Tablas, sin seguir alguna regla puede contribuir a la aparici\'on de datos redundantes en la base de datos. La redundancia en las bases de datos se manifiesta cuando se tienen varias copias de los mismos datos en la base de datos, por ejemplo, si se tiene una tabla que representa a la entidad Estudiante que est\'a relacionada con otra -tabla Departamento, almacenar los detalles completos del departamento como id_departamento, nombre_departamento y -jefe_departamento repetidamente por cada registro de estudiante es redundante. La soluci\'on a este problema yace en el -proceso de Normalización. +tabla Departamento, almacenar los detalles completos del departamento como id\_departamento, nombre\_departamento y +jefe\_departamento repetidamente por cada registro de estudiante es redundante y mal aprovecha los recursos de +almacenamiento. La soluci\'on a este problema yace en el proceso de Normalización. +\subsubsection{Normalización en el Modelo Relacional} -La normalización **es** un proceso esencial **en** el modelo relacional **que** ayuda a eliminar la redundancia **y** -garantiza la integridad de los datos. A través de una serie **de** pasos, los diseñadores de bases de datos pueden -desglosar tablas más grandes, lo que da como resultado **una** mejor consistencia e integridad de los datos y requisitos -reducidos de espacio de almacenamiento. Cada formulario normal representa una etapa diferente **en** el proceso de -normalización **y** ayuda a abordar anomalías de datos específicas. \ No newline at end of file +La Normalización es el proceso de dividir tablas m\'as grandes en otras m\'as pequeñas y manejables, siguiendo +un conjunto de reglas llamadas formas normales. Su objetivo es organizar los datos para evitar la redundancia y +eliminar anomalías en los datos. + + +\subsubsection{Formas Normales} + +El proceso de normalizaci\'on consta de una serie de pasos, donde en cada uno se le realizan modificaciones a las tablas de +la base de datos con el objetivo de que cumplan con las restricciones de una Forma Normal específica: + +\begin{itemize} + \item \textbf{Primera Forma Normal:} Una tabla se encuentra en Primera Forma Normal si todos los valores de los atributos + son at\'omicos. + + \item \textbf{Segunda Forma Normal:} Una tabla se encuentra en Segunda Forma Normal si est\'a en Primera Forma Normal + y todos los atributos no llaves dependen completamente de la llave. + + \item \textbf{Tercera Forma Normal:} Una tabla se encuetra en Tercera Forma Normal si est\'a en Segunda Forma Normal + y los atributos no llaves son mutuamente independientes. +\end{itemize} + +Las Formas Normales continuan con la Forma Normal de Boyce-Codd, cuarta y quinta Forma Normal. Llevar el proceso +de normalizaci\'on hasta Formas Normales superiores a la tercera es cuesti\'on de diseño de los desarrolladores, cada forma +normal superior aporta un grado m\'as de especializac\'on bajo una p\'erdida de expresividad en el diseño. + +Con el proceso de Normalización se logra mejorar la consistencia y la integridad de los datos. Se eliminan las anomal\'ias +en la inserción, eliminaci\'on y modificación de los registros. Se eliminan datos redundantes y se optimiza el almacenamiento. From 4bcc5d98247b29fa0331a20fdfc308b45aeb3176 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Sat, 19 Aug 2023 13:14:49 -0400 Subject: [PATCH 12/15] Update ETL.tex --- .../MainMatter/BusinessIntelligence/ETL.tex | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/document/MainMatter/BusinessIntelligence/ETL.tex b/document/MainMatter/BusinessIntelligence/ETL.tex index d9819ef7..7738b533 100644 --- a/document/MainMatter/BusinessIntelligence/ETL.tex +++ b/document/MainMatter/BusinessIntelligence/ETL.tex @@ -1,6 +1,22 @@ \section{Procesos ETL}\label{section:etl} -TODO: A\~nadir la definici\'on de los procesos ETL + +ETL son las siglas de Extract, Transform, Load, en español Extraer, Transformar y Cargar. Es un proceso fundamental en la +integración y gestión de datos. Implica extraer datos desde varios or\'igenes, generalmente con formatos distintos, +conciliarlos, mediante tecnicas de transformación y validaci\'on, en un formato compatible con un almacenamiento destino +predefinido y luego cargarlos en dicho sistema destino. Lo que permite aumentar la cantidad y la calidad de los datos +disponibles para los an\'alisis adem\'as de permitir la integración con sistemas heredados. + \subsection{Objetivos de los procesos ETL} + +El objetivo fundamental de los procesos ETL es garantizar la calidad, consistencia y confiabilidad de los datos para +fines anal\'iticos y de toma de decisiones. Adem\'as, cumple con otros objetivos clave. En una primera instancia, +tienen el objetivo de consolidar datos de m\'ultiples fuentes, d\'igase bases de datos, hojas de c\'alculo, APIs, +archivos planos y sistemas externos, en un formato unificado y estandarizado. La consolidación de los datos facilita +los procesos de an\'alisis y de generación de informes de datos. En segundo lugar, con los procesos ETL se busca +limpiar y transformar los datos, asegurando que sean precisos, completos y cumplan con las reglas y requisitos comerciales. +Por \'ultimo, ETL permite la integración con datos en tiempo real e históricos, lo cual brinda a las organizaciones una visión +completa de sus datos a lo largo del tiempo, mejorando la obtenci\'on de conocimiento y la toma de decisiones. + \subsection{ETL vs ELT} \subsection{Operaciones de los Procesos ETL} \subsection{Herramientas para Procesos ETL} From c9d73d33dd498d79b6bc4f9f8bc51f5c1c49a8df Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Sun, 20 Aug 2023 23:49:00 -0400 Subject: [PATCH 13/15] added bibliography for ETL and write some sections --- document/Bibliography.bib | 31 ++++++++++++ .../MainMatter/BusinessIntelligence/ETL.tex | 48 ++++++++++++++++++- 2 files changed, 78 insertions(+), 1 deletion(-) diff --git a/document/Bibliography.bib b/document/Bibliography.bib index d40a2521..dd97399d 100644 --- a/document/Bibliography.bib +++ b/document/Bibliography.bib @@ -120,4 +120,35 @@ @misc{noauthor_what_nodate language = {en}, urldate = {2023-08-18}, file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\QEGMHW8Q\\what-is-a-relational-database.html:text/html}, +} + +@misc{raunakjhawar_ETL_microsoft, + title = {Extract, transform, and load ({ETL}) - {Azure} {Architecture} {Center}}, + url = {https://learn.microsoft.com/en-us/azure/architecture/data-guide/relational-data/etl}, + abstract = {Learn about extract-transform-load (ETL) and extract-load-transform (ELT) data transformation pipelines, and how to use control flows and data flows.}, + language = {en-us}, + urldate = {2023-08-20}, + author = {raunakjhawar}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\6H8TPS9C\\etl.html:text/html}, +} + +@misc{ETL_amazon, + title = {¿{Qué} es {ETL}? - {Explicación} de extracción, transformación y carga ({ETL}) - {AWS}}, + shorttitle = {¿{Qué} es {ETL}?}, + url = {https://aws.amazon.com/es/what-is/etl/}, + abstract = {Descubra qué es ETL y cómo utilizar Amazon Web Services para ETL}, + language = {es-ES}, + urldate = {2023-08-20}, + journal = {Amazon Web Services, Inc.}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\SVTF2I4D\\etl.html:text/html}, +} + +@misc{etl_vs_elt_amazon, + title = {{ETL} vs {ELT} - {Difference} {Between} {Data}-{Processing} {Approaches} - {AWS}}, + url = {https://aws.amazon.com/compare/the-difference-between-etl-and-elt/}, + abstract = {What's the Difference Between ETL and ELT? How to Use ETL and ELT with AWS.}, + language = {en-US}, + urldate = {2023-08-20}, + journal = {Amazon Web Services, Inc.}, + file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\QHYSBE8G\\the-difference-between-etl-and-elt.html:text/html}, } \ No newline at end of file diff --git a/document/MainMatter/BusinessIntelligence/ETL.tex b/document/MainMatter/BusinessIntelligence/ETL.tex index 7738b533..820d9a6f 100644 --- a/document/MainMatter/BusinessIntelligence/ETL.tex +++ b/document/MainMatter/BusinessIntelligence/ETL.tex @@ -4,7 +4,8 @@ \section{Procesos ETL}\label{section:etl} integración y gestión de datos. Implica extraer datos desde varios or\'igenes, generalmente con formatos distintos, conciliarlos, mediante tecnicas de transformación y validaci\'on, en un formato compatible con un almacenamiento destino predefinido y luego cargarlos en dicho sistema destino. Lo que permite aumentar la cantidad y la calidad de los datos -disponibles para los an\'alisis adem\'as de permitir la integración con sistemas heredados. +disponibles para los an\'alisis adem\'as de permitir la integración con sistemas heredados. ETL est\'a presente en la +industria desde la década de 1970 y empez\'o a ganar popularidad con el auge de los almacenes de datos\cite{etl_vs_elt_amazon}. \subsection{Objetivos de los procesos ETL} @@ -18,5 +19,50 @@ \subsection{Objetivos de los procesos ETL} completa de sus datos a lo largo del tiempo, mejorando la obtenci\'on de conocimiento y la toma de decisiones. \subsection{ETL vs ELT} + +Extraer, Cargar y Transformar, ELT por sus siglas en ingl\'es es un proceso derivado de ETL solo que invierte las operaciones +de carga y transformación. En ELT se cargan los datos en el sistema destino justo despu\'es de ser extra\'idos de la fuente +o\'igen. La transformaciónde los datos extr\'idos es responsabilidad del sistema destino. La mayor parte de las +transformaciones se realizan en la etapa de análisis y se cargan los datos en bruto mínimamente procesados en el +almacenamiento de datos. + +El uso m\'as tipico de ELT yace en el \'ambito del Big Data\cite{raunakjhawar_ETL_microsoft}. La adopción de la +infraestructura en la nube, que proporciona a las bases de datos de destino la potencia de procesamiento necesaria +para realizar las transformaciones, hacen que la variante ELT sea elegida cada vez con m\'as frecuencia. + +Comparando ambos enfoques, con ELT se simplifica la arquitectura pues se elimina el motor de transformación del proceso. +Tambi\'en, al escalar el almacenamientode datos de destino también se escala el rendimiento del proceso ELT pues es all\'i +donde se realizan las transformaciones. ELT omite el paso de copia presente en ETL que puede ser una operaci\'on muy costosa +si el conjunto de datos es grande. Pero solo es efectivo usar este enfoque si el sistema destino es lo suficientemente +potente como para transformar los datos de manera eficiente. + +Por otro lado, ETL es la mejor opci\'on para el tratamiento de datos estructurados\cite{etl_vs_elt_amazon}. Con +ETL se transforma el formato de los datos, pero se mantiene su naturaleza estructurada. ETL es una tecnología madura +con m\'as de 20 años de explotaci\'on, sus protocolos y buenas pr\'acticas son conocidos y bien documentados. Como principal +desventaja le acompaña el hecho de que requiere m\'as definici\'on al principio, pues deben definirse los tipos de datos +del destino, estructuras y relaciones. + \subsection{Operaciones de los Procesos ETL} + +Como su nombre lo indica, las operaciones que conforman los Procesos ETL son: + +\subsubsection{Extracci\'on} + +Es el primer paso de ETL. En este paso se extraen datos desde m\'ultiples fuentes y se colocan en un \'area de preparaci\'on +en donde ser\'an transformados. Cada fuente de datos puede usar una organizaci\'on diferente de los datos o formatos distintos. +El proceso de extracci\'on debe generar un impacto m\'inimo en el sistema or\'igen, si se extraen muchos datos se podr\'ia +exceder la capacidad de carga del r\'igen, provocando que colapse y no est\'e disponible para su uso. Por esta los grandes +sistemas consumidores de datos programan sus actividades de extracci\'on para d\'ias u horarios donde su impacto sea +m\'inimo. + +La frecuencia con la que se realiza la extracci\'on desde el or\'igen depende del mecanismo implementado de captura de datos +modificados. Algunos sistemas or\'igen notifican cuando se ha cambiado un registro de datos. A continuaci\'on se ejecuta el +proceso de extracci\'on para ese cambio. Algunos sistemas no son capaces de identificar cambios en los datos, por lo que +la estrategia se simplifica a volver a extraer todos los datos del or\'igen. + +\subsubsection{Transformaci\'on} + +El paso de Tranformaci\'on es el encargado de consolidar los datos para prepararlos para el almacenamiento de datos destino. + + \subsection{Herramientas para Procesos ETL} From 733fc5d5ba40a81ff8fd345c86597169dac07e80 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Mon, 21 Aug 2023 22:48:18 -0400 Subject: [PATCH 14/15] Update ETL.tex --- .../MainMatter/BusinessIntelligence/ETL.tex | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/document/MainMatter/BusinessIntelligence/ETL.tex b/document/MainMatter/BusinessIntelligence/ETL.tex index 820d9a6f..e857b975 100644 --- a/document/MainMatter/BusinessIntelligence/ETL.tex +++ b/document/MainMatter/BusinessIntelligence/ETL.tex @@ -63,6 +63,48 @@ \subsubsection{Extracci\'on} \subsubsection{Transformaci\'on} El paso de Tranformaci\'on es el encargado de consolidar los datos para prepararlos para el almacenamiento de datos destino. - +Esta fase puede implicar los siguientes tipos de cambios de datos: + +\begin{itemize} + \item Seleccionar solo algunas columnas para ser cargadas. + \item Traducir c\'odigos (por ejemplo, si la fuente almacena una "M" para Masculino y "F" para Femenino pero el destino + tiene que guardar "1" para Masculino y "2" para Femenino) + \item Codificar valores, ejemplo de esto es convertir "Principal" en "P" o "Secundario" en "S" + \item Eliminar datos duplicados. + \item Revisi\'on de los formatos de los datos. Un caso com\'un de esto es la conversi\'on de unidades de medida + o la conversi\'on de los formatos de fecha/hora. +\end{itemize} + +También se pueden realizar transformaciones m\'as avanzadas, que siguen las reglas del negocio para optimizar los datos y +facilitar los análisis: + +\begin{itemize} + \item Aplicar directamente reglas comerciales a los datos, por ejemplo convertir los ingresos en ganancias restando los + gastos. + \item Vincular datos de diferentes or\'igenes. Por ejemplo, calcular el costo total de compra de un producto + sumando el valor de compra de los diferentes proveedores y almacenando solo el total final en el sistema de destino. + \item Cifrar datos confidenciales para cumplir con las leyes de datos o de privacidad antes de cargar la informaci\'on + en el sistema destino. +\end{itemize} + + +\subsubsection{Carga} + +La fase de Carga es el momento en que los datos resultantes de la fase de Transformaci\'on son cargados en sistema destino. +En dependencia de los requisitos de cada organización, el proceso de carga abarca una variedad de acciones diferentes. +En ocasiones se sobrescribe la información antigua de la bases de datos con nuevos datos. En cambio, los Almacenes de Datos +conservan todos los datos con el objetivo de mantener un historial. La mayoría de las organizaciones que utilizan ETL, +tienen este proceso automatizado, correctamente definido, continuo y por lotes\cite{ETL_amazon}. La carga de datos puede +ser de forma completa donde todos los datos de la fuente se transforman y se mueven al almacenamiento de datos, o bien +puede ser de forma progresiva donde se carga la diferencia entre los sistemas de origen y destino a intervalos regulares. \subsection{Herramientas para Procesos ETL} + +Actualmente existen varias herramientas ETL en el mercado, cada una posee características propias y capacidades \'unicas. +Entre las m\'as populares encontramos a Talend Data Fabric, Informatica PowerCenter, Fivetran, Stitch y Xplenty. Estas +herramientas ofrecen gestión de datos basada en la nube, la integración basada en metadatos y soporte para varias bases +de datos relacionales y no relacionales + +Además de las opciones anteriores, existen varias opciones populares de c\'odigo abierto, como son Apache NiFi, AWS Glue +e Informatica. Estas herramientas ofrecen casi todas las funcionalidades de sus contrapartes comerciales y a menudo +son m\'as personalizables y flexibles. \ No newline at end of file From 0c79dcad042e2b9b6d79aa862e97c2041a423263 Mon Sep 17 00:00:00 2001 From: sheldon05 Date: Tue, 22 Aug 2023 20:32:13 -0400 Subject: [PATCH 15/15] Added bibliography, Intro for the chapter and fix some writing --- document/Bibliography.bib | 17 ++++++++ .../BusinessIntelligence.tex | 40 ++++++++++++++----- .../MainMatter/BusinessIntelligence/ETL.tex | 2 +- 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/document/Bibliography.bib b/document/Bibliography.bib index dd97399d..5ed638f0 100644 --- a/document/Bibliography.bib +++ b/document/Bibliography.bib @@ -151,4 +151,21 @@ @misc{etl_vs_elt_amazon urldate = {2023-08-20}, journal = {Amazon Web Services, Inc.}, file = {Snapshot:C\:\\Users\\Chuchi\\Zotero\\storage\\QHYSBE8G\\the-difference-between-etl-and-elt.html:text/html}, +} + +@misc{BI_powerBI_Microsoft, + title = {What {Is} {Business} {Intelligence} {\textbar} {Microsoft} {Power} {BI}}, + url = {https://powerbi.microsoft.com/en-us/what-is-business-intelligence/}, + abstract = {Learn what business intelligence is and how to use business intelligence tools to uncover actionable insights that drive strategic business decisions.}, + language = {en}, + urldate = {2023-08-23}, +} + +@misc{IBM_bi, + title = {What is {Business} {Intelligence} and {How} {Does} it {Work}? {\textbar} {IBM}}, + shorttitle = {What is {Business} {Intelligence} and {How} {Does} it {Work}?}, + url = {https://www.ibm.com/topics/business-intelligence}, + abstract = {Business intelligence (BI) is software that ingests business data and presents it in user-friendly views such as reports, dashboards, charts and graphs."}, + language = {en-us}, + urldate = {2023-08-23}, } \ No newline at end of file diff --git a/document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex b/document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex index 87298b79..f031f9aa 100644 --- a/document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex +++ b/document/MainMatter/BusinessIntelligence/BusinessIntelligence.tex @@ -1,14 +1,36 @@ \chapter{Sistemas de Inteligencia de Negocios}\label{chapter:bi-systems} -\textbf{TODO}: A\~nadir una breve introducci\'on que cubra los siguientes puntos: -\begin{enumerate} - \item Definici\'on de Inteligencia de Negocios. - \item C\'omo es utilizada la inteligencia de negocios y qu\'e beneficios tiene? - \item Componentes principales de una soluci\'on de inteligencia de negocios -\end{enumerate} -Una breve descripci\'on del contenido del resto del cap\'itulo: -``Las secciones en las que se estructura el resto del cap\'itulo recogen un estudio de los distintos componentes de una soluci\'on -de inteligencia de negocios de forma respectiva. La secci\'on \ref{section:oltp} presenta los sistemas transaccionales...'' +Business Intelligence (BI) es un conjunto de metodologías, tecnologías, procesos y arquitecturas que convierten datos +en bruto en información útil para tomar decisiones comerciales y descubrir conocimientos estratégicos para los negocios. +Las herramientas de BI analizan tanto datos históricos como actuales para dar una panor\'amica completa del comportamiento +de un negocio a lo largo del tiempo y adem\'as presentan sus hallazgos en formatos visuales atractivos e intuitivos. +Con el uso de las herramientas de BI, las empresas son capaces de reducir las ineficiencias, detectar problemas potenciales, +encontrar nuevas fuentes de ingresos e identificar áreas de crecimiento futuro. + +Las soluciones de BI est\'an presentes en diversas industrias, como la medicina, las finanzas, el comercio minorista y la +fabricación. En la salud, las soluciones de BI son utilizadas para analizar datos de los pacientes y as\'i mejorar los +diagn\'osticos y tratamientos. En el \'area de las finanzas, las soluciones de BI explotan los datos financieros para +descubrir tendencias y as\'i mejorar las decisiones de inversi\'on. En la fabricación, los datos de producción son aprovechados +por las herramientas de BI para mejorar la eficiencia operativa y reducir costos de producción. Por \'ultimo, en la +venta minorista, las soluciones de BI analizan los datos de los clientes con el fin de mejorar su experiencia y +aumentar las ventas. + +Los componentes principales de una solución de BI son los mecanismos integración de datos, el almacenamiento de datos y +las herramientas de análisis y generaci\'on de informes. Los mecanismos de integración recopilan y +consolidan los datos provenientes de diversas fuentes, estos mecanismos pueden ser procesos ETL o ELT. +El almacenamiento de datos, como su nombre lo indica, es un depósito centralizado de los datos que utiliza la solución +de BI, este depósito puede ser un Almac\'en de Datos, Data Marts u otras estructuras. Las herramientas de análisis +son las encargadas de extraer información de los datos almacenados mediante estadísticas y analíticas, adem\'as de generar +informes que presenten de forma clara y entendible los resultados de los an\'alisis. + +Las secciones en las que se estructura el resto del cap\'itulo recogen un estudio de los distintos componentes de una +soluci\'on de Business Intelligence de forma respectiva. La secci\'on \ref{section:oltp} presenta los Sistemas +Transaccionales; presenta el concepto de los Sistemas OLTP, su arquitectura as\'i como una explicaci\'on de los principales +conceptos del Modelo Relacional. La secci\'on \ref{section:olap} presenta los Sistemas Anal\'iticos; +expone las ideas detras de los Sistemas OLAP, su arquitectura; explica las ideas detr\'as de los Almacenes de Datos y el +Modelo Dimensional y menciona algunas de las herramientas OLAP m\'as utilizadas en la actualidad. Por \'ultimo, la +secci\'on \ref{section:etl} brinda explicaciones sobre los Procesos ETL, sus objetivos y las operaciones que componen +estos procesos; hace una comparaci\'on entre ETL y ELT y expone algunas de las herramientas ETL m\'as utilizadas. \include*{MainMatter/BusinessIntelligence/TransactionalSystems} \include*{MainMatter/BusinessIntelligence/AnalyticalSystems} diff --git a/document/MainMatter/BusinessIntelligence/ETL.tex b/document/MainMatter/BusinessIntelligence/ETL.tex index e857b975..f7a6a9f0 100644 --- a/document/MainMatter/BusinessIntelligence/ETL.tex +++ b/document/MainMatter/BusinessIntelligence/ETL.tex @@ -30,7 +30,7 @@ \subsection{ETL vs ELT} infraestructura en la nube, que proporciona a las bases de datos de destino la potencia de procesamiento necesaria para realizar las transformaciones, hacen que la variante ELT sea elegida cada vez con m\'as frecuencia. -Comparando ambos enfoques, con ELT se simplifica la arquitectura pues se elimina el motor de transformación del proceso. +Comparando ambos enfoques, con ELT se simplifica la arquitectura pues se elimina del proceso el motor de transformación. Tambi\'en, al escalar el almacenamientode datos de destino también se escala el rendimiento del proceso ELT pues es all\'i donde se realizan las transformaciones. ELT omite el paso de copia presente en ETL que puede ser una operaci\'on muy costosa si el conjunto de datos es grande. Pero solo es efectivo usar este enfoque si el sistema destino es lo suficientemente