Une base de données NewSQL
POC Innovation – le 15 Fev. 2022
Christophe Villeneuve & Sébastien
Seb Christophe Villeneuve
Aujourd’hui
● Les bases de données
● Pourquoi MariaDB ?
● Que fait-on avec MariaDB ?
● Les bases de données
● Pourquoi MariaDB ?
● Que fait-on avec MariaDB ?
Qu’est ce ?
Une base données permet de stocker et de retrouver
● Données structurées
● Données semi-structurées
● Données brutes
● De l'information Les grandes familles :
● Relationel, Multi-modèle
● Document
● Key-value
● Relationel, Multi-colonne
SGBD
● = Système de gestion de base de
données
● Système servant
○ à stocker
○ à manipuler
○ à partager des données
dans une base de données
● Garantir
○ la qualité
○ la pérennité
○ la cohérence
○ la confidentialité des informations
tout en masquant la complexité des
opérations.
Les tendances
● Les bases de données
● Pourquoi MariaDB ?
● Que fait-on de MariaDB ?
Histoire de MariaDB
L’origine
Fondé par
● Michael Monty Widenius
● David Axmark
● 1983 - 1ères idées
● Fondé en 1995
● 2007 Préparation pour Nasdaq
● 2008 Rachat par Sun
● 2009 Sun racheté par Oracle
Dates importantes
MariaDB Corp and Foundation
● Protège et garantie la liberté
du code source
● MariaDB restera Open Source
● De plus en plus de moteur
disponibles
● Alimenté par la communauté
et MariaDB Corp
● https://mariadb.org
Foundation
● Propose l'expérience requise et
attendue par les entreprises
● Fournit un support 24/7
● Offre des hotfix en cas de
besoins à chaque clients
● Fournit un accès illimité aux
ingénieurs de MariaDB
● https://mariadb.com
Corporation
What is MariaDB value added
What is MariaDB
MariaDB release the power of several storage engine simultaneously
● Choose the storage engine per table
○ One database can be splitted on several storage engines simultaneously
○ Use of Smart router allow several storage usage for one single query
● Allow to perform join on several storage engines
● Some awesome new storage engines
○ MariaDB ColumnStore for very fast analytics
○ MariaDB Xpand for distributed transaction SQL and analytic capabilities
● Plenty of possible architectures
MariaDB : 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
● …
https://mariadb.com/resources/customer-stories/
Références
https://mariadb.com/docs/release-notes/mariadb-enterprise-server-10-5/
MariaDB 10.5
New features and capabilities already in 10.5
● Audit with table-specific filters
● Enhanced consistency for Semi-Sync Replication
● InnoDB no longer acquires advisory file locks by default
● ARM64 is now supported
● Improved audit log (proxy users)
MariaDB 10.6
● Atomic DDL (modification de schéma effectué en une seule opération)
https://mariadb.com/kb/en/atomic-ddl/
● IPv6 by Default
● JSON_TABLE() returns a table from JSON data.
● XA Transactions are supported on Galera
● Oracle compatibility increased
MariaDB 10.6
New release, new release number
● MariaDB Enterprise Server and Community Server 10.6
● MariaDB MaxScale 6.1
● MariaDB ColumnStore 6.1
● MariaDB Xpand 6.0 (with Columnar index)
○ First step towards a distributed HTAP DB
○ Preliminary benchmarks show a gain of 3x-50x for analytics (aggregations)
MariaDB Community Server 10.6.4
● JSON_TABLE
● SYS_SCHEMA
● Ignore Index
● Atomic DDL
● Compatibility enhancements
Features also included in MariaDB Enterprise 10.6 release
https://mariadb.com/docs/features/mariadb-enterprise-server/
MariaDB Enterprise server 10.6
● Galera XA support
● Sybase compatibility
● Oracle compatibility (ROWNUM, ADD_MONTHS, TO_CHAR)
● ARM support
● Object filters for Enterprise Audit (backport on 10.4+)
● Sybase SQL Anywhere compatible alias handling (backport on 10.5)
● Enhanced consistency for Semi-Sync Replication (backport on 10.3+)
● MariaDB Global Transaction ID replication to other Galera nodes (backport on
10.4 from 10.5)
https://mariadb.com/docs/features/mariadb-enterprise-server/
MariaDB Enterprise server value added
● Hardened version of MariaDB Community Server
● Built for production deployments
● Extensive QA
● Configured for production by default
● Scale and secure
MariaDB Enterprise Server is available to all subscription customers
Moteur de stockage
SkySQL FIRSTS
Smart Transactions
The first DBaaS to support
transactional (OLTP),
analytical (OLAP) and hybrid
(HTAP) workloads for Smart
Transactions.
From the Source
A DBaaS architected,
engineered, and supported
by database architects,
engineers, and extraordinary
support.
Community to
Mission Critical
Expansive Topologies for all
Applications Tiers.
SkySQL
Always On,
Always Ready
The cloud offering the latest
bug fixes and security
updates, always.
Le cloud version MariaDB
● Kubernetes for databases
● ServiceNow for the portal
● Prometheus and Grafana for
the monitoring dashboard
● Deep learning for the
workload analysis
Platform
● MariaDB Platform
● MariaDB Enterprise Server
● MariaDB MaxScale
● MariaDB ColumnStore
Database
● Database bug fixes and
security patches (code)
● Database administration
with SkyDBA
Support
● Databases for transactions
● Data warehouses for analytics (columnar)
● Databases for smart transactions (row + columnar)
● Transparent query routing
Features
MariaDB SkySQL – Use it, don’t manage it
● Automated
● Automatic backups
● Restore on demand
● Automatic scaling
● Monitoring included
● Backed and supported by the team that built MariaDB
● SkyDBA – Your SkySQL DBA
● Les bases de données
● Pourquoi MariaDB ?
● Que fait-on de MariaDB ?
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
Big Data
- Colonnes
Dynamiques
Développeur
- PCRE
- Microseconds
- Colonnes Virtuelles
- Sequence engine
- …
MariaDB ColumnStore (⅓)
Moteur de stockage orienté en colonnes
● Utilise une architecture de données distribuées massivement parallèle
● Système de stockage en colonnes
● Utile pour le Big Data
● Architecture (en parallèle)
○ Exécution de requêtes distribuée
○ Chargement de données
Depuis la version 10.5.4
● Disponible en tant que moteur de stockage pour le serveur MariaDB
○ Avant cela, il est uniquement disponible en téléchargement séparé.
MariaDB ColumnStore (2/3)
● Axée sur la rangée
○ Les Lignes stockées séquentiellement dans un fichier
MariaDB ColumnStore (3/3)
● Orienté en colonne
○ Chaque colonne est stockée dans un fichier séparé
New Storage engines - ColumnStore
MariaDB Enterprise ColumnStore is a columnar storage engine for
● online analytical processing (OLAP)
● data warehousing
● business intelligence
● hybrid transactional-analytical processing (HTAP)
MariaDB Enterprise ColumnStore is included with MariaDB Enterprise Server.
New Storage engines - ColumnStore
MariaDB Enterprise ColumnStore is included with MariaDB Enterprise Server.
● Increased maximum DECIMAL precision to 38
● Disk-based aggregation allows larger aggregated result sets than can fit in
memory (for queries on billions rows)
● Transactional tables can be updated with data from ColumnStore tables
● Multi user / Concurrency Architectural Change
● Circular Join Support
● Automatic Select Handler (Server vs Engine)
● Added LZ4 compression
● Added encrypted password support for config files
● Dozens of performance and compatibility improvements
Colonne dynamique
● Pont entre les BDD relationnelles et non relationnelles
● Toutes les colonnes stockées dans un « blob »
● Possibilité de le manipuler
● Possibilité de créer des index Virtuels
10
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]
],
...)
10
Colonnes Dynamiques (2/4)
10
Colonnes Dynamiques (3/4)
>SELECT nom, column_list (nosql) FROM newsql;
10
Colonnes Dynamiques (4/4)
>SELECT nom, COLUMN_JSON(nosql) FROM newsql;
>SELECT id,type,nom,
COLUMN_GET(nosql, 'couleur' as char) AS couleur,prix FROM newsql;
10
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 Installation dans My.cnf
[mysqld]
plugin-load=ha_connect.so
Connect : exemple CSV
Fichier
first,last,birthday
"Christophe","Villeneuve","Jan 1"
"PHP","ODBC","Nov 22"
> CREATE TABLE users_csv (
first varchar(32) NOT NULL,
last varchar(32) NOT NULL,
birthday varchar(50) NOT NULL
) ENGINE=CONNECT TABLE_TYPE =CSV FILE_NAME ='/var/lib/mysql/users.csv'
HEADER=1 SEP_CHAR=',' QUOTED=1;
Connect : exemple ODBC
> create Table table2
ENGINE=CONNECT TABLE_TYPE=ODBC
SRCDEF='select key, sum(l_quantity) qt from dbt3.table1 group by key'
CONNECTION='DSN=oracle;UID=login;PWD=password';
> MariaDB [dbt3]> select sum(qt) from (select qt from table2) as result;
→ 31444
JSON
● Structure JSON { Clé : Valeur }
● 2 possibilités :
○ En Fonctions :
■ https://mariadb.com/kb/en/json-functions/
○ En Table
■ https://mariadb.com/resources/blog/introducing-json-tables/
JSON en fonctions (⅓)
> CREATE TABLE products(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
name
VARCHAR(255) NOT NULL,
price
DECIMAL(9,2) NOT NULL,
stock
INTEGER NOT NULL,
attr
VARCHAR(1024),
CHECK (
attr IS NULL OR JSON_VALID(attr))
);
JSON en fonctions (⅔)
● Ajoute une nouvelle colonne et extrait les attributs ‘colour’
> ALTER TABLE products ADD attr_colour VARCHAR(32) AS (JSON_VALUE(attr, '$.colour'));
> CREATE INDEX products_attr_colour_ix ON products(attr_colour);
> INSERT INTO products VALUES(NULL, 'Jeans', 10.5, 165, NULL);
Query OK, 1 row affected (0.01 sec)
> INSERT INTO products VALUES(NULL, 'Shirt', 10.5, 78, '{"size": 42, "colour": "white"}');
Query OK, 1 row affected (0.01 sec)
> INSERT INTO products VALUES(NULL, 'Blouse', 17, 15, '{"colour": "white"}');
Query OK, 1 row affected (0.01 sec)
JSON en fonctions (3/3)
> SELECT * FROM products WHERE attr_colour = 'white';
JSON en table (¼)
> CREATE TABLE people (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
pets JSON
);
JSON en table (2/4)
> SELECT
id,
JSON_VALUE(JSON_QUERY(pets, CONCAT('$[', ind.ind, ']')), '$.type') pet_type,
JSON_VALUE(JSON_QUERY(pets, CONCAT('$[', ind.ind, ']')), '$.name') pet_name
FROM
people CROSS JOIN
(SELECT 0 AS ind UNION ALL SELECT 1 AS ind) ind;
JSON en table (¾)
> UPDATE people
SET
pets = JSON_INSERT(pets, '$[0].favorite_foods',
JSON_ARRAY('chicken', 'salmon', 'carrots'));
> UPDATE people
SET
pets = JSON_INSERT(pets, '$[1].favorite_foods',
JSON_ARRAY('tuna', 'turkey'));
[
{
"type": "dog",
"name": "Duke",
"favorite_foods": [
"chicken",
"salmon",
"carrots"
]
},
{
"type": "cat",
"name": "Fluffy",
"favorite_foods": [
"tuna",
"turkey"
]
}
]
JSON en table (4/4)
SELECT p.id, pt.pet_type, pt.pet_name, pt.favorite_food
FROM
people p,
JSON_TABLE(p.pets,
'$[*]' COLUMNS (
pet_type VARCHAR(10) PATH '$.type',
pet_name VARCHAR(25) PATH '$.name',
NESTED PATH '$.favorite_foods[*]'
COLUMNS (favorite_food VARCHAR(25) PATH '$')
)
) pt;
MyRocks storage engine
● développé chez Facebook
sudo apt-get install mariadb-plugin-rocksdb
INSTALL SONAME 'ha_rocksdb';
[mariadb]
...
plugin_load_add = ha_rocksdb
● Ecriture massive
● Remplace TokuDB
Spider (½)
● Moteur de stockage fédérés comme
○ Sharding / partitionnement
○ Transactions
● Intégré dans le pool de connexion
● Haute disponibilité Cluster Shared-Nothing
● Load balancing :
○ Accès par Spider cluster avec plusieurs serveurs MariaDB
10.5
https://mariadb.com/fr/resources/blog/uses-for-mariadb-and-the-spider-storage-engine/
Spider (2/2)
● Sharding
10.5
Xpand
● SQL distribué
● Disponible version Entreprise
● Vidéo : https://www.youtube.com/watch?v=TAvKGl0eCKI&t=51s
https://mariadb.com/products/enterprise/xpand/
New Storage engines - Xpand
● Shared-nothing architecture
● Elasticity (i.e., add/remove nodes on demand)
● Self-managing (i.e., automatic rebalancing)
● ACID transactions
● Standard SQL (including JOINs)
● Continuous availability (i.e., automatic failover)
● MariaDB/MySQL or Postgres clients
● Session failover
● Dynamic load balancing
● Allow transactions AND analytics queries on one single dataset
https://mariadb.com/products/enterprise/xpand/
New Storage engines - Xpand workloads
● Need very fast reads and writes
○ Customers expect an instant response
○ Scaling out in order to operate at the speed of memory
● Need to support lots of concurrent queries
○ Many customer interactions, each one results in multiple queries
○ Scaling out to support more concurrent processing
● Need to sustain lots of writes
○ More writes than reads, write needs to be very fast
○ Scaling out to increase disk IO
● Need to store a lot of data
○ Lots of customers, sessions, shopping carts and so on
○ Scaling out to increase storage capacity
https://github.com/mariadb-corporation/MaxScale
MariaDB MaxScale
● Proxy de base de données qui étend
○ la haute disponibilité
○ l'évolutivité
○ la sécurité du serveur MariaDB
○ permet le routage transparent des requêtes
● Simplifie le développement des applications
○ En les découplant de l'infrastructure de base de données sous-jacente.
● NoSQL
○ MongoDB / Cassandra…
Manage NoSQL (1/
[MongoDB-Listener]
type=listener
service=Read-Write-Service
protocol=nosqlprotocol
nosqlprotocol.user=maxscale
nosqlprotocol.password=Password123!
port=17017
https://mariadb.com/fr/resources/blog/how-to-manage-nosql-data-with-mariadb/
https://mariadb.com/docs/features/mariadb-maxscale/
MariaDB MaxScale 6
Maxscale introduced some exciting new features
● NoSQL protocol (Mongo API) support and compatibility
● Kafka Importer
● Allows user to stream data from a Kafka broker into MariaDB
● Kafka authentication and failover
● Visual Client/Query Editor
● MaxScale cluster configuration sync
● Increased log visibility through GUI and API
● Added prepared statement support to causal reads
● Several monitoring/UI related improvements
MaxScale : Editeur de requêtes
MaxScale 6 https://mariadb.com/fr/resources/blog/getting-started-with-the-mariadb-maxscale-gui/
● Résultat formaté
● Visualisation
● Aperçu de données
● Coloration syntaxique
KAFKA IMPORTER
MariaDB MaxScale
Kafka
Le module KafkaImporter lit
les messages de Kafka et les diffuse dans un serveur MariaDB.
Les messages sont insérés dans une table désignée
soit par le nom du sujet, soit par la clé du message
NOSQL DOCUMENT PROTOCOL
MariaDB
MaxScale
id doc
App
MaxScale 6 - https://mariadb.com/developers/
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.
Migration en 0 clic
Changer simplement de moteur de stockage
Alter table engine=ColumnStore;
Alter table engine=InnoDB;
Alter table engine=Xpand;
https://mariadb.com/fr/resources/blog/a-typical-journey-migrating-to-mariadb-from-oracle/
Oracle
compatibility
SET SQL_MODE='ORACLE';
Is equivalent to
SET SQL_MODE='PIPES_AS_CONCAT,
ANSI_QUOTES,IGNORE_SPACE,ORACLE,
NO_KEY_OPTIONS,NO_TABLE_OPTIONS,
NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,
SIMULTANEOUS_ASSIGNMENT';
Advice and examples of easy Oracle migration
● Syntaxe supportée en mode compatibilité Oracle pour les procédures stockées, les
fonctions, les curseurs, les boucles, variables, fonctions, requêtes préparés, etc :
https://mariadb.com/kb/en/sql_modeoracle/
● Compatibilité avec les packages
https://mariadb.com/kb/en/create-package/
● Quelques exemples de migrations sans refactorisation du code de l’application
○ Migration depuis Oracle vers MariaDB sans changement majeurs dans l’application -
Pickup Li - FOSDEM 2021 : https://www.youtube.com/watch?v=kQXpjCSt1So
○ Migration depuis Oracle vers MariaDB - Lixun Peng - MariaDB Server Fest 2020
https://www.youtube.com/watch?v=5pqEZ91zHsA
○ Un autre apercu de comment migrer depuis Oracle sans changement dans l’application
https://mariadb.com/fr/resources/blog/a-typical-journey-migrating-to-mariadb-from-oracle/
https://www.youtube.com/watch?v=hpxeaS7jlnk
En résumé
● MariaDB est fait pour vous, mais aussi pour tous
https://www.youtube.com/watch?v=hpxeaS7jlnk
● Il répond à toutes les attentes
● Avec des architectures simple, répliqués, distribuées
○ À chaud ou à froid
Merci
Nous retrouver :
● Slack https://r.mariadb.com/join-community-slack
● Twitter : https://twitter.com/lemug_fr
● Linkedin : https://www.linkedin.com/groups/1627237/
● Site web https://www.le-mug.fr
Quelques liens
● https://mariadb.com/developers/
● https://github.com/mariadb-corporation/mariadb-server-docker
● https://github.com/mariadb-corporation/MaxScale
● https://github.com/mariadb-corporation/maxscale-docker
● https://github.com/mariadb-corporation/MaxGui
● https://mariadb.com
● https://mariadb.org

Mariadb une base de données NewSQL

  • 1.
    Une base dedonnées NewSQL POC Innovation – le 15 Fev. 2022 Christophe Villeneuve & Sébastien
  • 2.
  • 3.
    Aujourd’hui ● Les basesde données ● Pourquoi MariaDB ? ● Que fait-on avec MariaDB ?
  • 4.
    ● Les basesde données ● Pourquoi MariaDB ? ● Que fait-on avec MariaDB ?
  • 5.
    Qu’est ce ? Unebase données permet de stocker et de retrouver ● Données structurées ● Données semi-structurées ● Données brutes ● De l'information Les grandes familles : ● Relationel, Multi-modèle ● Document ● Key-value ● Relationel, Multi-colonne
  • 6.
    SGBD ● = Systèmede gestion de base de données ● Système servant ○ à stocker ○ à manipuler ○ à partager des données dans une base de données ● Garantir ○ la qualité ○ la pérennité ○ la cohérence ○ la confidentialité des informations tout en masquant la complexité des opérations.
  • 7.
  • 9.
    ● Les basesde données ● Pourquoi MariaDB ? ● Que fait-on de MariaDB ?
  • 10.
    Histoire de MariaDB L’origine Fondépar ● Michael Monty Widenius ● David Axmark ● 1983 - 1ères idées ● Fondé en 1995 ● 2007 Préparation pour Nasdaq ● 2008 Rachat par Sun ● 2009 Sun racheté par Oracle Dates importantes
  • 11.
    MariaDB Corp andFoundation ● Protège et garantie la liberté du code source ● MariaDB restera Open Source ● De plus en plus de moteur disponibles ● Alimenté par la communauté et MariaDB Corp ● https://mariadb.org Foundation ● Propose l'expérience requise et attendue par les entreprises ● Fournit un support 24/7 ● Offre des hotfix en cas de besoins à chaque clients ● Fournit un accès illimité aux ingénieurs de MariaDB ● https://mariadb.com Corporation
  • 12.
    What is MariaDBvalue added What is MariaDB MariaDB release the power of several storage engine simultaneously ● Choose the storage engine per table ○ One database can be splitted on several storage engines simultaneously ○ Use of Smart router allow several storage usage for one single query ● Allow to perform join on several storage engines ● Some awesome new storage engines ○ MariaDB ColumnStore for very fast analytics ○ MariaDB Xpand for distributed transaction SQL and analytic capabilities ● Plenty of possible architectures
  • 13.
    MariaDB : Unprojet 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 ● …
  • 14.
  • 15.
    https://mariadb.com/docs/release-notes/mariadb-enterprise-server-10-5/ MariaDB 10.5 New featuresand capabilities already in 10.5 ● Audit with table-specific filters ● Enhanced consistency for Semi-Sync Replication ● InnoDB no longer acquires advisory file locks by default ● ARM64 is now supported ● Improved audit log (proxy users)
  • 16.
    MariaDB 10.6 ● AtomicDDL (modification de schéma effectué en une seule opération) https://mariadb.com/kb/en/atomic-ddl/ ● IPv6 by Default ● JSON_TABLE() returns a table from JSON data. ● XA Transactions are supported on Galera ● Oracle compatibility increased
  • 17.
    MariaDB 10.6 New release,new release number ● MariaDB Enterprise Server and Community Server 10.6 ● MariaDB MaxScale 6.1 ● MariaDB ColumnStore 6.1 ● MariaDB Xpand 6.0 (with Columnar index) ○ First step towards a distributed HTAP DB ○ Preliminary benchmarks show a gain of 3x-50x for analytics (aggregations)
  • 18.
    MariaDB Community Server10.6.4 ● JSON_TABLE ● SYS_SCHEMA ● Ignore Index ● Atomic DDL ● Compatibility enhancements Features also included in MariaDB Enterprise 10.6 release
  • 19.
    https://mariadb.com/docs/features/mariadb-enterprise-server/ MariaDB Enterprise server10.6 ● Galera XA support ● Sybase compatibility ● Oracle compatibility (ROWNUM, ADD_MONTHS, TO_CHAR) ● ARM support ● Object filters for Enterprise Audit (backport on 10.4+) ● Sybase SQL Anywhere compatible alias handling (backport on 10.5) ● Enhanced consistency for Semi-Sync Replication (backport on 10.3+) ● MariaDB Global Transaction ID replication to other Galera nodes (backport on 10.4 from 10.5)
  • 20.
    https://mariadb.com/docs/features/mariadb-enterprise-server/ MariaDB Enterprise servervalue added ● Hardened version of MariaDB Community Server ● Built for production deployments ● Extensive QA ● Configured for production by default ● Scale and secure MariaDB Enterprise Server is available to all subscription customers
  • 21.
  • 22.
    SkySQL FIRSTS Smart Transactions Thefirst DBaaS to support transactional (OLTP), analytical (OLAP) and hybrid (HTAP) workloads for Smart Transactions. From the Source A DBaaS architected, engineered, and supported by database architects, engineers, and extraordinary support. Community to Mission Critical Expansive Topologies for all Applications Tiers. SkySQL Always On, Always Ready The cloud offering the latest bug fixes and security updates, always.
  • 23.
    Le cloud versionMariaDB ● Kubernetes for databases ● ServiceNow for the portal ● Prometheus and Grafana for the monitoring dashboard ● Deep learning for the workload analysis Platform ● MariaDB Platform ● MariaDB Enterprise Server ● MariaDB MaxScale ● MariaDB ColumnStore Database ● Database bug fixes and security patches (code) ● Database administration with SkyDBA Support ● Databases for transactions ● Data warehouses for analytics (columnar) ● Databases for smart transactions (row + columnar) ● Transparent query routing Features
  • 25.
    MariaDB SkySQL –Use it, don’t manage it ● Automated ● Automatic backups ● Restore on demand ● Automatic scaling ● Monitoring included ● Backed and supported by the team that built MariaDB ● SkyDBA – Your SkySQL DBA
  • 26.
    ● Les basesde données ● Pourquoi MariaDB ? ● Que fait-on de MariaDB ?
  • 27.
    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 Big Data - Colonnes Dynamiques Développeur - PCRE - Microseconds - Colonnes Virtuelles - Sequence engine - …
  • 28.
    MariaDB ColumnStore (⅓) Moteurde stockage orienté en colonnes ● Utilise une architecture de données distribuées massivement parallèle ● Système de stockage en colonnes ● Utile pour le Big Data ● Architecture (en parallèle) ○ Exécution de requêtes distribuée ○ Chargement de données Depuis la version 10.5.4 ● Disponible en tant que moteur de stockage pour le serveur MariaDB ○ Avant cela, il est uniquement disponible en téléchargement séparé.
  • 29.
    MariaDB ColumnStore (2/3) ●Axée sur la rangée ○ Les Lignes stockées séquentiellement dans un fichier
  • 30.
    MariaDB ColumnStore (3/3) ●Orienté en colonne ○ Chaque colonne est stockée dans un fichier séparé
  • 31.
    New Storage engines- ColumnStore MariaDB Enterprise ColumnStore is a columnar storage engine for ● online analytical processing (OLAP) ● data warehousing ● business intelligence ● hybrid transactional-analytical processing (HTAP) MariaDB Enterprise ColumnStore is included with MariaDB Enterprise Server.
  • 32.
    New Storage engines- ColumnStore MariaDB Enterprise ColumnStore is included with MariaDB Enterprise Server. ● Increased maximum DECIMAL precision to 38 ● Disk-based aggregation allows larger aggregated result sets than can fit in memory (for queries on billions rows) ● Transactional tables can be updated with data from ColumnStore tables ● Multi user / Concurrency Architectural Change ● Circular Join Support ● Automatic Select Handler (Server vs Engine) ● Added LZ4 compression ● Added encrypted password support for config files ● Dozens of performance and compatibility improvements
  • 33.
    Colonne dynamique ● Pontentre les BDD relationnelles et non relationnelles ● Toutes les colonnes stockées dans un « blob » ● Possibilité de le manipuler ● Possibilité de créer des index Virtuels 10
  • 34.
    Colonnes Dynamiques (¼) createtable 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] ], ...) 10
  • 35.
  • 36.
    Colonnes Dynamiques (3/4) >SELECTnom, column_list (nosql) FROM newsql; 10
  • 37.
    Colonnes Dynamiques (4/4) >SELECTnom, COLUMN_JSON(nosql) FROM newsql; >SELECT id,type,nom, COLUMN_GET(nosql, 'couleur' as char) AS couleur,prix FROM newsql; 10
  • 38.
    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 Installation dans My.cnf [mysqld] plugin-load=ha_connect.so
  • 39.
    Connect : exempleCSV Fichier first,last,birthday "Christophe","Villeneuve","Jan 1" "PHP","ODBC","Nov 22" > CREATE TABLE users_csv ( first varchar(32) NOT NULL, last varchar(32) NOT NULL, birthday varchar(50) NOT NULL ) ENGINE=CONNECT TABLE_TYPE =CSV FILE_NAME ='/var/lib/mysql/users.csv' HEADER=1 SEP_CHAR=',' QUOTED=1;
  • 40.
    Connect : exempleODBC > create Table table2 ENGINE=CONNECT TABLE_TYPE=ODBC SRCDEF='select key, sum(l_quantity) qt from dbt3.table1 group by key' CONNECTION='DSN=oracle;UID=login;PWD=password'; > MariaDB [dbt3]> select sum(qt) from (select qt from table2) as result; → 31444
  • 41.
    JSON ● Structure JSON{ Clé : Valeur } ● 2 possibilités : ○ En Fonctions : ■ https://mariadb.com/kb/en/json-functions/ ○ En Table ■ https://mariadb.com/resources/blog/introducing-json-tables/
  • 42.
    JSON en fonctions(⅓) > CREATE TABLE products( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, price DECIMAL(9,2) NOT NULL, stock INTEGER NOT NULL, attr VARCHAR(1024), CHECK ( attr IS NULL OR JSON_VALID(attr)) );
  • 43.
    JSON en fonctions(⅔) ● Ajoute une nouvelle colonne et extrait les attributs ‘colour’ > ALTER TABLE products ADD attr_colour VARCHAR(32) AS (JSON_VALUE(attr, '$.colour')); > CREATE INDEX products_attr_colour_ix ON products(attr_colour); > INSERT INTO products VALUES(NULL, 'Jeans', 10.5, 165, NULL); Query OK, 1 row affected (0.01 sec) > INSERT INTO products VALUES(NULL, 'Shirt', 10.5, 78, '{"size": 42, "colour": "white"}'); Query OK, 1 row affected (0.01 sec) > INSERT INTO products VALUES(NULL, 'Blouse', 17, 15, '{"colour": "white"}'); Query OK, 1 row affected (0.01 sec)
  • 44.
    JSON en fonctions(3/3) > SELECT * FROM products WHERE attr_colour = 'white';
  • 45.
    JSON en table(¼) > CREATE TABLE people ( id INT NOT NULL, name VARCHAR(50) NOT NULL, pets JSON );
  • 46.
    JSON en table(2/4) > SELECT id, JSON_VALUE(JSON_QUERY(pets, CONCAT('$[', ind.ind, ']')), '$.type') pet_type, JSON_VALUE(JSON_QUERY(pets, CONCAT('$[', ind.ind, ']')), '$.name') pet_name FROM people CROSS JOIN (SELECT 0 AS ind UNION ALL SELECT 1 AS ind) ind;
  • 47.
    JSON en table(¾) > UPDATE people SET pets = JSON_INSERT(pets, '$[0].favorite_foods', JSON_ARRAY('chicken', 'salmon', 'carrots')); > UPDATE people SET pets = JSON_INSERT(pets, '$[1].favorite_foods', JSON_ARRAY('tuna', 'turkey')); [ { "type": "dog", "name": "Duke", "favorite_foods": [ "chicken", "salmon", "carrots" ] }, { "type": "cat", "name": "Fluffy", "favorite_foods": [ "tuna", "turkey" ] } ]
  • 48.
    JSON en table(4/4) SELECT p.id, pt.pet_type, pt.pet_name, pt.favorite_food FROM people p, JSON_TABLE(p.pets, '$[*]' COLUMNS ( pet_type VARCHAR(10) PATH '$.type', pet_name VARCHAR(25) PATH '$.name', NESTED PATH '$.favorite_foods[*]' COLUMNS (favorite_food VARCHAR(25) PATH '$') ) ) pt;
  • 49.
    MyRocks storage engine ●développé chez Facebook sudo apt-get install mariadb-plugin-rocksdb INSTALL SONAME 'ha_rocksdb'; [mariadb] ... plugin_load_add = ha_rocksdb ● Ecriture massive ● Remplace TokuDB
  • 50.
    Spider (½) ● Moteurde stockage fédérés comme ○ Sharding / partitionnement ○ Transactions ● Intégré dans le pool de connexion ● Haute disponibilité Cluster Shared-Nothing ● Load balancing : ○ Accès par Spider cluster avec plusieurs serveurs MariaDB 10.5
  • 51.
  • 52.
    Xpand ● SQL distribué ●Disponible version Entreprise ● Vidéo : https://www.youtube.com/watch?v=TAvKGl0eCKI&t=51s
  • 53.
    https://mariadb.com/products/enterprise/xpand/ New Storage engines- Xpand ● Shared-nothing architecture ● Elasticity (i.e., add/remove nodes on demand) ● Self-managing (i.e., automatic rebalancing) ● ACID transactions ● Standard SQL (including JOINs) ● Continuous availability (i.e., automatic failover) ● MariaDB/MySQL or Postgres clients ● Session failover ● Dynamic load balancing ● Allow transactions AND analytics queries on one single dataset
  • 54.
    https://mariadb.com/products/enterprise/xpand/ New Storage engines- Xpand workloads ● Need very fast reads and writes ○ Customers expect an instant response ○ Scaling out in order to operate at the speed of memory ● Need to support lots of concurrent queries ○ Many customer interactions, each one results in multiple queries ○ Scaling out to support more concurrent processing ● Need to sustain lots of writes ○ More writes than reads, write needs to be very fast ○ Scaling out to increase disk IO ● Need to store a lot of data ○ Lots of customers, sessions, shopping carts and so on ○ Scaling out to increase storage capacity
  • 55.
    https://github.com/mariadb-corporation/MaxScale MariaDB MaxScale ● Proxyde base de données qui étend ○ la haute disponibilité ○ l'évolutivité ○ la sécurité du serveur MariaDB ○ permet le routage transparent des requêtes ● Simplifie le développement des applications ○ En les découplant de l'infrastructure de base de données sous-jacente. ● NoSQL ○ MongoDB / Cassandra…
  • 56.
  • 57.
    https://mariadb.com/docs/features/mariadb-maxscale/ MariaDB MaxScale 6 Maxscaleintroduced some exciting new features ● NoSQL protocol (Mongo API) support and compatibility ● Kafka Importer ● Allows user to stream data from a Kafka broker into MariaDB ● Kafka authentication and failover ● Visual Client/Query Editor ● MaxScale cluster configuration sync ● Increased log visibility through GUI and API ● Added prepared statement support to causal reads ● Several monitoring/UI related improvements
  • 58.
    MaxScale : Editeurde requêtes MaxScale 6 https://mariadb.com/fr/resources/blog/getting-started-with-the-mariadb-maxscale-gui/ ● Résultat formaté ● Visualisation ● Aperçu de données ● Coloration syntaxique
  • 59.
    KAFKA IMPORTER MariaDB MaxScale Kafka Lemodule KafkaImporter lit les messages de Kafka et les diffuse dans un serveur MariaDB. Les messages sont insérés dans une table désignée soit par le nom du sujet, soit par la clé du message
  • 60.
    NOSQL DOCUMENT PROTOCOL MariaDB MaxScale iddoc App MaxScale 6 - https://mariadb.com/developers/ 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.
  • 61.
  • 62.
    Changer simplement demoteur de stockage Alter table engine=ColumnStore; Alter table engine=InnoDB; Alter table engine=Xpand;
  • 63.
    https://mariadb.com/fr/resources/blog/a-typical-journey-migrating-to-mariadb-from-oracle/ Oracle compatibility SET SQL_MODE='ORACLE'; Is equivalentto SET SQL_MODE='PIPES_AS_CONCAT, ANSI_QUOTES,IGNORE_SPACE,ORACLE, NO_KEY_OPTIONS,NO_TABLE_OPTIONS, NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER, SIMULTANEOUS_ASSIGNMENT';
  • 64.
    Advice and examplesof easy Oracle migration ● Syntaxe supportée en mode compatibilité Oracle pour les procédures stockées, les fonctions, les curseurs, les boucles, variables, fonctions, requêtes préparés, etc : https://mariadb.com/kb/en/sql_modeoracle/ ● Compatibilité avec les packages https://mariadb.com/kb/en/create-package/ ● Quelques exemples de migrations sans refactorisation du code de l’application ○ Migration depuis Oracle vers MariaDB sans changement majeurs dans l’application - Pickup Li - FOSDEM 2021 : https://www.youtube.com/watch?v=kQXpjCSt1So ○ Migration depuis Oracle vers MariaDB - Lixun Peng - MariaDB Server Fest 2020 https://www.youtube.com/watch?v=5pqEZ91zHsA ○ Un autre apercu de comment migrer depuis Oracle sans changement dans l’application https://mariadb.com/fr/resources/blog/a-typical-journey-migrating-to-mariadb-from-oracle/
  • 65.
    https://www.youtube.com/watch?v=hpxeaS7jlnk En résumé ● MariaDBest fait pour vous, mais aussi pour tous https://www.youtube.com/watch?v=hpxeaS7jlnk ● Il répond à toutes les attentes ● Avec des architectures simple, répliqués, distribuées ○ À chaud ou à froid
  • 66.
    Merci Nous retrouver : ●Slack https://r.mariadb.com/join-community-slack ● Twitter : https://twitter.com/lemug_fr ● Linkedin : https://www.linkedin.com/groups/1627237/ ● Site web https://www.le-mug.fr
  • 67.
    Quelques liens ● https://mariadb.com/developers/ ●https://github.com/mariadb-corporation/mariadb-server-docker ● https://github.com/mariadb-corporation/MaxScale ● https://github.com/mariadb-corporation/maxscale-docker ● https://github.com/mariadb-corporation/MaxGui ● https://mariadb.com ● https://mariadb.org