feat: add MongoDB section with detailed explanations and images; update bibliography with new references
All checks were successful
Build LaTeX Document / build_latex (push) Successful in 3m1s
All checks were successful
Build LaTeX Document / build_latex (push) Successful in 3m1s
This commit is contained in:
39
Tesi.tex
39
Tesi.tex
@@ -687,6 +687,45 @@ Una metrica `time-series' è una serie di dati indicizzati in sequenza rispetto
|
||||
Tipicamente, un `time-series' viene rappresentato con una struttura dati che registri un timestamp, che può essere di qualche tipo specifico per date, oppure un interocontenente uno `Unix timestamp'; oltre a questo contiene dati addizionali, che nella versione più semplice possono essere un unico valore numerico, ovvero l’osservazione registrata allo scorrere del tempo.
|
||||
\cite{githubGitHubInfluxdatatelegraf} \cite{noauthor_telegraf_nodate} \cite{aiknowTimeSeries}
|
||||
|
||||
\subsection{MongoDB}
|
||||
|
||||
MongoDB è un database `NoSQL' open source, orientato ai documenti, sviluppato da MongoDB Inc. È progettato per essere flessibile, scalabile e ad alte prestazioni, consentendo di memorizzare e interrogare dati in modo efficiente.
|
||||
Combina la capacità di scalare orizzontalmente con funzionalità come indici secondari, query per intervallo, ordinamento, aggregazioni e indici geospaziali.
|
||||
|
||||
Un database orientato ai documenti sostituisce il concetto di “riga” con un modello più flessibile, il “documento”. Grazie alla possibilità di includere documenti incorporati e array, l’approccio orientato ai documenti permette di rappresentare relazioni gerarchiche complesse all'interno di un singolo record.
|
||||
Non ci sono schemi predefiniti: le chiavi e i valori di un documento non hanno tipi o dimensioni fisse. L'assenza di uno schema rigido rende più semplice aggiungere o rimuovere campi secondo necessità. In generale, questo accelera lo sviluppo, permettendo agli sviluppatori di iterare rapidamente e sperimentare con facilità rendendo possibile testare diversi modelli di dati e scegliere quello più adatto alle proprie esigenze.
|
||||
|
||||
MongoDB è progettato per essere un database generi co, quindi, oltre alle operazioni di interimento, lettura, aggiornamento e eliminazione dei dati (`CRUD'), offre alcune funzionalità uniche in più, tra cui:
|
||||
\begin{itemize}
|
||||
\item \textbf{Indicizzazioni}: MongoDB supporta indici di diversi tipi, tra cui indici singoli, composti, geospaziali e testuali. Gli indici possono essere creati per qualsiasi campo all'interno di un documento, consentendo di ottimizzare le query per le prestazioni.
|
||||
\item \textbf{Aggregazioni}: MongoDB offre un'ampia gamma di operazioni di aggregazione, come `group', `match', `project' e `sort', che consentono di eseguire query complesse e analisi dei dati direttamente nel database.
|
||||
\item \textbf{Collezioni speciali}: MongoDB supporta collezioni speciali come le collezioni di `time-series' e le collezioni `time-to-live', che semplificano la gestione di dati temporali e di dati che devono essere eliminati dopo un certo periodo di tempo come ad esempio le sessioni utente.
|
||||
\end{itemize}
|
||||
|
||||
MongoDB memorizza i record di dati come documenti (nello specifigo documenti `BSON', ovvero una rappresentazione binaria di documenti in formato `JSON'), che sono raggruppati in collezioni. Un database contiene una o più collezioni di documenti..
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=300pt]{images/crud-annotated-document.png}
|
||||
\caption{Documento JSON.}
|
||||
\end{figure}
|
||||
|
||||
`JSON', JavaScript Object Notation, è un formato di scambio dati testuale, basato su una sintassi di oggetti JavaScript. È comunemente utilizzato per trasmettere dati strutturati su una rete, come ad esempio tra un server e un client web. Un documento `JSON', invece, è una collezione di campi e valori organizzata in un formato strutturato.
|
||||
|
||||
MongoDB Query Language, o `MQL', è il linguaggio di query utilizzato per interagire con un database MongoDB. MQL è simile a SQL, ma è progettato per lavorare con documenti JSON e collezioni di documenti, piuttosto che con tabelle e righe. Consente agli utenti di recuperare documenti che corrispondono a criteri specifici, eseguire aggregazioni, apportare aggiornamenti ai documenti ed effettuare cancellazioni di documenti. La sintassi di MQL è progettata per essere semplice e intuitiva. Permette agli utenti di specificare condizioni utilizzando operatori come \$eq (uguale), \$ne (diverso), \$gt (maggiore di), \$lt (minore di) e molti altri. È possibile anche utilizzare operatori `bitwise' come \$and, \$or e \$not per creare query complesse.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=280pt]{images/mongodb-pipelines.png}
|
||||
\caption{MongoDB Aggregation Pipeline.}
|
||||
\end{figure}
|
||||
|
||||
Infine, il MongoDB Query Language Aggregation Framework, è un set di processi che trasforma i dati in strutture che possono essere utilizzate per l'analisi. L'aggregazione si basa su un concetto di `pipeline', in cui i documenti vengono passati attraverso una serie di fasi di trasformazione. Ogni fase della pipeline esegue un'operazione specifica sui documenti, come filtering, proiezione, ordinamento, raggruppamento e altro ancora. Le fasi della pipeline, possono essere quindi concatenate per creare query più complesse.\cite{10.5555/2544030} \cite{mongodbDocumentsMongoDB} \cite{knowiBestIntroduction}
|
||||
|
||||
\subsection{Python}
|
||||
|
||||
|
||||
|
||||
\section{Architettura del sistema di test}
|
||||
|
||||
Il nostro sistema di test è composto da:
|
||||
|
Reference in New Issue
Block a user