MariaDB
 sql >> Database >  >> RDS >> MariaDB

Esplorazione delle opzioni del motore di archiviazione per MariaDB

MariaDB Server è stato originariamente derivato da MySQL e ha quindi ereditato la sua architettura pluggable storage engine. Diversi motori di archiviazione hanno caratteristiche diverse in termini di prestazioni ma anche caratteristiche e possibilità. Ciò consente agli utenti di scegliere lo strumento giusto per il lavoro invece di utilizzare lo stesso motore di archiviazione, indipendentemente dallo scopo dei dati, quali sono i requisiti relativi all'archiviazione dei dati e come si dovrebbe accedere ai dati. In questo post del blog vorremmo esaminare le opzioni disponibili in MariaDB e discutere i potenziali casi d'uso per i diversi motori di archiviazione disponibili.

Cos'è un motore di archiviazione?

Prima, però, diamo un'occhiata a cos'è il motore di archiviazione? MariaDB è costituito da più livelli che operano insieme. SQL viene analizzato da uno di loro, quindi MariaDB cerca i dati, utilizzando un'API comune. Sotto il cofano c'è un motore di archiviazione che contiene i dati e reagisce alle richieste di dati, estrae i dati e li mette a disposizione di MariaDB.

In breve, MariaDB invia una richiesta per una riga e spetta allo storage engine recuperarla e rispedirla. A MariaDB non importa come esattamente viene archiviata la riga o come verrà recuperata, dipende tutto dall'implementazione all'interno del motore di archiviazione. I motori di archiviazione possono anche implementare funzionalità diverse. Le transazioni vengono gestite anche interamente dal lato del motore di archiviazione. Ecco perché alcune delle transazioni di supporto e altre no. Con questa architettura è possibile scrivere diversi storage engine, dedicati alla risoluzione di diversi problemi.

Motori di archiviazione nel server MariaDB

MariaDB viene fornito con una serie di motori di archiviazione. Puoi verificare quali sono disponibili tramite un semplice comando:

MariaDB [(none)]> SHOW STORAGE ENGINES;

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                                                         | Transactions | XA   | Savepoints |

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                                           | NO           | NO   | NO         |

| CSV                | YES     | Stores tables as CSV files                                                                      | NO           | NO   | NO         |

| Aria               | YES     | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO           | NO   | NO         |

| SEQUENCE           | YES     | Generated tables filled with sequential values                                                  | YES          | NO   | YES        |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                                       | NO           | NO   | NO         |

| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint                         | NO           | NO   | NO         |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                                              | NO           | NO   | NO         |

| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables                | YES          | YES  | YES        |

+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+

8 rows in set (0.000 sec)

Come puoi vedere, ce ne sono molti, tratteremo i più importanti.

InnoDB

InnoDB, ovviamente, è IL motore di archiviazione. Transazionale, creato per gestire il traffico OLTP, può fornire prestazioni davvero eccezionali. È il motore predefinito utilizzato in MariaDB e, a meno che tu non sappia cosa stai facendo, probabilmente vorrai mantenerlo per il tuo database.

MyISAM

MyISAM è uno dei motori di archiviazione "originali" disponibili in MySQL e poi in MariaDB. Non è transazionale, il che lo rende non ideale per le configurazioni di replica e, beh, anche per la maggior parte degli altri ambienti. È ancora un motore molto veloce, soprattutto per quanto riguarda l'accesso agli indici, il che lo rende adatto a carichi di lavoro di sola lettura che non saranno interessati dal blocco degli INSERT e dalla fragilità generale di MyISAM.

Aria

Aria è un motore creato per MariaDB in sostituzione di MyISAM. Non è transazionale ma è a prova di crash, rendendolo molto più affidabile. Attualmente viene utilizzato per tabelle temporanee e di sistema, ma può essere utilizzato anche al posto di MyISAM per carichi di lavoro che richiedono un accesso rapido e di sola lettura ai dati.

Memoria

Questo è un motore all-in-memory che viene generalmente utilizzato per le tabelle in-memory temporanee. Non è persistente ma potrebbe funzionare per alcuni carichi di lavoro di sola lettura.

CSV

Questo motore di archiviazione è progettato per archiviare i dati in un file come valori separati da virgole. Non è il motore di archiviazione più utilizzato, è molto specializzato ma può comunque essere utilizzato per estrarre facilmente i dati da MariaDB in qualsiasi altro software di database oltre a Excel o software simili.

Motori di archiviazione in MariaDB Enterprise Server

MariaDB Enterprise Server viene fornito con un paio di motori di archiviazione aggiuntivi rispetto a ciò che è disponibile nell'edizione community. Diamo un'occhiata anche a loro.

ColumnStore

Questo è un motore di archiviazione dedicato per il carico di lavoro analitico. Grazie alla modalità specifica di archiviazione dei dati, rende più veloce il recupero di grandi volumi di dati, spesso necessari per la reportistica. Questo potrebbe essere il motore di archiviazione di tua scelta per i carichi di lavoro OLAP (OnLine Analytical Processing).

S3

Il motore S3 ti consente di accedere ai dati che si trovano in S3. È un motore non transazionale destinato a offrire agli utenti la possibilità di archiviare i dati in S3. L'accesso di sola lettura è disponibile dopo la creazione della tabella.

Ragno

Il motore Spider ti consente di connettere più database MariaDB attraverso la rete, creando uno storage sharded. È transazionale e semplifica la scalabilità orizzontale per gli utenti suddividendo i dati su numerosi MariaDB Enterprise Server, distribuendo il traffico e il carico di lavoro tra di loro.

MyRocks

MyRocks è un motore di archiviazione sviluppato in Facebook, ha lo scopo di ridurre l'amplificazione della scrittura e ridurre al minimo l'usura delle unità SSD. È un motore transazionale che dovrebbe gestire abbastanza bene il carico di lavoro OLTP, in particolare i carichi di lavoro tipici dei siti Web di social media. MyRocks viene fornito con una compressione piuttosto buona, migliore di InnoDB, che può aiutare a ridurre significativamente le spese di archiviazione se il set di dati diventa troppo grande per essere gestito correttamente da InnoDB.

Conclusione

Come puoi vedere, ci sono numerose opzioni fornite sia da MariaDB Enterprise che da Community Server per quanto riguarda il modo in cui i dati possono essere archiviati. Esistono motori di archiviazione che eccellono nei carichi di lavoro di sola lettura, OLAP o set di dati di grandi dimensioni. Spetta all'utente scegliere una buona vestibilità. Tieni presente che, in caso di dubbio, puoi sempre attenerti a InnoDB, che fornisce prestazioni abbastanza buone in generale e dovrebbe essere più che sufficiente per la maggior parte dei casi. È per quei casi limite in cui potrebbe essere necessario cercare qualcosa di più adatto.