Mysql
 sql >> Database >  >> RDS >> Mysql

Confronto dell'amministrazione di base tra Oracle, MSSQL, MySQL, PostgreSQL

L'introduzione di DevOps nelle organizzazioni ha cambiato il processo di sviluppo e ha introdotto anche alcune nuove sfide. Inoltre, gli sviluppatori e i team DevOps, insieme ai linguaggi di programmazione scelti, hanno anche i loro sistemi di database preferiti.

Il ciclo di vita del prodotto si riduce ogni anno, quindi gli sviluppatori vogliono essere in grado di sviluppare rapidamente, utilizzando le tecnologie che conoscono meglio.

Avere più backend di database RDBMS significa che la tua organizzazione diventerà più agile dal punto di vista dello sviluppo, ma impone anche ulteriori conoscenze ai team operativi.

Estendere la tua infrastruttura da uno a più database implica anche monitorarli, gestirli e ridimensionarli.

Poiché ogni back-end di archiviazione eccelle in diversi casi d'uso, ciò significa anche che devi reinventare la ruota per ognuno di essi.

Conoscere le somiglianze e le differenze chiave ti aiuterà a immergerti in diversi tipi di RDBMS.

In questo articolo analizzeremo i seguenti punti:

  • Una breve introduzione alla piattaforma
    • Oracle, MSSQL, MySQL, PostgreSQL
  • Supporto della piattaforma
  • Processo di installazione
  • Accesso al database
  • Procedura di backup
  • Controllo dell'esecuzione delle query
  • Sicurezza
  • Opzioni di replica
  • Supporto della comunità

Una breve introduzione alla piattaforma

PostgreSQL è da molti riconosciuto come il database open source più avanzato al mondo. È un sistema di database completamente open source rilasciato con una propria licenza, la licenza PostgreSQL, paragonabile alle licenze MIT o BSD. La comunità di PostgreSQL è attiva e migliora continuamente le funzionalità esistenti e nuove. Secondo la classifica di popolarità dei motori DB, PostgreSQL è stato il DBMS dell'anno 2017 e 2018. La popolarità dei motori DB mostra che la tendenza non è cambiata nel corso degli anni.

Un fatto interessante è che PostgreSQL non ha supportato SQL fino al 1994. Il linguaggio QUEL è stato utilizzato per interrogare i dati da esso. Il supporto SQL è stato aggiunto in seguito.

PostgreSQL ha molte funzionalità avanzate offerte da altri sistemi di gestione di database aziendali, come viste, procedure archiviate, indici e trigger oltre alle funzionalità di chiave primaria, chiave esterna e atomicità.

PostgreSQL può essere esteso dagli utenti modificando funzionalità esistenti, aggiungendo nuove funzionalità e distribuito liberamente in quanto open-source. Funziona sulle principali piattaforme come UNIX, MacOS, Windows e Linux ecc. Supporta video, testo, audio, immagini, interfacce di programmazione per diversi linguaggi. L'elenco dei linguaggi supportati include C/C++, Java, Python, Perl ecc.

Oracolo è uno dei maggiori vendor di RDBMS (Relational Database Management System) nel mondo IT. È noto come database Oracle, Oracle DB o Oracle commercializzato da Oracle.

Oracle Database viene utilizzato da molte aziende del settore IT per l'elaborazione di transazioni, analisi aziendali, applicazioni di business intelligence, ecc.

Oracle ha una storia lunga e molto interessante:

Il 16 giugno 1977 la Software Development Laboratories (SDL) è stata creata a Santa Clara, in California, da Larry Ellison, Bob Miner e Ed Oates. Nel 1977 Oracle prende il nome dal nome in codice del progetto CIA e il primo RDBMS Oracle commercializzato viene mostrato al mondo nel 1979.

Il database Oracle è disponibile in diverse edizioni come Enterprise Edition Standard edition, Express Edition e Oracle Lite. Il più grande concorrente per il database Oracle è il server Microsoft SQL.

Microsoft SQL Server è un RDBMS molto popolare con licenze restrittive e costi di proprietà modesti se il database è di dimensioni significative o viene utilizzato da un numero significativo di clienti.

È una delle tre tecnologie di database leader di mercato, insieme a Oracle Database e IBM DB2.

Fornisce un'interfaccia molto intuitiva e facile da imparare, che ha portato a un'ampia base di utenti installati.

Come altri software RDBMS, Microsoft SQL Server si basa su SQL, un linguaggio di programmazione standardizzato che gli amministratori di database (DBA) e altri professionisti IT utilizzano per gestire i database e interrogare i dati in essi contenuti. SQL Server è legato a Transact-SQL (T-SQL), un'implementazione di SQL di Microsoft che aggiunge una serie di estensioni di programmazione proprietarie al linguaggio standard.

MySQL

MySQL è un sistema di gestione di database relazionali open source supportato da Oracle basato su SQL.

Concepito originariamente dalla società svedese MySQL AB, MySQL è stato acquisito da Sun Microsystems nel 2008 e poi da Oracle quando ha acquistato Sun nel 2010.

Gli sviluppatori possono utilizzare MySQL sotto la GNU General Public License (GPL). La versione Enterprise include supporto e funzionalità aggiuntive per la sicurezza e l'elevata disponibilità.

È il secondo database più popolare al mondo secondo la classifica di db-engines e probabilmente il database backend più presente sul pianeta poiché gestisce la maggior parte dei servizi Internet in tutto il mondo. MySQL funziona praticamente su tutte le piattaforme, inclusi Linux, UNIX e Windows.

MySQL è un componente importante di uno stack aziendale open source chiamato LAMP.

LAMP è una piattaforma di sviluppo web che utilizza Linux come sistema operativo, Apache come server web, MySQL come sistema di gestione di database relazionali e PHP come linguaggio di scripting orientato agli oggetti.

Supporto della piattaforma

Oracolo

La versione più popolare di Oracle DB, Oracle 12c è un sistema RDBMS veramente aziendale che è supportato su una varietà di sistemi operativi e piattaforme. Oracle domina il mondo dei database in parte perché funziona su dozzine di piattaforme, da Mainframe, Sparc, Mac a Intel. L'elenco include le seguenti combinazioni di sistemi operativi e architetture:Linux su x86-64 (sono supportate solo le distribuzioni Red Hat Enterprise Linux, Oracle Linux e SUSE) Microsoft Windows su x86-64. Oracle Solaris su SPARC e x86-64. IBM AIX sui sistemi POWER. Linux su IBM zEnterprise Systems HP-UX su Itanium.

MSSQL

Essendo un prodotto Microsoft, SQL è stato progettato per essere molto compatibile con il sistema operativo Windows. Il 16 novembre 2016, Microsoft ha annunciato l'inizio di una nuova storia:SQL Server è ora supportato su Linux e Docker. L'inferno si congela!

MySQL

MYSQL esegue un'esecuzione più fluida su tutte le piattaforme come Microsoft, UNIX, Linux, Mac ecc.

PostgreSQL

In generale, ci si può aspettare che PostgreSQL funzioni su varie (anche esotiche) architetture CPU e sistemi operativi.

Include architetture CPU come x86, x86_64, IA64, PowerPC, PowerPC 64, S/390, S/390x, Sparc, Sparc 64, Alpha, ARM, MIPS, MIPSEL, M68K e PA-RISC. Spesso è possibile costruire su un tipo di CPU non supportato configurando con --disable-spinlocks, ma le prestazioni saranno scarse.

PostgreSQL può funzionare sui seguenti sistemi operativi:Linux (tutte le distribuzioni recenti), Windows (Win2000 SP4 e successivi), FreeBSD, OpenBSD, NetBSD, Mac OS X, AIX, HP/UX, IRIX, Solaris, Tru64 Unix, e UnixWare.

Processo di installazione

Oracolo

Da tutti e quattro i sistemi di database presentati, Oracle ha i requisiti di sistema più complessi che derivano da un complesso processo di installazione. Su entrambe le piattaforme basate su Windows e Linux, Oracle utilizza uno strumento Oracle Universal Installer (OUI) dedicato come processo di installazione principale. L'OUI viene utilizzato per installare il software Oracle Database. OUI è un'utilità dell'interfaccia utente grafica che consente di:

  • Visualizza il software Oracle installato sulla tua macchina
  • Installa il nuovo software Oracle Database
  • Elimina il software Oracle che non è più necessario.

Durante il processo di installazione, OUI avvierà Oracle Database Configuration Assistant (DBCA) che può installare un database predefinito pre-creato che contiene schemi di esempio o può guidare l'utente attraverso il processo di creazione e configurazione di un database personalizzato.
 

Oracle OUI - interfaccia di installazione

Se non crei un database durante l'installazione, puoi richiamare DBCA dopo aver installato il software per creare uno o più database.

MSSQL

A partire da SQL Server 2016 (13.x), SQL Server è disponibile solo come applicazione a 64 bit.

L'installazione avviene tramite l'Installazione guidata, un prompt dei comandi o tramite lo strumento sysprep.

L'installazione guidata esegue il Centro di installazione di SQL Server. Per creare una nuova installazione di SQL Server, seleziona l'opzione Installazione sul lato sinistro, quindi fai clic su Nuova installazione autonoma di SQL Server o aggiungi funzionalità a un'installazione esistente.

L'installazione basata su Linux è molto simile al metodo di installazione del database open source. Supporta il packaging per i sistemi basati su Debian e RedHat. I passaggi consistono nella configurazione del repository, nell'installazione del pacchetto e nella configurazione post-installazione, abbastanza simili a MySQL. L'intero processo è ampiamente descritto nel seguente articolo.

Installazione guidata di MSSQL



MySQL

Oracle fornisce una serie di distribuzioni binarie di MySQL. Questi includono distribuzioni binarie generiche sotto forma di file tar compressi (file con estensione .tar.gz) per un certo numero di piattaforme e binari in pacchetti specifici della piattaforma. Sulla piattaforma Windows, il processo di installazione viene attivato dalla procedura guidata di installazione standard tramite GUI.

PostgreSQL

PostgreSQL è disponibile nella maggior parte delle distribuzioni Linux, quindi è molto probabile che tu possa installarlo tramite un semplice comando yum o apt-get. Per la configurazione HA, è possibile utilizzare lo strumento ClusterControl s9s o la GUI. Gli strumenti S9S possono aiutarti a creare un cluster PostgreSQL con un solo comando a riga singola:

$ s9s cluster \
--create \
--cluster-type=postgresql \
--nodes="192.168.0.91?master;192.168.0.92?slave;192.168.0.93?slave" \
--provider-version='11' \
--db-admin='postgres' \
--db-admin-passwd='s3cr3tP455' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='PostgreSQL 11 Streaming Replication' \
--wait
Creating PostgreSQL Cluster
\ Job 259 RUNNING    [█▋        ]  15% Installing helper packages

Per ulteriori informazioni, controlla questo blog.

Accesso al database e creazione DB

Oracolo

Oracle separa il processo di creazione del binario e del database. A differenza di altri sistemi di database popolari, la creazione di database richiede molti più passaggi.

Il Database Configuration Assistant (DBCA) è il modo preferito per creare un database perché può farlo in un approccio molto più automatizzato. DBCA può essere avviato da Oracle Universal Installer (OUI), a seconda del tipo di installazione selezionato. Puoi anche avviare DBCA come strumento autonomo in qualsiasi momento dopo l'installazione di Oracle Database.

Puoi eseguire DBCA in modalità interattiva o non interattiva/silenziosa. La modalità interattiva fornisce un'interfaccia grafica e un flusso di lavoro guidato per la creazione e la configurazione di un database. La modalità non interattiva/silenziosa consente di creare script per la creazione del database. Puoi eseguire DBCA in modalità non interattiva/silenziosa specificando argomenti della riga di comando, un file di risposta o entrambi.

Oracle DBCA - creazione database

Quando viene creato un database puoi accedervi con un client dedicato chiamato sqlplus. SQL*Plus è un programma client terminale con il quale è possibile accedere a Oracle Database.

MSSQL

SQL Server Management Studio (SSMS) è lo strumento principale per l'amministrazione del Motore di database e la scrittura del codice Transact-SQL. SSMS è disponibile come download gratuito dall'Area download Microsoft. L'ultima versione può essere utilizzata con le versioni precedenti di Motore di database.

Management Studio è un metodo preferito per creare un nuovo database. Per creare un database in Microsoft SQL Server, connettiti al computer in cui è installato Microsoft SQL Server utilizzando un account amministratore.
Avvia Microsoft SQL Server Management Studio e scegli di creare un'opzione database. Il processo della procedura guidata ti guiderà attraverso il processo. Se preferisci la riga di comando, puoi farlo con la sintassi CREATE DATABASE.

MySQL

Per accedere al tuo database MySQL usa il client mysql. La creazione del database è semplice come CREATE DATABASE .

PostgreSQL

Il database PostgreSQL ha l'opzione per più "schemi" che funzionano in modo simile ai database in MySQL.

Gli schemi contengono le tabelle, gli indici, ecc. e sono accessibili contemporaneamente dalla stessa connessione al database che li ospita. I metodi di accesso per PostgreSQL sono definiti in un file:pg_hba.conf. Può essere posizionato in vari luoghi. Su Ubuntu 14.04 si trova in /etc/postgresql/9.3/main/pg_hba.conf, su Centos 7 invece si trova di default in /var/lib/pgsql/data/pg_hba.conf.

Processo di backup

Oracolo

Oracle ha lo strumento di backup integrato più complesso e dedicato di tutti e quattro i server qui descritti; si chiama Recovery Manager (RMAN).

RMAN consente di eseguire sofisticate policy di backup e ripristini selettivi. Le stesse operazioni di solito richiedono molti passaggi manuali in altri RDBMS.

Possiamo eseguire i backup in due modi:

  • disabilitazione del database e copia dei file fisici (cd backup a freddo)
  • utilizzando RMAN ed esegui un backup senza disabilitare il database (backup a caldo)

Per eseguire un backup a caldo, impostare la base in modalità ARCHIVELOG. Questo dirà a Oracle di non conservare la copia dei file di log di ripristino come log di archivio.

MSSQL

Nel mondo MS SQL, puoi utilizzare i comandi T-SQL integrati per eseguire il backup e il ripristino dei database. Non è necessario utilizzare strumenti come mysqlhotcopy e mysqldump.

MS SQL Server offre tre diverse strategie di backup online:

  • Modello di ripristino semplice (ALTER DATABASE dbname SET RECOVERY SIMPLE)
  • Modello di ripristino completo (ALTER DATABASE dbname SET RECOVERY FULL)
  • Modello di recupero con registrazione di massa (ALTER DATABASE dbname SET RECOVERY BULK_LOGGED)

Il modello consigliato è il ripristino completo se nessuna perdita di dati è accettabile. Questa modalità è simile alla funzione MySQL quando è abilitato il log binario. Puoi ripristinare il database in qualsiasi momento, ma dovresti eseguire regolarmente il backup del registro delle transazioni e del database.

Il modello con registrazione in blocco può essere utilizzato per operazioni in blocco di grandi dimensioni, ad esempio l'importazione di dati o la creazione di indici su tabelle di grandi dimensioni. È un metodo piuttosto meno comune per eseguire un database, in particolare la produzione. Non supporta il ripristino point-in-time, quindi viene generalmente utilizzato come soluzione temporanea.

Il modello Simple è utile quando il database viene aggiornato raramente o per scopi di test e sviluppo. In modalità SEMPLICE, il registro delle transazioni del database viene tagliato ogni volta che la transazione è stata completata. Nelle altre modalità, il registro viene troncato tramite l'istruzione CHECKPOINT o dopo il file di backup della transazione. Nel caso in cui il database sia danneggiato, è possibile ripristinare solo il backup più recente e tutte le modifiche successive a questo backup vengono perse.

MySQL

Per MySQL e MariaDB sono disponibili due utilità di backup più popolari, ovvero il backup logico mysqldump e il backup binario Percona XtraBackup e MariaBackup (un fork di Percona XtraBackup). La versione MySQL Enterprise offre anche mysqlbackup che è simile agli strumenti di backup a caldo XtraBackup e MariaBackup.

PostgreSQL

La maggior parte dei DBMS fornisce alcuni strumenti di backup integrati. PostgreSQL ha pg_dump e pg_dumpall pronti all'uso. Tuttavia, potresti voler utilizzare altri strumenti per i tuoi database di produzione. Ulteriori informazioni sono disponibili nell'articolo sui principali strumenti di backup per PostgreSQL.

Controllo dell'esecuzione delle query e del supporto della concorrenza

Oracolo

In Oracle, tutti gli oggetti del database sono raggruppati per schemi. Gli schemi sono raccolte di oggetti di database e tutti gli oggetti di database sono condivisi tra tutti gli schemi e gli utenti. Può essere tradotto in database MySQL. Anche se è tutto condiviso, ogni utente può essere limitato a determinati schemi e tabelle tramite ruoli e autorizzazioni. Questo concetto è abbastanza simile ai database MySQL. Ciao

MSSQL

MS SQL Server organizza tutti gli oggetti, come tabelle, viste e procedure, in base ai nomi di database. Agli utenti viene assegnato un login, che garantisce l'accesso al database specifico e ai suoi oggetti. Inoltre, in SQL Server ogni database dispone di un file del disco privato non condiviso sul server.

MySQL

MySQL ha solo il supporto MVCC in InnoDB. È un motore di archiviazione e per impostazione predefinita è disponibile in MySQL. Fornisce inoltre funzionalità per i reclami ACID come il supporto della chiave esterna e la gestione delle transazioni. Per impostazione predefinita, ogni query viene trattata come una transazione separata, che è un approccio diverso rispetto a Oracle DB.

PostgreSQL

Il motore Postgres esegue il controllo della concorrenza utilizzando un metodo chiamato MVCC (Multiversion Concurrency Control). Per ogni utente connesso al database, il database Postgres fornisce un'istantanea del database in una particolare istanza. Quando il database deve aggiornare un elemento, aggiungerà la versione più recente e indicherà la vecchia versione come obsoleta. Consente al database di risparmiare sulle spese generali, ma richiede un'analisi regolamentata per eliminare i dati vecchi e obsoleti.

Sicurezza

Oracolo

Le funzionalità di sicurezza sono eccezionali, il sistema fornisce una sicurezza a più livelli, compresi i controlli per valutare i rischi, prevenire la divulgazione non autorizzata dei dati, rilevare e segnalare le attività del database e applicare i controlli sull'accesso ai dati.

MSSQL

Le funzionalità di sicurezza sono modeste, l'RDBMS offre meno funzionalità rispetto a Oracle ma comunque molto di più rispetto ai sistemi di database Open Source.

MySQL

MySQL implementa la sicurezza basata sugli elenchi di controllo di accesso (ACL) per tutte le connessioni, le query e altre operazioni che un utente può tentare di eseguire. C'è anche del supporto per le connessioni crittografate SSL tra client e server MySQL.

PostgreSQL

PostgreSQL ha RUOLI e ruoli ereditati per impostare e mantenere le autorizzazioni. PostgreSQL ha il supporto SSL nativo per le connessioni per crittografare le comunicazioni client/server. Ha anche la sicurezza a livello di riga.
Oltre a questo, PostgreSQL viene fornito con un miglioramento integrato chiamato SE-PostgreSQL che fornisce controlli di accesso aggiuntivi basati sulla politica di sicurezza di SELinux. Maggiori dettagli qui.

Supporto della comunità

Oracolo

Il database Oracle, in modo simile a MySQL, ha una vasta comunità, per lo più organizzata attorno a https://community.oracle.com e gruppi appassionati in qualsiasi luogo del mondo, come ad esempio https://poug.org/en/. Il supporto a pagamento ti dà accesso al gruppo di supporto precedentemente noto come metallink, non support.oracle.com.

MSSQL

Rispetto ad altri sistemi di database, MSSQL ha probabilmente i gruppi di comunità meno organizzati ma ancora molto attivi. Microsoft fa un ottimo lavoro nel promuovere i suoi prodotti nelle università. Ciò offre a giovani sviluppatori, devop e DBA un facile accesso alla tecnologia (licenze gratuite) e a tutti i materiali necessari.

MySQL

MySQL ha una vasta comunità di contributori che, in particolare dopo l'acquisizione da parte di Oracle, si concentrano principalmente sul mantenimento delle funzionalità esistenti con alcune nuove funzionalità che emergono occasionalmente. Il vantaggio rispetto ad altri database open source è un ecosistema di fornitori esterni molto forte. Aziende come MariaDB e Percona non solo offrono un ottimo supporto, ma contribuiscono anche aggiungendo funzionalità aziendali alle loro versioni open source.

PostgreSQL

PostgreSQL ha una comunità molto forte e attiva. La sua community migliora le funzionalità esistenti mentre i suoi committenti innovativi si impegnano a garantire che rimanga il database più avanzato con nuove funzionalità e sicurezza, limitando la distanza tra i database Oracle e MSSQL. PostgreSQL è noto per avere più funzionalità rispetto ad altri RDBMS sul mercato.

Opzioni di replica

Oracolo

Oracle offre la replica logica e fisica tramite Oracle Data Guard integrato. È una funzionalità aziendale.
Data Guard è una tecnologia Ship Redo / Apply Redo, "redo" è l'informazione necessaria per recuperare le transazioni.

Un database di produzione denominato database primario esegue nuovamente le trasmissioni su una o più repliche denominate database in standby. Quando viene eseguito un inserimento o un aggiornamento in una tabella, questa modifica viene acquisita dal writer di registro in un registro di archivio e replicata nel sistema di standby.

I database in standby sono in una fase continua di ripristino, verifica e applicazione di ripristino per mantenere la sincronizzazione con il database primario. Un database in standby si risincronizza automaticamente anche se viene temporaneamente disconnesso dal database primario a causa di interruzioni di corrente, problemi di rete, ecc.

Per opzioni di replica più flessibili come la replica selettiva multisorgente, dovresti prendere in considerazione uno strumento a pagamento aggiuntivo, Oracle Golden Gate.

MSSQL

Microsoft SQL Server fornisce i seguenti tipi di replica da utilizzare nelle applicazioni distribuite:

  • Replica transazionale
  • Unire replica
  • Replica istantanea

Può essere notevolmente esteso con Microsoft Integration Services, offrendoti la possibilità di personalizzare il flusso di replica immediatamente.

PostgreSQL

PostgreSQL ha diverse opzioni disponibili, ognuna con i propri pro e contro, a seconda di ciò che è necessario attraverso la replica. Le opzioni di compilazione si basano sul registro Scrivi in ​​anticipo. I file vengono inviati a un server in standby dove vengono letti e riprodotti, o alla replica in streaming, dove un server in standby di sola lettura recupera i registri delle transazioni su una connessione al database per riprodurli. Nel caso di un'architettura di replica più sofisticata, probabilmente vorresti controllare Slony (da master a più slave) o Bucardo (multimaster).

MySQL

MySQL Replication è probabilmente la soluzione ad alta disponibilità più popolare per MySQL,
e ampiamente utilizzata dai migliori servizi Web.

È facile da configurare, ma la manutenzione continua come aggiornamenti software, modifiche dello schema, modifiche alla topologia, failover e ripristino è sempre stata complicata.

La replica di MySQL non richiede strumenti di terze parti, sia master-slave che multimaster possono essere eseguiti immediatamente.

Le versioni recenti di MySQL hanno aggiunto la replica multi-sorgente e l'ID transazione globale che lo rendono ancora più affidabile e facile da mantenere.

Conclusione

I database prioritari come Oracle e MSSQL offrono solidi sistemi di gestione e un ottimo supporto. Tra il lungo elenco di funzionalità supportate, gli utenti possono provare la rassicurante sensazione di accedere al supporto aziendale e ai sistemi di conoscenza a pagamento.

D'altra parte, il costo della licenza, non così grande come una lacuna di funzionalità e plug-in aziendali, ti renderà desideroso di passare alla decisione open source più facile che mai.

L'utilizzo di processi e automazione predefiniti non solo può farti risparmiare tempo, ma anche proteggerti da errori comuni.

Una piattaforma di gestione che affronti sistematicamente tutti i diversi aspetti del ciclo di vita del database sarà più solida rispetto all'applicazione di patch insieme a una serie di soluzioni puntuali.