Introduzione
Questo checkpoint è pensato per aiutarti a valutare ciò che hai appreso dai nostri articoli introduttivi sui Database, dove abbiamo definito i database e presentato i comuni sistemi di gestione dei database. Puoi utilizzare questo checkpoint per testare le tue conoscenze su questi argomenti, rivedere i termini chiave e i comandi, e trovare risorse per continuare il tuo apprendimento.
A database is any logically modeled collection of information or data. When people refer to a “database” in the context of websites, applications, and the cloud, they often mean a computer program that manages data stored on a computer. These programs, known formally as database management systems (DBMS), can be combined with other programs (like a web server and a front-end framework) to form production-ready applications.
In questo checkpoint, troverai due sezioni che sintetizzano le idee centrali degli articoli introduttivi: una breve spiegazione di cosa sia un database (con sottosezioni su database relazionali e non relazionali) e una sezione su come interagire con il tuo DBMS attraverso la riga di comando o le interfacce grafiche. In ciascuna di queste sezioni, ci sono componenti interattive per aiutarti a testare le tue conoscenze. Alla fine di questo checkpoint, troverai opportunità per continuare a imparare sui sistemi di gestione dei database, sui database completamente gestiti e sulla creazione delle tue app con database di backend.
Risorse
- Un’introduzione ai Database
- Comprendere i vincoli SQL
- SQLite vs MySQL vs PostgreSQL: Un confronto dei sistemi di gestione di database relazionali
- A Comparison of NoSQL Database Management Systems and Models
- Come installare e proteggere Redis su Ubuntu 22.04
- Come eseguire operazioni CRUD in MongoDB
Cos’è un database?
A database is any logically modeled collection of information, and a database management system is what most people think of when they think “I know what a database is!” You use a database management system (DBMS), which is a computer program designed to interact with the information, to access and manipulate the information stored in your database.
Termini da conoscere
Definire i seguenti termini, quindi utilizzare la funzione a discesa per controllare il lavoro.
Replication
Replicazione si riferisce alla pratica di sincronizzare i dati su più database separati. Questa pratica fornisce ridondanza, migliora la scalabilità e riduce le latenze di lettura.
Sharding
Sharding del database è una pratica architettonica di separare i dati in pezzi chiamati shard logici che sono distribuiti su nodi separati chiamati shard fisici. Per saperne di più su questa pratica, è possibile consultare il nostro articolo su Comprendere lo sharding del database.
Ci sono tre modelli relazionali comuni utilizzati per i sistemi di database:
Relational Model | Relationship |
---|---|
One-to-one | In a one-to-one relationship, rows in one table (sometimes called the parent table) are related to one and only one row in another table (sometimes called the child table). |
One-to-many | In a one-to-many relationship, a row in the initial table (sometimes called the parent table) can relate to multiple rows in another table (sometimes called the child table). |
Many-to-many | In a many-to-many relationship, rows in one table can related to multiple rows in the other table, and vice versa. While these tables may also be referred to as parent and child tables, the multidirectional relationship does not necessitate a hierarchical relationship. |
Questi modelli relazionali strutturano come i database possono relazionarsi tra loro.
Ci sono due categorie per la gestione dei database: database relazionali e database non relazionali. Nelle seguenti sezioni, imparerai i tipi e i comuni DBMS per quei tipi.
Database Relazionali
A relational database organizes information through relations, which you might recognize as a table.
Verifica te stesso
What are the elements that make up a relation?
A relation is a set of tuples, or rows in a table, with each tuple sharing a set of attributes, or columns. A tuple is a unique instance of what type of data the table holds, whereas an attribute specifies the data type for what is allowed in the column.
What is the difference between a primary key and a foreign key?
A primary key refers to the column that will uniquely identify each row in a relational table, whereas a foreign key is a copy of the primary key inserted into a second relation in order to create a relationship between two tables.
Quando le informazioni vengono memorizzate in un database e organizzate nella relazione, possono essere accessibili tramite query che effettuano una richiesta strutturata di informazioni. Molti database relazionali utilizzano il Linguaggio di Query Strutturato, comunemente indicato come SQL, per gestire le query al database.
È possibile utilizzare vincoli SQL durante la progettazione del database. Questi vincoli impongono restrizioni su quali modifiche possono essere apportate ai dati nella tabella.
Verifica te stesso
Why might you impose constraints on your database?
- Regole aziendali: I vincoli consentono agli amministratori di database di garantire che il database sia conforme alle politiche e alle procedure definite che soddisfano le esigenze e le aspettative aziendali.
- Integrità dei dati: L’inserimento dei dati è soggetto a errori di input, quindi i vincoli forniscono parametri aggiuntivi per garantire dati corretti.
What are the five constraints that are formally defined by the SQL standard?
PRIMARY KEY
richiede che ogni voce nella colonna specificata sia sia unica che nonNULL
, e ti consente di utilizzare quella colonna per identificare ogni singola riga nella tabella.FOREIGN KEY
richiede che ogni voce nella colonna specificata debba già esistere in una colonna specifica di un’altra tabella.UNIQUE
vieta l’aggiunta di valori duplicati nella colonna specificata.CHECK
definisce un requisito per una colonna, noto come predicato, che ogni valore inserito deve soddisfare.NOT NULL
vieta l’aggiunta di valoriNULL
nella colonna specificata.
Alcuni sistemi di gestione di basi di dati relazionali open-source costruiti con SQL includono MySQL, MariaDB, PostgreSQL e SQLite. Continua a imparare sui database relazionali con Understanding Relational Databases e rivedi i comuni sistemi di gestione di basi di dati relazionali con SQLite vs MySQL vs PostgreSQL: A Comparison Of Relational Database Management Systems.
Relational Database Terms To Know
Attraverso ciascuno degli articoli, hai sviluppato un vocabolario sui database relazionali. Definisci ciascuno dei seguenti termini, quindi utilizza la funzione a discesa per verificare il tuo lavoro.
Constraint
A constraint is any rule applied to a column or table that limits what data can be entered into it.
Data Types
A data type dictates what kind of entries are allowed in a column.
Object Database
Un database di oggetti utilizza strutture orientate agli oggetti per le informazioni. PostgreSQL è un database relazionale che incorpora alcune funzionalità dei database di oggetti.
Serverless
A serverless database, like SQLite, allows any process that accesses the database to write and write to the database disk file directly. This behavior is in contrast to the interprocess communication that is implemented by other relational database engines.
Puoi scrivere una funzione senza server per esercitarti nell’esecuzione di un’applicazione senza server.
Signed and Unsigned Integers
Alcuni tipi di dati numerici sono firmati, il che significa che possono rappresentare sia numeri positivi che negativi, mentre altri sono non firmati e possono rappresentare solo il numero positivo.
Ora che conosci i database relazionali, puoi capire il loro controparte: i database non relazionali.
Database non relazionali e NoSQL
Se hai bisogno di memorizzare dati in modo non strutturato, un database non relazionale fornisce un modello alternativo. Poiché un database non relazionale non utilizza SQL, a volte è chiamato database NoSQL.
Ci sono diverse opzioni disponibili per un database non relazionale, come i negozio chiave-valore, i database columnari, i document store e i database grafici. Ciascuno di questi modelli si occupa di possibili problemi nell’uso di un database relazionale, tra cui la scalabilità orizzontale, la coerenza finale tra i nodi e la gestione dei dati non strutturati.
Termini relativi ai database non relazionali da conoscere
Ciascuno dei modelli di database non relazionali ha caratteristiche specifiche che lo rendono unico. Definisci il tipo di modello e poi usa la funzione a tendina per verificare il tuo lavoro.
Key-value databases
I database chiave-valore memorizzano e gestiscono array associativi che contengono coppie chiave-valore, dove la chiave è un identificatore univoco che recupera il valore associato.
Columnar databases
I database columnari sono orientati alle colonne, il che significa che memorizzano i dati per colonne. I dati appaiono in ordine di record in cui la prima voce in una colonna è correlata alla prima voce nelle altre colonne.
Document-oriented databases
Conosciuti anche come document store, questi sono database NoSQL che memorizzano i dati sotto forma di documenti. Ogni documento contiene metadati per strutturare i dati e si può utilizzare un’API o un linguaggio di interrogazione per recuperare i documenti.
Graph databases
I database grafici sono una sottocategoria dei document store e questo tipo di database mette in evidenza le relazioni tra i documenti.
Puoi verificare le tue conoscenze su quali popolari sistemi di gestione dei database non relazionali si allineano al tipo di modello di database con la seguente funzione a tendina interattiva.
Verifica te stesso
Abbinare il seguente sistema di gestione di database al suo modello di database operativo.
- Redis
- Couchbase
- Cassandra
- OrientDB
- MongoDB
- Neo4j
- MemcacheDB
- Apache HBase
Compare your answers using the dropdown feature.
Operational Database Model | Example DBMSs |
---|---|
Key-value store | Redis, MemcacheDB |
Columnar database | Cassandra, Apache HBase |
Document store | MongoDB, Couchbase |
Graph database | OrientDB, Neo4j |
Indipendentemente dal fatto che si stia utilizzando un database relazionale o non relazionale, è probabile che si stia costruendo un’applicazione che include un sistema di gestione di database come parte del suo stack.
Costruzione di uno Stack di Applicazioni
Il sistema di gestione del database viene più spesso implementato come un aspetto essenziale di un’applicazione più ampia. Queste applicazioni vengono talvolta chiamate stack, come ad esempio lo stack LAMP o lo stack Elastic.
Controlla te stesso
Usa la funzione a discesa per ottenere le risposte.
What makes up a LAMP stack?
LAMP è un acronimo per la tecnologia che costituisce questo stack:
- Linux sistema operativo
- Apache server web
- MySQL database
- PHP per l’elaborazione dei contenuti dinamici
Ci sono altre opzioni L*MP, come lo stack LEMP in cui E sta per Nginx o lo stack LOMP in cui O sta per OpenLiteSpeed.
What makes up Elastic stack?
L’Elastic stack è costruito attorno a Elasticsearch, che è sia un motore di ricerca che un database orientato ai documenti.
Se si configura un server remoto con il proprio stack di applicazioni, si consiglia di crittografare i dati per proteggere il sistema da interferenze maligne. È possibile crittografare le comunicazioni utilizzando la sicurezza a livello di trasporto (TLS), che convertirà i dati in movimento in un testo cifrato che può essere decifrato solo dal giusto algoritmo. I dati statici memorizzati nel database rimarranno non crittografati a meno che non si utilizzi un DBMS che offre la crittografia dei dati a riposo.
Per gestire il database, è possibile farlo direttamente dalla riga di comando o tramite un’interfaccia utente grafica.
Utilizzo della riga di comando con il proprio DBMS
Hai iniziato a utilizzare la riga di comando di Linux con i nostri articoli introduttivi sui server cloud e hai configurato un server web con gli articoli introduttivi sulle soluzioni per server web. Attraverso gli articoli sui database, hai continuato a sviluppare familiarità con la riga di comando utilizzando comandi come:
grep
per cercare dati di testo normale per un testo o stringa specifica.netstat
per verificare la configurazione di rete con i flag-lnp
per mostrare i socket in ascolto (-l
), gli indirizzi numerici (-n
) e il PID e il nome del programma per ogni socket (-p
).systemctl
per controllare il serviziosystemd
.
Hai anche sperimentato con gli strumenti della riga di comando forniti dai diversi sistemi di gestione di database per interagire con l’installazione del database. Lo strumento CLI ti consente di eseguire comandi sul server del database e lavorare in modo interattivo dalla finestra del terminale. La seguente tabella elenca i comuni DBMS e il loro strumento CLI associato:
DBMS | CLI tool |
---|---|
MongoDB | MongoDB shell |
MySQL | mysql |
PostgreSQL | psql |
Redis | redis-cli |
Ci sono anche client di linea di comando di terze parti per alcuni sistemi di gestione dei database, come Redli per Redis.
Quando si utilizza la linea di comando per lavorare con il sistema di database, si apre un prompt specifico del database, tipicamente associato al proprio account utente per quel sistema di gestione dei database. Ad esempio, se si aprisse un prompt del server MySQL e si effettuasse l’accesso con il proprio utente MySQL, si visualizzerebbe un prompt del database come segue:
-
Ogni client di linea di comando del DBMS ha la propria sintassi per i comandi.
Dopo aver appreso le vincoli SQL, è possibile utilizzare tali vincoli con un database MySQL eseguendo questi comandi:
CREATE DATABASE
per creare un database.USE
per selezionare un database.CREATE TABLE
per creare una tabella con le specifiche per le colonne e i vincoli applicati a tali colonne.ALTER TABLE
conADD
per aggiungere vincoli a una tabella esistente e conDROP CONSTRAINT
per eliminare un vincolo da una tabella esistente.
È possibile continuare a sviluppare le proprie competenze nel database MySQL con la serie Come utilizzare SQL.
Con Redis, hai installato e protetto Redis con i seguenti comandi e sperimentato con la rinomina dei comandi:
auth
per autenticare i clienti per l’accesso al database.exit
equit
per uscire dal prompt Redis-CLI.get
per recuperare il valore della chiave.ping
per testare la connettività.set
per impostare le chiavi.
E, nella shell di MongoDB, hai utilizzato JSON binario (noto come BSON) per eseguire operazioni CRUD con i seguenti metodi di filtraggio delle query:
count
per verificare il conteggio degli oggetti in una collezione specifica.deleteOne
per rimuovere il primo documento che corrisponde alle specifiche.deleteMany
per rimuovere più oggetti contemporaneamente.find
per recuperare documenti nel tuo database MongoDB con la funzione di stampapretty
per rendere le righe più leggibili.insertOne
per creare singoli documenti.insertMany
per inserire più documenti in un’operazione o collezione singola.ObjectId
per memorizzare identificatori di oggetti.updateOne
per aggiornare un singolo documento con chiavi specificate.updateMany
per aggiornare ogni documento in una raccolta che corrisponde ai filtri specificati.
Probabilmente utilizzerai le operazioni CRUD per interagire con i tuoi dati su molti sistemi di gestione di database.
Controlla te stesso
What does CRUD stand for?
CRUD è un acronimo utilizzato per descrivere le seguenti quattro operazioni fondamentali sui dati:
- Creare
- Read
- Update
- Deliminare
Anche se potresti scegliere di gestire il tuo database direttamente dalla riga di comando, puoi anche utilizzare un’interfaccia utente grafica (GUI) per molti comuni sistemi di gestione di database.
Utilizzando un’interfaccia utente grafica
Esistono molti strumenti GUI diversi per lavorare con il tuo database se decidi di non utilizzare lo strumento CLI progettato.
Per gestire l’amministrazione di MySQL sul web, puoi utilizzare phpMyAdmin installando e proteggendo phpMyAdmin su molti sistemi operativi diversi o connettendoti in remoto a un database MySQL gestito. Puoi anche utilizzare MySQL Workbench per connetterti a un server MySQL in remoto.
Simile a phpMyAdmin, pgAdmin è un’interfaccia web per la gestione di PostgreSQL. Puoi installare e configurare pgAdmin in modalità server o usarlo per pianificare backup automatici con pgAgent.
Per MongoDB, potresti considerare l’utilizzo di MongoDB Compass come interfaccia grafica per accedere al tuo database.
Che tu scelga di utilizzare la riga di comando o un’interfaccia grafica per gestire il tuo database, ora hai gli strumenti necessari per gestire il sistema del tuo database.
Cosa succede dopo?
Con una migliore comprensione dei database e dei popolari sistemi di gestione di database, puoi memorizzare e gestire i tuoi dati o costruire un’applicazione che utilizzi un sistema di database.
Per saperne di più sul lavoro con sistemi di gestione di database specifici, puoi seguire la nostra serie Come Utilizzare SQL e Come Gestire i Dati con MongoDB. Se incontri problemi con MySQL, puoi risolverli con Come Risolvere i Problemi in MySQL. Per i problemi relativi a MongoDB, valuta come i tuoi problemi siano correlati a Come Eseguire Operazioni CRUD in MongoDB.
Quando sei pronto a costruire le tue app con database, prova a seguire questi tutorial per le configurazioni comuni dello stack delle applicazioni:
- Come Installare Linux, Apache, MySQL, PHP (stack LAMP) su Ubuntu 22.04
- Come Installare Linux, Nginx, MySQL, PHP (stack LEMP) su Ubuntu 22.04
- Come installare Linux, OpenLiteSpeed, MariaDB, PHP (stack LOMP) su Ubuntu 22.04
Se preferisci creare le tue app con database completamente gestiti, dai un’occhiata alle offerte di DigitalOcean per cluster MongoDB gestiti, hosting MySQL o PostgreSQL, e Redis gestito. Puoi anche scegliere un’opzione di database popolare per un’installazione in un solo clic nel Marketplace di DigitalOcean.
Con la tua nuova conoscenza dei database, puoi anche continuare il tuo percorso nel cloud con container e sicurezza. Se non lo hai ancora fatto, dai un’occhiata ai nostri articoli introduttivi su server cloud e server web.
Source:
https://www.digitalocean.com/community/tutorials/databases-checkpoint