Flutter vs. Dart
Molti confondono Flutter e Dart come se fossero la stessa cosa, soprattutto perché Dart e Flutter lavorano a stretto contatto nello sviluppo cross-platform. Entrambi sono essenziali per la costruzione di...
La creazione di un nuovo progetto include la scelta del database giusto per memorizzare i dati. Molti sviluppatori che conosco scelgono di default il database relazionale fin dall'inizio. Ma è la decisione migliore? Naturalmente, dipende da molti fattori. In questo articolo vorrei presentarvi altri tipi di database per facilitare le vostre scelte e aiutarvi a essere preparati nelle vostre imprese future.
Il tipo di database non è l'unico argomento da considerare. Ci sono molti altri aspetti da considerare, ad esempio: quanti utenti attivi può avere l'applicazione? Avete bisogno di una forte coerenza ovunque? La consistenza eventuale sarà sufficiente in alcuni casi? Ci sono così tante domande che non hanno una risposta diretta, perché "più ci si addentra nella questione, più diventa complicata". Per questo motivo, vi ricordiamo che questo articolo si concentra solo sui tipi di database.
Prendete una tazza di caffè e godetevi questa lettura.
All'inizio è bene sapere che esistono due tipi principali di database: relazionali (SQL) e non relazionali (NoSQL).
Esiste un altro tipo di database, oltre ai due già citati: il database in-memory. Non può essere classificato né come relazionale né come non relazionale perché si riferisce al luogo in cui i dati sono fisicamente memorizzati. Ogni database può essere memorizzato su disco o in memoria.
A mio parere, è il tipo di database più diffuso. Funziona bene con dati strutturali in cui si desidera mantenere relazioni tra i record. La struttura del database è descritta in uno schema.
I principali vantaggi riguardano le transazioni (aiutano a garantire l'integrità dei dati e a seguire le regole ACID) e la capacità di gestire molte query complesse.
È utile per conservare i dati che non cambiano strutturalmente molto spesso e che devono essere memorizzati in modo permanente, ad esempio:
Amazon Aurora, Microsoft Azzurro Database SQL, PostgreSQL, MySQL.
I database relazionali sono insufficienti per molte nuove applicazioni ed è necessario avere più di un database. Nella prossima parte dell'articolo, mi concentrerò sui database non relazionali.
Memorizza ogni valore di dati con una chiave unica. Significa che si accede ai dati tramite una singola chiave, proprio come si fa in un file hash mappa. A differenza dei database relazionali, non applica lo schema né le relazioni tra i record. La maggior parte di questi database non supporta normalmente le operazioni di aggiornamento. Per modificare i dati, è necessario sovrascrivere l'intero insieme esistente.
È utile per i dati che si desidera leggere/scrivere velocemente (ma che non vengono aggiornati molto spesso):
Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.
Memorizza collezioni di documenti. Ogni documento contiene campi con dati, che possono essere semplici valori o elementi complessi, come elenchi o collezioni di figli. È importante sapere che ogni documento può avere una struttura diversa, anche se rappresenta la stessa cosa (ogni documento è unico e si evolve nel tempo). Ad esempio, il primo documento del cliente contiene meno informazioni del secondo:
{
"Nome": "John",
"Cognome": "Fake",
"Moto:" [
{
"Modello": "BMW",
"Anno": 2020
}
]
}
{
"Nome": "Alex",
"Cognome": "Nolastname",
"Età": 15,
"Indirizzo": {
"Paese": "Polonia",
"Città": "Somewhere"
},
"Moto:" [
{
"Modello": "BMW",
"Anno": 2020
}
]
}
È utile per i dati che richiedono uno schema flessibile per un'elaborazione rapida:
Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.
Utilizza una struttura a grafo ed è costituita da due elementi: nodi e bordi. I nodi sono analoghi alle righe delle tabelle o ai documenti JSON. Gli edge sono relazioni tra i nodi e sono importanti quanto i nodi. Entrambi possono avere proprietà. Inoltre, i bordi possono avere una direzione definita di una relazione.
È utile quando i dati sono simili a un grafico, cioè le relazioni tra i dati sono dinamiche e cambiano nel tempo. Inoltre, è una buona scelta quando un'azienda o un tecnico squadra necessità di comprendere le relazioni all'interno dei propri dati. Alcuni esempi importanti sono:
Amazon Neptune, Neo4j, ArangoDB, Titan.
Memorizza i dati organizzati per tempo. In genere, accumula enormi quantità di dati in tempo reale. Viene utilizzato soprattutto per salvare i dati, anche se l'aggiornamento è molto raro. In genere, un timestamp viene utilizzato come chiave primaria e/o per ordinare i dati. Alcuni database consentono di includere tag di definizione come informazioni aggiuntive, come l'origine o il tipo di dati.
È utile memorizzare piccole quantità di dati allegati in sequenza in ordine cronologico, ad esempio in:
Azure Time Series Insights, Amazon Timestream, InfluxDB.
Fornisce un registro delle transazioni immutabile, trasparente e crittograficamente verificabile, di proprietà di un'autorità centrale. - Panoramica di QLDB di Amazon
Spieghiamo brevemente ogni parola chiave della citazione precedente:
È utile memorizzare una cronologia accurata, ad esempio registrando l'inserimento in sequenza di ogni modifica dei dati, come nel caso di:
Amazon QLDB
Non esiste una risposta semplice alla domanda posta nel titolo di questo articolo. L'unico modo per scegliere il database giusto è conoscere meglio i propri dati. Rispondete alla domanda: "Che tipo di dati genera la vostra applicazione?", e sarete in grado di fare le scelte giuste.
Inoltre, è necessario conoscere molto bene i requisiti aziendali e il dominio dell'applicazione. Dovete sapere come utilizzerete i dati, quali query invierete al database, quante volte conserverete, leggerete, aggiornerete o cancellerete i dati. Tutti questi aspetti sono importanti, ma non tutti gli sviluppatori prestano sufficiente attenzione a queste aree.
Pensate ai vostri dati nell'applicazione che sviluppate per migliorare/creare un software migliore. In generale, spero che conoscerete i vostri dati abbastanza bene da memorizzarli in un luogo dove saranno felici.
Per saperne di più:
Alcuni trucchi per velocizzare l'applicazione JavaScript
Modi per aumentare le prestazioni di Rails
Fatti e miti sulla collaborazione con un partner esterno per lo sviluppo del software