Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Mariadb une base de données NewSQL

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 67 Publicité

Mariadb une base de données NewSQL

Télécharger pour lire hors ligne

Présentation effectuée pendant la piscine du POC Innovation de Epitech (15 février 2022) par Christophe Villeneuve avec Sébastien "MariaDB : une base de données NewSQL".
Après un tour d'horizon de l'évolution des bases de données, nous nous intéresserons sur la base de données MariaDB qui propose le NewSQL (NoSQL + SQL) et ces différents storages engines disponibles. Ainsi chaque problématique projet peut être couverte par celle-ci.

Présentation effectuée pendant la piscine du POC Innovation de Epitech (15 février 2022) par Christophe Villeneuve avec Sébastien "MariaDB : une base de données NewSQL".
Après un tour d'horizon de l'évolution des bases de données, nous nous intéresserons sur la base de données MariaDB qui propose le NewSQL (NoSQL + SQL) et ces différents storages engines disponibles. Ainsi chaque problématique projet peut être couverte par celle-ci.

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Mariadb une base de données NewSQL (20)

Publicité

Plus par Christophe Villeneuve (20)

Plus récents (20)

Publicité

Mariadb une base de données NewSQL

  1. 1. Une base de données NewSQL POC Innovation – le 15 Fev. 2022 Christophe Villeneuve & Sébastien
  2. 2. Seb Christophe Villeneuve
  3. 3. Aujourd’hui ● Les bases de données ● Pourquoi MariaDB ? ● Que fait-on avec MariaDB ?
  4. 4. ● Les bases de données ● Pourquoi MariaDB ? ● Que fait-on avec MariaDB ?
  5. 5. 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
  6. 6. 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.
  7. 7. Les tendances
  8. 8. ● Les bases de données ● Pourquoi MariaDB ? ● Que fait-on de MariaDB ?
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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 ● …
  13. 13. https://mariadb.com/resources/customer-stories/ Références
  14. 14. 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)
  15. 15. 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
  16. 16. 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)
  17. 17. 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
  18. 18. 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)
  19. 19. 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
  20. 20. Moteur de stockage
  21. 21. 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.
  22. 22. 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
  23. 23. 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
  24. 24. ● Les bases de données ● Pourquoi MariaDB ? ● Que fait-on de MariaDB ?
  25. 25. 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 - …
  26. 26. 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é.
  27. 27. MariaDB ColumnStore (2/3) ● Axée sur la rangée ○ Les Lignes stockées séquentiellement dans un fichier
  28. 28. MariaDB ColumnStore (3/3) ● Orienté en colonne ○ Chaque colonne est stockée dans un fichier séparé
  29. 29. 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.
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. Colonnes Dynamiques (2/4) 10
  34. 34. Colonnes Dynamiques (3/4) >SELECT nom, column_list (nosql) FROM newsql; 10
  35. 35. 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
  36. 36. 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
  37. 37. 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;
  38. 38. 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
  39. 39. 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/
  40. 40. 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)) );
  41. 41. 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)
  42. 42. JSON en fonctions (3/3) > SELECT * FROM products WHERE attr_colour = 'white';
  43. 43. JSON en table (¼) > CREATE TABLE people ( id INT NOT NULL, name VARCHAR(50) NOT NULL, pets JSON );
  44. 44. 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;
  45. 45. 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" ] } ]
  46. 46. 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;
  47. 47. 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
  48. 48. 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
  49. 49. https://mariadb.com/fr/resources/blog/uses-for-mariadb-and-the-spider-storage-engine/ Spider (2/2) ● Sharding 10.5
  50. 50. Xpand ● SQL distribué ● Disponible version Entreprise ● Vidéo : https://www.youtube.com/watch?v=TAvKGl0eCKI&t=51s
  51. 51. 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
  52. 52. 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
  53. 53. 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…
  54. 54. 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/
  55. 55. 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
  56. 56. 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
  57. 57. 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
  58. 58. 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.
  59. 59. Migration en 0 clic
  60. 60. Changer simplement de moteur de stockage Alter table engine=ColumnStore; Alter table engine=InnoDB; Alter table engine=Xpand;
  61. 61. 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';
  62. 62. 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/
  63. 63. 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
  64. 64. 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
  65. 65. 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

×