diff --git a/Biblio.bib b/Biblio.bib index 3148e1c..b231aaf 100644 --- a/Biblio.bib +++ b/Biblio.bib @@ -1,4 +1,13 @@ -@misc{acestreamAnnouncementStream, +@book{10.5555/2544030, + author = {Chodorow, Kristina}, + title = {MongoDB: The Definitive Guide}, + year = {2013}, + isbn = {1449344682}, + publisher = {O'Reilly Media, Inc.}, + abstract = {Manage the huMongous amount of data collected through your web application with MongoDb. This authoritative introductionwritten by a core contributor to the projectshows you the many advantages of using document-oriented databases, and demonstrates how this reliable, high-performance system allows for almost infinite horizontal scalability. This updated second edition provides guidance for database developers, advanced configuration for system administrators, and an overview of the concepts and use cases for other people on your project. Ideal for NoSql newcomers and experienced MongoDb users alike, this guide provides numerous real-world schema design examples.Get started with MongoDb core concepts and vocabulary Perform basic write operations at different levels of safety and speed Create complex queries, with options for limiting, skipping, and sorting results Design an application that works well with MongoDb Aggregate data, including counting, finding distinct values, grouping documents, and using MapReduce Gather and interpret statistics about your collections and databases Set up replica sets and automatic failover in MongoDb Use sharding to scale horizontally, and learn how it impacts applications Delve into monitoring, security and authentication, backup/restore, and other administrative tasks} +} + + @misc{acestreamAnnouncementStream, author = {}, title = {{A}nnouncement! {A}{C}{E} {S}tream; {N}ew era of {T}{V} and {I}nternet broadcasting --- oldforum.acestream.media}, url = {http://oldforum.acestream.media/index.php?topic=1479.0}, @@ -14,7 +23,7 @@ note = {[Accessed 04-Apr-2023]} } - @misc{ai4businessDataTroppo, +@misc{ai4businessDataTroppo, author = {Federica Maria Rita Livelli}, title = {{A}{I} e big data, troppo potere nelle mani di pochi: il dibattito - {A}{I}4{B}usiness --- ai4business.it}, howpublished = {\url{https://www.ai4business.it/intelligenza-artificiale/ai-e-big-data-favoriscono-la-concentrazione-del-potere/}}, @@ -193,6 +202,22 @@ note = {[Accessed 18-03-2025]} } +@misc{knowiBestIntroduction, + author = {}, + title = {{T}he {B}est {I}ntroduction to {M}ongo{D}{B} {Q}uery {L}anguage ({M}{Q}{L}) --- knowi.com}, + howpublished = {\url{https://www.knowi.com/blog/the-best-introduction-to-mongodb-query-language-mql/}}, + year = {}, + note = {[Accessed 19-03-2025]} +} + +@misc{mongodbDocumentsMongoDB, + author = {}, + title = {{D}ocuments - {M}ongo{D}{B} {M}anual v8.0 - {M}ongo{D}{B} {D}ocs --- mongodb.com}, + howpublished = {\url{https://www.mongodb.com/docs/manual/core/document/}}, + year = {}, + note = {[Accessed 19-03-2025]} +} + @article{Multi-CDN:TowardsPrivacyinContentDeliveryNetworks, doi = {10.1109/tdsc.2018.2833110}, url = {https://doi.org/10.1109/tdsc.2018.2833110}, @@ -262,7 +287,7 @@ language = {it-IT} } -@phdthesis{ResearchBasedDataRightsManagementUsingBlockchainOverEthereumNetwork, + @phdthesis{ResearchBasedDataRightsManagementUsingBlockchainOverEthereumNetwork, author = {Naz, Muqaddas and Javaid, Nadeem and Iqbal, Sohail}, year = {2019}, month = {09}, @@ -293,7 +318,7 @@ note = {[Accessed 02-Apr-2023]} } - @misc{tailscaleTraversalWorks, +@misc{tailscaleTraversalWorks, author = {}, title = {{H}ow {N}{A}{T} traversal works --- tailscale.com}, howpublished = {\url{https://tailscale.com/blog/how-nat-traversal-works}}, diff --git a/Tesi.tex b/Tesi.tex index 3578a66..ac56d9c 100644 --- a/Tesi.tex +++ b/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: diff --git a/images/Ace_Stream_logo.svg b/images/Ace_Stream_logo.svg deleted file mode 100644 index dec3ba0..0000000 --- a/images/Ace_Stream_logo.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/images/crud-annotated-document.png b/images/crud-annotated-document.png new file mode 100644 index 0000000..2deac97 Binary files /dev/null and b/images/crud-annotated-document.png differ diff --git a/images/mongodb-pipelines.png b/images/mongodb-pipelines.png new file mode 100644 index 0000000..ba89be3 Binary files /dev/null and b/images/mongodb-pipelines.png differ diff --git a/images/tahoe-LAFS.logo.svg b/images/tahoe-LAFS.logo.svg deleted file mode 100644 index d8a8b98..0000000 --- a/images/tahoe-LAFS.logo.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -