Présentation effectuée à Open Source Expérience 2022 par Christophe Villeneuve et Sébastien de MariaDB sur "MariaDB : une base de données NewSQL".
Cette présentation a pour but de montrer que la base de données Mariadb propose des nouvelles fonctionnalités et avancés importantes pour devenir un coeur
4. ●
SQL + NoSQL = NewSQL
●
Que fait-on avec MariaDB ?
●
Le futur du présent
5. SQL
●
SQL = Base de données relationnelles
●
Appelé SGBDR (système de gestion de base de données relationnelle)
●
Basé sur un modèle relationnel :
– S’appuie sur la théorie des ensembles et des relations pour décrire les données dans la base de données
●
Norme SQL décrivant le langage d'interrogation et le comportement des bases de données relationnelles.
●
Chaque base de données (avec ces différences) :
– Langage
– Comportement
– Méthode d'accès aux données.
●
Schéma fixe :
– Chaque ligne a les mêmes colonnes définies à l'aide des mêmes types de données que toutes les autres lignes de la table.
– Chaque ligne de la table possède une clé qui l'identifie de manière unique.
●
Les systèmes de bases de données SQL sont caractérisés par leur support ACID
– ACID (atomicité, cohérence, isolation et durabilité) pour les transactions
– Cohérence des données est strictement maintenue lorsque plusieurs processus accèdent et modifient les mêmes données.
6. NoSQL
●
NoSQL = Base de données non relationnelle
●
Pas de règles strictes
●
Populaire au début du 21e siècle
●
Englobe
– Structure de données différents
– Concepts, approches, des langages de requête, etc.
– Solution à un problème précis
– Selon l'application,
●
Prévoir des développements spécifiques du côté de l'application
●
Devient coûteux ou pratiquement impossible à maintenir à partir d'un certain point.
●
Évolution horizontale
– Ajoutez des machines supplémentaires et répartissez la charge entre elles.
7. NewSQL (1/2)
●
Catégorie de systèmes de gestion de bases de données relationnelles
●
Visent à fournir
– Les garanties ACID des bases de données relationnelles
– Evolution horizontale des bases de données NoSQL.
●
Plusieurs catégories :
– Des systèmes entièrement nouveaux, souvent construits à partir de zéro
– Déploiement distribué
– Techniques similaires à celles utilisées par les bases de données NoSQL.
●
Moteurs de stockage (storage engine) SQL optimisés pour l'évolutivité horizontale
●
Complémentaire aux moteurs de stockage par défaut des bases de données relationnelles
●
Positionnement
– Couche Middleware
●
Possible d’offrir de garanties ACID
8. NewSQL (2/2)
●
Existe depuis 2011 (Document 451 Research)
●
Caractéristiques
– Prévu comme un système de base de données relationnel et SQL avec une architecture distribuée et tolérante aux
pannes.
– Possible de mixer
●
La capacité de stockage en mémoire
●
Les services de bases de données en cluster avec la possibilité d'être déployés dans le cloud.
●
Intérêt
– Traiter de grandes quantités de données (big data) tout en maintenant la cohérence transactionnelle
●
Approche :
– Grande évolutivité avec une cohérence ACID
– Consiste à répartir les données de manière transparente entre plusieurs nœuds à l'aide d'un algorithme de consensus.
– Déploient des moteurs SQL améliorés pour le stockage et l'optimisation des données.
10. Synthèse
Feature SQL NoSQL NewSQL
Propriété
Relationnelle
Oui
Modélisation relationnelle
Non
Modèle différent
Oui
ACID Oui,
les propriétés ACID sont
fondamentales pour leur
application
Non
prévoit plutôt un soutien CAP
Oui,
les propriétés ACID sont prises
en compte
SQL Prise en charge de SQL Pas de support pour l'ancien SQL Oui, un support approprié et
même des fonctionnalités
améliorées pour l'ancien SQL
Traitement
Transactionnel
(OTP)
Inefficace pour les bases de
données OLTP
Il supporte de telles bases de
données, mais ce n'est pas le mieux
adapté.
Prend entièrement en charge les
bases de données OLTP et est
très efficace
Scaling / Extensibilité Mise à l'échelle verticale Mise à l'échelle horizontale
uniquement
Mise à l'échelle verticale +
horizontale
Traitement des
requetes
Peut gérer facilement des
requêtes simples et échoue
lorsqu'elles deviennent complexes
Mieux que SQL pour le traitement des
requêtes complexes
Très efficace dans le traitement
des requêtes complexes et des
requêtes plus petites
Bases de données
distribuées
Non Oui Oui
11. ●
SQL + NoSQL = NewSQL
●
Que fait-on avec MariaDB ?
●
Le futur du présent
12. Histoire de MariaDB
●
L'origine
●
Fondé par
– Michael Monty Widenius
– David Axmark
●
Dates importantes
– 1983 - 1ères idées
– Fondé en 1995
– 2007 Préparation pour
Nasdaq
– 2008 Rachat par Sun
– 2009 Sun racheté par
Oracle
13. Un projet mature
●
Communauté d’amis
●
100 % Open source
●
Plateforme innovation
●
Modèle de gouvernance
– Free Software Foundation
– pour le projet GNU
●
2008 Création de Monty
Program
●
2010 MariaDB 5
●
2012 MariaDB 10
●
2013 Fondation
●
2013 NewSQL (NoSQL + SQL)
●
2015 MaxScale
●
…
15. Gestion par colonnes
●
Les bases de données à larges colonnes
– Stockent les données dans des tableaux
●
contenant un grand nombre de colonnes
●
Schéma flexible
– Système de stockage en colonnes
– Utile pour le Big Data
– Compatibilité : Data Types Storage
Engines
Version mini
BLOB X 10
ColumnStore X 10.5
RocksDB X 10.3
16. Ex : MariaDB ColumnStore
●
Axée sur la rangée
– Les Lignes stockées séquentiellement dans un fichier
●
Orienté en colonne
– Chaque colonne est stockée dans un fichier séparé
17. Ex : Blob : Colonnes dynamiques
create table newsql(
id int
auto_increment
primary key,
nom varchar(40),
type enum
('animal',
'ordinateur'),
prix int,
nosql blob);
COLUMN_CREATE(
column_nr,
value [as type],
[
column_nr,
value [as type]
],
...)
18. Graph
●
Les bases de données graphiques
– stockent les données sous forme de graphiques
●
pour mettre en évidence les connexions entre les
différents éléments de données
●
Compatibilité
Data Types Storage
Engines
Version mini
OQGRAPH X 10
20. JSON
●
Les bases de données clés-valeurs
– stockent des paires de clés uniques et de valeurs
associées.
– https://mariadb.com/kb/en/json-functions/
●
Compatibilité
Data Types Storage
Engines
Version mini
JSON X 10.2
JSON_VALID X 10.4
21. Ex : JSON
create table demo2(
id int auto_increment primary key,
nom varchar(40),
type enum ('animal', 'ordinateur'),
prix int,
attr JSON,
CHECK (JSON_VALID(attr))
);
22. Documents
●
Les bases de données de documents
– stockent les données
●
dans des structures de type document encodées
dans des formats tels que JSON et XML.
– https://mariadb.com/kb/en/json_table/
●
Compatibilité Data Types Storage
Engines
Version mini
JSON X 10.6
23. Ex : Documents
set @json='
[
{"name":"Laptop", "color":"black", "price":"1000"},
{"name":"Jeans", "color":"blue"}
]';
select * from json_table(@json, '$[*]'
columns(
name varchar(10) path '$.name',
color varchar(10) path '$.color',
price decimal(8,2) path '$.price' )
) as jt;
+--------+-------+---------+
| name | color | price |
+--------+-------+---------+
| Laptop | black | 1000.00 |
| Jeans | blue | NULL |
+--------+-------+---------+
24. ●
SQL + NoSQL = NewSQL
●
Que fait-on avec MariaDB ?
●
Le futur du présent
25. SQL Distribué
●
C’est constituée :
– plusieurs instances de base de données interopérables
– Chacune stocke et interroge non pas la totalité
●
Transactions distribuées entre bases de données cloud
●
Répondre à un besoin :
– Besoin de lectures et d'écritures très rapides
– Nécessité de prendre en charge un grand nombre de requêtes simultanées
– Nécessité de supporter un grand nombre d'écritures
– Nécessité de stocker un grand nombre de données
●
Docker https://hub.docker.com/r/mariadb/xpand-single
●
Compatibilité : Data Types Storage
Engines
Version mini
Xpand X entreprise
26. Interopérabilité
●
SQL / NoSQL
●
En alias / Layout
●
Migration en 0 clics
●
Compatibilité
Variables
Modes
Storage
Engines
Version mini
Connect X 10.1
Sql_mode X 10.2
Maxscale
28. Connect
●
ETL : Extract Transform Load
●
Lecture / Ecriture / MAJ
– TXT, DBF, INI, XML
– MS Access, MS Excel, TBL (similaire à MERGE)
– ODBC, MySQL,SQLite, Oracle, DB2, WMI...
●
Locale ou distant
●
Custom possible
●
Accès en parallèle sur multitables
29. NoSQL Document protocol
●
Le module nosqlprotocol permet d'utiliser un serveur ou un cluster
MariaDB
– comme backend d'une application utilisant une bibliothèque client MongoDB®.
●
En interne, tous les documents sont stockés
dans une table contenant deux colonnes :
– une colonne id pour l'identifiant de l'objet
– une colonne doc pour le document lui-même.
MariaDB
MaxScale
App
id doc