Scegliere il database giusto per un’applicazione è importante, soprattutto per le applicazioni backend che si interfacciano direttamente con il database. Esistono molte opzioni, ognuna adatta a determinati casi d’uso e con prezzi, velocità e opzioni di scalabilità differenti.

Python è tipicamente utilizzato in applicazioni che richiedono molti dati, proprio perché dispone di potenti librerie per la manipolazione dei dati, quindi il database che si sceglie di utilizzare per un’applicazione Python è importante.

Questo articolo confronta MariaDB con altre tecnologie di database come MySQL e PostgreSQL e spiega perché è un’ottima scelta quando si usa Python.

Che cosa rende MariaDB così perfetto per Python?

Grazie alle sue potenti librerie per la manipolazione dei dati e l’apprendimento automatico, Python è un linguaggio di programmazione molto diffuso tra i professionisti dei dati, soprattutto in data engineering e data science. Entrambi i campi hanno a che fare con grandi quantità di dati, che aumentano lo spazio di archiviazione necessario e le esigenze di memoria e potenza di elaborazione.

I costi delle licenze spesso aumentano di pari passo con le dimensioni dei dati, quindi ha senso utilizzare un database open-source. È inoltre possibile risparmiare sull’hardware. Poiché avrete il controllo totale del luogo in cui viene distribuita l’applicazione, potrete cercare le soluzioni più economiche nel cloud o on-premises.

Esistono molti database open-source, tra cui database relazionali, NoSQL e a grafo. I database relazionali sono generalmente ottimi per la struttura e la coerenza, mentre i database NoSQL, che consentono uno sviluppo rapido, sono progettati per essere più flessibili.

Sebbene Python funzioni perfettamente con i database NoSQL, i database relazionali sono più adatti all’analisi e all’elaborazione dei dati su larga scala, che sono usi comuni di Python.

Confrontiamo MariaDB con altri popolari database relazionali open-source.

MariaDB vs MySQL vs PostgreSQL

I database relazionali open-source più popolari sono MariaDB, SQLite, MySQL e PostgreSQL. Ognuno di essi ha una serie di funzionalità tecniche di base simili, ma MariaDB ha alcune caratteristiche uniche che lo rendono più adatto alle applicazioni Python.

Inoltre, MariaDB è open-source, quindi le sue funzionalità non dipendono da un’entità esterna come MySQL, di cui Oracle è proprietaria. Sebbene la comunità open-source possa ancora suggerire e aggiungere funzionalità a MySQL, è Oracle (che possiede un database concorrente) ad avere l’ultima parola.

D’altra parte, MariaDB è stato creato dopo l’acquisizione di MySQL da parte di Oracle per continuare un approccio allo sviluppo guidato dalla community. Di conseguenza, MariaDB ha un set di funzionalità più ricco, tra cui un maggior numero di motori di archiviazione che garantiscono prestazioni migliori per le query e la replica rispetto a MySQL. Queste migliori prestazioni sono importanti quando si lavora con grandi insiemi di dati.

I motivi per cui utilizzare MariaDB rispetto a PostgreSQL sono un po’ più sfumati, in quanto anche PostgreSQL è guidato dalla community. Tuttavia, PostgreSQL utilizza una propria licenza BSD, la PostgreSQL License, che è più permissiva della licenza GNU di MariaDB e permette agli utenti di creare estensioni closed-source.

Sebbene siano vantaggiose per l’utente che le crea, queste funzionalità non sono sempre utilizzate nel database PostgreSQL principale e gli sviluppatori possono addirittura far pagare l’utilizzo delle loro estensioni. Le licenze GNU di MariaDB e MySQL non consentono di privatizzare nuove funzionalità: sono tutte disponibili gratuitamente.

MariaDB e PostgreSQL sono i più ricchi di funzionalità. Tuttavia, MariaDB ha alcune caratteristiche comode per un backend Python. Ad esempio, MariaDB utilizza un unico linguaggio per interfacciarsi con tutti i suoi diversi motori di archiviazione: i sistemi OLAP e OLTP vengono controllati con la stessa sintassi, riducendo l’onere per gli sviluppatori.

Il vostro backend Python può scrivere dati di tipo transazionale a MariaDB, che può poi copiare tali dati su un motore di archiviazione più adatto alle query analitiche. Gli sviluppatori possono scrivere query analitiche sulla replica utilizzando la stessa sintassi per migliorare le prestazioni.

MariaDB ha anche introdotto di recente la formattazione f-String-like per le stringhe, simile a quella di Python. Questo evita agli sviluppatori che utilizzano MariaDB con Python di passare mentalmente da un linguaggio all’altro.

Connettore MariaDB Python

Prima del 2020, i programmatori Python si collegavano a MariaDB attraverso il pacchetto MySQL Python. Questo era possibile perché MariaDB è un fork di MySQL, ma ciò implicava che le connessioni a MariaDB si comportavano allo stesso modo di MySQL.

Nel 2020 è stato rilasciato un connettore nativo per MariaDB che elimina la dipendenza da MySQL, dando maggiore controllo alla comunità di MariaDB. È possibile installare il connettore con pip, il gestore di pacchetti di Python, e utilizzarlo per tutti i casi di utilizzo CRUD più comuni.

Tutte le dichiarazioni sono gestite attraverso un oggetto cursore. Per impostazione predefinita, il cursore di MariaDB accetta le query come istruzioni preparate, in modo da poter sanificare qualsiasi parte dinamica della query. Questo è più sicuro rispetto alla formattazione delle stringhe per creare le query, che rende la vostra applicazione vulnerabile agli attacchi di SQL injection.

Come funziona il connettore

Il connettore è semplice da usare. Per prima cosa, importate la libreria del connettore MariaDB nella vostra applicazione e utilizzate la seguente funzione per connettervi al vostro server di database MariaDB:

import mariadb

try:
    connection = mariadb.connect(
        user=username,
        password=password,
        host=mariadb_host,
        port=3306,
        database="sales"

    )
except mariadb.Error as err:
    print(f"An error occurred whilst connecting to MariaDB: {err}")

Una volta connesso, tutte le query vengono eseguite attraverso un oggetto cursore. Ottenete l’oggetto cursore e poi usatelo per inviare le query.

cursor = conn.cursor() 

Per inviare una query come istruzione preparata, usate un punto interrogativo come segnaposto nel testo della query e passate i valori richiesti come tupla.

ur.execute( "SELECT * FROM sales WHERE sale_date >= ? and price > ?", (sale_date_val, price_val)) 

I valori di input della tupla sostituiscono i punti interrogativi in ordine da sinistra a destra. Questi valori di input sono anche sanificati per evitare l’iniezione SQL. La protezione integrata dall’iniezione SQL è vantaggiosa per un linguaggio come Python, progettato per i programmatori principianti.

Python e MariaDB per WordPress

Un altro vantaggio dell’utilizzo di MariaDB come backend per un’applicazione Python è la facilità di collegare il database a un frontend WordPress, soprattutto se si utilizza Kinsta.

Kinsta supporta MariaDB come database di backend, rendendoli immediatamente compatibili. Il vostro sito WordPress può accedere facilmente ai set di dati elaborati in Python. Ad esempio, potrete eseguire delle analisi in Python, memorizzare i risultati in MariaDB e poi visualizzarli sotto forma di grafico su una pagina di WordPress.

Kinsta fornisce anche una piattaforma di sviluppo chiamata DevKinsta per sviluppare una soluzione end-to-end. Con DevKinsta, è possibile usare il proprio computer locale per creare un sito WordPress con un backend MariaDB, che può poi essere inviato a Kinsta una volta pronto per la pubblicazione. Questa integrazione rende semplice la creazione di un sito con un database MariaDB: il vostro sito potrà essere attivo con pochi clic.

Riepilogo

Diversi database relazionali open-source, tra cui MariaDB, MySQL e Postgres, possono essere utilizzati come backend di Python. Tuttavia, MariaDB è l’opzione più flessibile e ricca di funzionalità, grazie alla sua natura open-source.

Quando si lavora con grandi insiemi di dati, MariaDB offre molti motori di archiviazione, il che lo rende più veloce delle alternative, e supporta diversi casi d’uso, dall’elaborazione transazionale alle query analitiche. La flessibilità, la velocità e l’integrazione nativa con Python grazie al connettore MariaDB Python lo rendono un’ottima scelta come backend per le applicazioni Python che elaborano grandi insiemi di dati.

Inoltre, MariaDB può essere collegato direttamente a un frontend di WordPress, rendendo i vostri dataset accessibili al vostro sito web. Il supporto di MariaDB di Kinsta rende questa integrazione più agevole. Con DevKinsta, potrete configurare il vostro sito WordPress per utilizzare MariaDB sul vostro computer locale prima di distribuire la soluzione tramite Kinsta.

Provate subito il nostro Hosting di Database gratis.

Jeremy Holcombe Kinsta

Content & Marketing Editor presso Kinsta, web developer di WordPress e content writer. Al di fuori di tutto ciò che riguarda WordPress, mi piacciono la spiaggia, il golf e il cinema. Ho anche i problemi di tutte le persone più alte della media ;).