Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MariaDB une base de donnees NewSQL

hellosct1
November 09, 2022

MariaDB une base de donnees NewSQL

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

hellosct1

November 09, 2022
Tweet

More Decks by hellosct1

Other Decks in Technology

Transcript

  1. Une base de données NewSQL Open Source Expérience – le

    9 novembre 2022 Christophe Villeneuve & Sébastien
  2. Aujourd’hui • SQL + NoSQL = NewSQL • Que fait-on

    avec MariaDB ? • Le futur du présent
  3. • SQL + NoSQL = NewSQL • Que fait-on avec

    MariaDB ? • Le futur du présent
  4. 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.
  5. 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.
  6. 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
  7. 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.
  8. 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
  9. • SQL + NoSQL = NewSQL • Que fait-on avec

    MariaDB ? • Le futur du présent
  10. 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
  11. 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 • …
  12. https://mariadb.com/kb/en/storage-engines/ No SQL - MongoDB - Cassandra - … DBA

    - InnoDB - MyISAM - XtraDB Alias / Migration - Connect - SQL_mode Autre - Memory - Merge - OQGraph - S3 - TokuDB - SphinxSE - … Front - MaxScale - JSON Big Data - Colonnes Dynamiques - RocksDB Développeur - PCRE - Microseconds - Colonnes Virtuelles - Sequence engine - …
  13. 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
  14. 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é
  15. 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] ], ...)
  16. 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
  17. Ex graph CREATE TABLE oq2_backing ( origid INT UNSIGNED NOT

    NULL, destid INT UNSIGNED NOT NULL, weight DOUBLE NOT NULL, PRIMARY KEY (origid, destid), KEY (destid) ); INSERT INTO oq2_backing(origid, destid, weight) VALUES (1,2,1), (2,3,1), (3,4,3), (4,5,1), (2,6,10), (5,6,2); SELECT * FROM oq_graph WHERE latch='breadth_first' AND origid=1 AND destid=6; +----------+--------+--------+--------+------+--------+ | latch | origid | destid | weight | seq | linkid | +----------+--------+--------+--------+------+--------+ | dijkstras| 1 | 6 | NULL | 0 | 1 | | dijkstras| 1 | 6 | 1 | 1 | 2 | | dijkstras| 1 | 6 | 1 | 2 | 6 | +----------+--------+--------+--------+------+--------+ CREATE TABLE oq2_graph ( latch VARCHAR(32) NULL, origid BIGINT UNSIGNED NULL, destid BIGINT UNSIGNED NULL, weight DOUBLE NULL, seq BIGINT UNSIGNED NULL, linkid BIGINT UNSIGNED NULL, KEY (latch, origid, destid) USING HASH, KEY (latch, destid, origid) USING HASH ) ENGINE=OQGRAPH data_table='oq2_backing' origid='origid' destid='destid' weight='weight';
  18. 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
  19. 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)) );
  20. 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
  21. 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 | +--------+-------+---------+
  22. • SQL + NoSQL = NewSQL • Que fait-on avec

    MariaDB ? • Le futur du présent
  23. 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
  24. 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
  25. 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
  26. 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
  27. Nous retrouver • Slack https://r.mariadb.com/join-community-slack • Twitter https://twitter.com/lemug_fr • Linkedin

    https://www.linkedin.com/groups/1627237/ • Développeurs : https://mariadb.com/developers/ • Github : https://github.com/mariadb-corporation • https://mariadb.com • https://mariadb.org