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

    View Slide


  2. Séb
    – Ingénieur solutions

    Christophe Villeneuve

    View Slide

  3. Aujourd’hui

    SQL + NoSQL = NewSQL

    Que fait-on avec MariaDB ?

    Le futur du présent

    View Slide


  4. SQL + NoSQL = NewSQL

    Que fait-on avec MariaDB ?

    Le futur du présent

    View Slide

  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.

    View Slide

  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.

    View Slide

  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

    View Slide

  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.

    View Slide

  9. Pour faire simple

    View Slide

  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

    View Slide


  11. SQL + NoSQL = NewSQL

    Que fait-on avec MariaDB ?

    Le futur du présent

    View Slide

  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

    View Slide

  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


    View Slide

  14. 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
    - …

    View Slide

  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

    View Slide

  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é

    View Slide

  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]
    ],
    ...)

    View Slide

  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

    View Slide

  19. 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';

    View Slide

  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

    View Slide

  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))
    );

    View Slide

  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

    View Slide

  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 |
    +--------+-------+---------+

    View Slide


  24. SQL + NoSQL = NewSQL

    Que fait-on avec MariaDB ?

    Le futur du présent

    View Slide

  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

    View Slide

  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

    View Slide

  27. Migration en 0 clic

    View Slide

  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

    View Slide

  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

    View Slide

  30. 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

    View Slide

  31. Merci

    View Slide