Sei sulla pagina 1di 6

*da approfondire

Comparazione DB
SQL vs NoSQL
SQL:
 Tabelle riferite le une alle altre
 Linguaggio SQL
 Schema fisso e predefinito per ogni record
 Dati divisi in righe (singolo record) e colonne (attributi)
 Dati su un singolo server (generalmente) -> https://www.marklogic.com/blog/relational-databases-
scale/
 Scalabilità incrementando l’hardware del server -> costoso
 Grandi performance in r/w su database piccoli/medi, migliorate con l’aggiunta di indici. Performance
peggiori con la crescita del database*
 Grande sicurezza e integrità per la sua propria struttura relazionale e le proprietà ACID (atomicity,
consistency, isolation, durability) intrinseche
 Prestazioni migliori su interrogazioni complesse

NoSQL:
 Orientato ai documenti -> gestiti come JSON (MongoDB)
 Dati come coppie di chiave (stringa)-valore
 Dati salvati come grafo
 Struttura variabile in base al documento
 Flessibile riguardo a tipi di dati e struttura/attributi -> si adatta facilmente ai cambiamenti
 Semplice modifica struttura dati -> Metodologie agili
 Facile da interrogare -> funzioni simil JavaScript
 Ottima scalabilità -> si condividono i file su più server, ognuno ne contiene solo una parte
 Ottima performance -> design distribuito, abbassa il carico di lavoro del sistema -> replica dei dati
 Fornisce accesso simultaneo a molti utenti
 Debole sicurezza*
 Prestazioni peggiorano su interrogazioni più complesse

Categorie di DB NoSQL:
 Key-Value
Dizionari che accedono ai diversi oggetti, a ciascuno dei quali è associata una chiave unica

(es. Redis)

 Document
Contiene dati semi-strutturati, ogni documento può avere una struttura diversa e contiene i propri
campi necessari (es. MongoDB)

 Graph

Organizza i dati come un grafo con nodi e relazioni, che mostrano le connessioni tra nodi. Utilizzato
soprattutto in social network o sistemi di prenotazioni (es. Neo4j)

 Column-oriented
Salvano e gestiscono i dati come tabelle, righe e colonne, con strutture variabili da riga a riga. Può
essere considerato come un database key-value a due dimensioni. (es. Cassandra)

DB Relazionali
Cos’è un DBMS?
È un tipo di software che permette all’utente di comunicare direttamente con la base di dati, applicazioni,
interfacce utente per ottenere dati e interpretarli. Contiene anche le regole chiave per la gestione e il
mantenimento del DB

MySQL
Pro:
 Installazione gratuita
 Semplice sintassi e utilizzo
 Compatibilità nel cloud
 Grande popolarità

Contro:

 Difficile scalabilità
 Supporto open source incompleto (ora software proprietario)
 Linguaggio non completamente conforme agli standard SQL

Caso d’uso migliore:

 Piccoli siti web


 Piccolo volume di dati

MariaDB
Pro:
 Open source fork di MySQL -> Massima sicurezza dei dati
 Funzionalità varie -> sharding e plugin di terze parti
 Performance ottime per un DB relazionale

Contro:
 Piccolo numero di professionisti specializzati (creato nel 2010)
 Possibili difficoltà di migrazione da MySQL a MariaDB (funzionalità rilasciate solo in versioni
commerciali)

Caso d’uso migliore:

 Piccoli siti web


 Piccolo volume di dati

Oracle
Pro:
 Grande supporto e documentazione
 Gestione di grandi collezioni di dati
Contro:
 Alto costo
 Necessità di hardware di alta qualità
 Difficoltà di apprendimento

Caso d’uso migliore:

 Grandi volumi di dati


 Software di grandi aziende

PostgreSQL
Pro:
 Ottima scalabilità verticale*
 Alta flessibilità (accetta vari tipi di dati e fornisce supporti a funzionalità NoSQL)
 Ben integrato con strumenti di terze parti
 Open-source

Contro:
 No chiara documentazione
 Assenza di strumenti di report

Caso d’uso migliore:

 Data analysis e warehousing

Microsoft SQL Server (MSSQL)


Pro:
 Varietà di versioni
 Ricca documentazione e buona assistenza
 Supporto database nel cloud

Contro:
 Alto costo
 Condizioni di licenza variabili

Caso d’uso migliore:

 Aziende con altre piattaforme/abbonamenti Microsoft

DB Non relazionali
MongoDB
Pro:
 Accesso e modifica dei dati semplice e veloce
 Grande scalabilità (orizzontale)*
 Ottima compatibilità con altri modelli di dati

Contro:
 Grande utilizzo di memoria
 Poca sicurezza (NoSQL)
 Difficile interpretazione da altri linguaggi (transizione SQL-NoSQL)

Caso d’uso migliore:

 Prodotti per analisi di dati o che necessitano di grande scalabilità (es. catalogo di prodotti)

Cassandra
Pro:
 Sicurezza dei dati (database distribuito->dati replicati in vari nodi)
 Facile scalabilità (aggiunta nodi/server)
 Flessibilità nel linguaggio (prende il meglio da SQL e NoSQL)

Contro:
 Bassa velocità in lettura
 Proprio linguaggio (CQL)

Caso d’uso migliore:

 Grandi volumi di dati (data center) e real time analytics

Fonti: https://cassandra.apache.org/

https://www.spiceworks.com/tech/big-data/articles/what-is-cassandra/

Redis
Pro:
 Incredibile velocità (i dati risiedono formattati su disco e vengono ricostruiti ogni volta in
memoria all’accensione)
 Enorme quantità di dati manipolabili in tempi ridotti
 Linguaggio snello
 Replica asincrona su server diversi
 Open source

Contro:
 Durabilità e coerenza dati
 Linguaggio “particolare”
 Dipendenza dalla memoria
 No supporto per linguaggi di interrogazione o join

Caso d’uso migliore:

 Prodotti per microservizi o IoT

Fonti: https://redis.io/
Neo4j
Pro:
 Gestione chiara e semplice delle relazioni (molto più semplice dei join relazionali)
 Strutture flessibili e agili
 Alta velocità (dipendente dal numero di connessioni e non di nodi)
 Open source

Contro:
 Linguaggio non banale
 Alta difficoltà nella scalabilità

Caso d’uso migliore:

 Applicazioni con transazioni real time, metadata e advanced analysis, gestione di processi di
business interni

Fonti: https://neo4j.com/developer/graph-database/

MongoDB vs MongoDB Atlas: Cosa sono e quali sono le differenze?

MongoDB: Il database per idee giganti. MongoDB salva dati in documenti JSON che possono variare in
struttura, fornendo uno schema dinamico e flessibile. MongoDB è stato progettato per dati con grande
disponibilità e scalabilità, fornisce anche funzioni di replicazione e auto-frammentazione.

MongoDB Atlas è un servizio di database cloud, creato e utilizzato dal team dietro lo sviluppo di MongoDB,
che gestisce autonomamente tutta la complessità di distribuzione e gestione della base di dati. Sfrutta a
pieno la flessibilità e la scalabilità di un database non relazionale e permette di sfruttare la semplicità e gli
automatismi di un servizio interamente gestito sulla piattaforma cloud preferita.

MongoDB appartiene alla categoria “Database”, mentre Atlas può essere classificato come “Hosting di
MongoDB”.

MongoDB è un tool open source, molto considerate su GitHub, tanto che aziende globali come Uber, Lyft e
Codecademy lo utilizzano.

Ottimo per chi non ha tempo o risorse per gestire tutta l’infrastruttura che necessita un cluster MongoDB.
Focus più sull’applicazione che sulla gestione del database.

 Come funzionano i cluster?

Fonte: https://stackshare.io/stackups/mongodb-vs-mongodb-atlas#:~:text=MongoDB%20was%20also
%20designed%20for,by%20the%20team%20behind%20MongoDB.

https://www.altexsoft.com/blog/business/comparing-database-management-systems-mysql-postgresql-
mssql-server-mongodb-elasticsearch-and-others/

https://www.oracle.com/database

https://www.mongodb.com/

https://www.ibm.com/cloud/blog/sql-vs-nosql

Potrebbero piacerti anche