NoSQL. Stephane VAROQUI Field Services - Senior Consultant 1012.01.02



Documents pareils
NoSQL : hype ou innovation? Grégory Ogonowski / Recherches Octobre 2011

Cassandra chez Chronopost pour traiter en temps réel 1,5 milliard d événements par an

OpenPaaS Le réseau social d'entreprise

Apache, MariaDB & PHP pour un développement libre. Christophe

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Groupe de Discussion Big Data Aperçu des technologies et applications. Stéphane MOUTON

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Un peu de culture : Bases N osql L 1

Cassandra et Spark pour gérer la musique On-line

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

Cours 8 Not Only SQL

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Les bases de données relationnelles

Informatique & Systèmes de Communication. Stages de 12 à 16 semaines aux Etats-Unis

Cartographie des solutions BigData

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

BIG DATA. Veille technologique. Malek Hamouda Nina Lachia Léo Valette. Commanditaire : Thomas Milon. Encadré: Philippe Vismara

Hibernate vs. le Cloud Computing

Les participants repartiront de cette formation en ayant une vision claire de la stratégie et de l éventuelle mise en œuvre d un Big Data.

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Quels choix de base de données pour vos projets Big Data?

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

Optimisations des SGBDR. Étude de cas : MySQL

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Bases de Données NoSQL

20 ans du Master SIAD de Toulouse - BigData par l exemple - Julien DULOUT - 22 mars ans du SIAD -"Big Data par l'exemple" -Julien DULOUT

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Les bonnes pratiques. de l hébergement d un CMS

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

Mysql. Les requêtes préparées Prepared statements

Configurer la supervision pour une base MS SQL Server Viadéis Services

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Le NoSQL - Cassandra

L AVENIR DU NoSQL. Quel avenir pour le NoSQL?

MariaDB/MySQL Avancé. Pierre Mavro Creative Commons License

Pratique et administration des systèmes

QlikView et Google Big Query : Une réponse simple, rapide et peu coûteuse aux analyses Big Data

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

NoSQL. Etat de l art et benchmark

Anticiper et prédire les sinistres avec une approche Big Data

Big data et données géospatiales : Enjeux et défis pour la géomatique. Thierry Badard, PhD, ing. jr Centre de Recherche en Géomatique

Acquisition des données - Big Data. Dario VEGA Senior Sales Consultant

Le BigData, aussi par et pour les PMEs

Introduction à MySQL (ou MySQL en 3 heures montre en main)

Introduction à MapReduce/Hadoop et Spark

Programmation parallèle et distribuée

<Insert Picture Here> Solaris pour la base de donnés Oracle

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Java et les bases de données

INFO-F-404 : Techniques avancées de systèmes d exploitation

Guide d installation de SugarCRM Open Source version 4.5.1

L art d ordonnancer. avec JobScheduler. François BAYART

L écosystème Hadoop Nicolas Thiébaud Tuesday, July 2, 13

Olivier Mondet

Hadoop, les clés du succès

Projet d'infrastructure de stockage mutualisée

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Programmation parallèle et distribuée

FINI LA RÉCRÉ PASSONS AUX MÉGADONNÉES

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Bases de données documentaires et distribuées Cours NFE04

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

Les journées SQL Server 2013

CAS, un SSO web open source. 14h35-15h25 - La Seine A

Open Source Job Scheduler. Installation(s)

Déploiement OOo en environnement Windows Terminal Server

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Introduction à ElasticSearch

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

CREATION WEB DYNAMIQUE

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant

Comment Créer une Base de Données Ab Initio

Le langage SQL (première partie) c Olivier Caron

Guide Installation Serveur Extensive Testing

PHP 5. La base de données MySql. A. Belaïd 1

11/01/2014. Le Big Data Mining enjeux et approches techniques. Plan. Introduction. Introduction. Quelques exemples d applications

Benjamin Cornu Florian Joyeux. Les choses à connaître pour (essayer) de concurrencer Facebook.

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Présentation Windows Azure Hadoop Big Data - BI

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Notes de mise à jour. 4D v11 SQL Release 2 (11.2) Notes de mise à jour

Francis Mignault. ! Coauteur : Expert Oracle Application Express. ! Membre du Oracle APEX Advisory Board apex.oracle.com/vote

INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

WDpStats Procédure d installation

Transcription:

NoSQL Stephane VAROQUI Field Services - Senior Consultant Oracle, MySQL and InnoDB are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. 1012.01.02

Agenda SkySQL Caching Memcached Handler_socket MySQL et NoSQL 2

Introduction SkySQL 3

16 out of 20 most popular websites use MySQL as main front-end Database 1.Google 2.Facebook 3.YouTube 4.Yahoo! 5.Windows Live 6.Baidu 7.Wikipedia 8.Blogger 9.QQ.com 10.Twitter 1.MSN 2.Yahoo! JP 3.Amazon.com 4.Taobao 5.Google IN 6.Sina 7.Google DE 8.Google HK 9.Wordpress 10.eBay Source: Alexa Top Sites - 14 December 2010 4

SkySQL Ab Funded by: MySQL AB founders Monty Widenius and David Axmark US Investment group OnCorps.org Operating in 13 countries, with 90% of the team ex-mysql AB employees Backed by: Product Engineering MontyProgram Ab Top Community contributors and End Users 5

SkySQL partenariat de choix SPHINX Xtrabackup MMM 6

MySQL écosystème de compétition big data NoSQL / NewSQL land scale-up RDBMS scale-out RDBMS doc db key/ value graph db? 80s & 90s 00s & 10s 10s & 20s 0% 1% 10% 30% of world population online http://www.oracle.com/us/corporate/press/042364 7

MySQL NoSQL compétition Akiban, Cassandra, Citrusleaf, Clustrix, Couchbase, Dynomite, FlockDB, GenieDB, Hadoop, Hive, HyperGraphDB, HyperTable, MarkLogic Server, Memcached, MemSQL, MongoDB, MySQL, MySQL Cluster, MySQL with HandlerSocket, Neo4J, NimbusDB, Objectivity/DB, Ravel, Redis, RethinkDB, Riak, SimpleDB, Terracotta, Tokyo Cabinet, Voldemort, VoltDB, Xeround, Sphinx,HBase 8

Eventuellement consistant Atomic, Consistency, Isolation, PartitionTolerance 2PC, Lock Manager,Certificate MySQL Cluster, ScaleDB, VoltDB, Clustrix Consistency, Availability, Partition Tolerance Assync Replication,Vector clock, Timestamping, ITC CA Hbase, AP Cassandra 9

Cache 10

Cache 11

LAMP = caching Dans la BDD Consistant, sécurisé Cache résultats (Protocole,Parsing, Exécution) Cache mémoire (disque IO) Dans les front (ex APC) Cache résultats, objets en locale Réseau, BDD exécution, client exécution Dupliqué, taille limité Dans le NoSQL (ex Memcache) Scalable ( BDD exécution, client exécution) Memory vs Disques Dans le cloud (ex CDN, proxy) 12

Contrôle du cache Invalidation du cache Direct invalidation on update Timeout d'invalidation Logique dans l'application? Architecture assez performante a froid? QUID des résultats non déterministes? Distribution du cache Double indirection par clef de domaine et versionning Monitoring 13

MEMCACHE 14

MEMCACHE - Définition Table de hash en cluster : set/get/replace append/prepend Autoincrement Pas une database, pas de backup,d itération,de persitence, de redundance, de sécurité 15

MEMCACHE - Internals Serveur Never bloks libevents epoll/kqueue slab alocator LRU Thread per cpu Protocol Telnet able (default port 11211) All text base, ex :stats Store binary (nothing is escaped) Limit 1M object 500B key 16

MEMCACHE - Internals Consistante hashing Distribution des clefs non linéaire N N N N N N N 17

MEMCACHE dans l'architecture Invalidation du cache Direct invalidation on update Timeout d'invalidation Logique dans l'application? Architecture assez performante a froid? QUID des résultats non déterministes? Fragmentation du cache Double indirection par clef de domaine et gestion de version Monitoring 18

Memcache usage./ memcached - d - m 2048 - l 192. 168. 0. 10 - p 11211 - u mysql - vv Tel net 127. 0. 0. 1 11211 Set <key> <f l ags> <expt i me> <byt es> set key1 0 0 5 hel l o STORED get key1 VALUE key1 0 5 hel l o END st at s i t ems STAT i t ems: 1: number 1 STAT i t ems: 1: age 9566 STAT i t ems: 1: evi ct ed 0 STAT i t ems: 1: evi ct ed_nonzer o 0 STAT i t ems: 1: evi ct ed_t i me 0 STAT i t ems: 1: out of memor y 0 STAT i t ems: 1: t ai l r epai r s 0 STAT i t ems: 1: r ecl ai med 0 st at s sl abs STAT 1: chunk_si ze 96 STAT 1: chunks_ per _page 10922 STAT 1: t ot al _pages 1 STAT 1: t ot al _chunks 10922 STAT 1: used_chunks 1 STAT 1: f r ee_chunks 0 STAT 1: f r ee_chunks_end 10921 STAT 1: mem_r equest ed 74 STAT 1: get _hi t s 1 STAT 1: cmd_set 3 STAT 1: del et e_hi t s 0 STAT 1: i ncr _hi t s 0 STAT 1: decr _hi t s 0 STAT 1: cas_hi t s 0 STAT 1: cas_badval 0 STAT act i ve_sl abs 1 STAT total_malloced 1048512 st at s STAT pi d 59541 STAT upt i me 9617 STAT t i me 1303251992 STAT ver si on 1. 4. 5 STAT poi nt er _si ze 64 STAT r usage_ user 0. 137825 STAT r usage_syst em 0. 253672 STAT cur r _connect i ons 10 STAT t ot al _connect i ons 11 STAT connect i on_st r uct ur es 11 STAT cmd_ get 1 STAT cmd_ set 3 STAT cmd_f l ush 0 STAT get _hi t s 1 STAT get _mi sses 0 STAT del et e_mi sses 0 STAT del et e_hi t s 0 STAT i ncr _mi sses 0 STAT i ncr _hi t s 0 STAT decr _mi sses 0 STAT decr _hi t s 0 STAT cas_mi sses 0 STAT cas_hi t s 0 STAT cas_badval 0 STAT aut h_cmds 0 STAT aut h_er r or s 0 STAT byt es_r ead 154 STAT byt es_wr i t t en 188 STAT l i mi t _maxbyt es 67108864 STAT accept i ng_conns 1 STAT l i st en_di sabl ed_num 0 STAT t hr eads 4 STAT conn_ yi el ds 0 STAT bytes 74 STAT cur r _i t ems 1 STAT t ot al _i t ems 1 STAT evi ct i ons 0 STAT r ecl ai med 0 END 19

Handler Socket 20

Handler Socket MySQL plugin : https://github.com/ahiguti/handlersocket-plugin-for-mysql POC avec memcache Kazuho Oku at Cybozu Code par Akira Higuchi chez DeNA Déployé par Yoshinori Matsunobu chez DeNA 21

Handler Socket HandlerSocket manipule les données sans parser le SQL, moins de consommation CPU. HandlerSocket lit plusieurs requêtes et les exécute en bulk,réduit le CPU et l'usage des disques. HandlerSocket protocole client/server est plus compacte que mysql/libmysql pair, moins de consommation CPU sur le réseau. HanlerSocket est sujet au queeing ( ne pas negliger la mémoire) 22

Handler Socket 23

Handler Socket API PHP http://openpear.org/package/net_handlersocket http://github.com/tz-lom/hsphp http://code.google.com/p/php-handlersocket/ Java http://code.google.com/p/hs4j/ http://code.google.com/p/handlersocketforjava/ Python https://code.launchpad.net/~songofacandy/+junk/pyhandlersocke Ruby https://github.com/winebarrel/ruby-handlersocket https://github.com/miyucy/handlersocket JavaScript https://github.com/koichik/node-handlersocket 24

Handler Socket Setup loose_handlersocket_threads 8 * the number of processor cores loose_handlersocket_threads_wr number of processor cores Auto increment et atomique update pas dans la première version 25

Handler Socket protocol Protocol is a simple request/response protocol Support pipelines pour recherche multi ligne open, find, find_modify, insert HandlerSocket '=', '>', '>=', '<', '<=' HandlerSocket supporte limit offset #!/usr/bin/perl use strict; use warnings; use Net::HandlerSocket; my $args = { host => '127.0.0.1', port => 9998 }; my $hs = new Net::HandlerSocket($args); INSTALL PERL CLIENTS./autogen.sh $./configure --disable-handlersocket-server $ make $ sudo make install $ cd perl-net-handlersocket $ perl Makefile.PL $ make $ sudo make install my $res = $hs->open_index(0,'test', 'login','primary','user_name,user_email,created '); die $hs->get_error() if $res!= 0; for (my $search = 0; $search < 10000000; ++$search) { $res = $hs->execute_single(0, '=', [ '1000' ], 1, 0); die $hs->get_error() if $res->[0]!= 0; shift(@$res); for (my $row = 0; $row < 1; ++$row) { my $user_name= $res->[$row + 0]; my $user_email= $res->[$row + 1]; my $created= $res->[$row + 2]; } } 26

MySQL est NoSQL 27

MySQL 5.6.2 Memcache embarqué Backends InnoDB,Memory,NdB http://labs.mysql.com 28

MariaDB NoSQL MariaDB 5.2 Virtual column = fonctional index MariaDB 5.3 HANDLER commands; HANDLER READ avec les prepared statements. HandlerSocket ( accès directe a InnoDB) Support des données non structurées via les Dynamic columns (chaque ligne peu avoir un ensemble de colonne dynamique) http://varokism.blogspot.com/2011/01/20-to-50-improvement-inmariadb-53.html MariaDB 5.6 Hbase Storage engine for dynamique column 29

MariaDB Dynamic Column COLUMN_CREATE(column_nr, value,[column_nr,...]) COLUMN_ADD(blob,column_nr, value, [column_nr,...]) COLUMN_DELETE(blob, column_nr, column_nr...); COLUMN_EXISTS(blob, column_nr); COLUMN_LIST(blob, column_nr); COLUMN_GET(blob, column_nr, type); 30

MariaDB sample int main(int argc, char *argv[]) { cout << "start up" << endl; MYSQL * connection; connection = mysql_init(0); connection = mysql_real_connect(connection, 0, "stephane", "", "test", 0, "/tmp//mysql.sock", 0); if (0 == connection) { cerr << "connect failed:" << mysql_error(connection) << endl; return -1; } bzr branch lp:maria/5.3 cd mariadb-5.3/ BUILD/compile-pentium-all prefix=/usr/local/mariadb-5.3 sudo make install static const char * sql_statement ="HANDLER login READ `PRIMARY`=(?)"; MYSQL_STMT * stmt_handle = mysql_stmt_init(connection); if (0 == stmt_handle) { cerr << "stmt init failed:" << mysql_error(connection) << endl; return -1; } int mysql_return_code = mysql_stmt_prepare(stmt_handle, sql_statement, strlen(sql_statement) ); if (0!= mysql_return_code) { cerr << "stmt prepare failed:" << mysql_stmt_error(stmt_handle) << endl; mysql_stmt_close(stmt_handle); return -1; } 31

Drizzle GA Plugable Query Cache ( memcache) Blob Streaming PBMS ( HTTP protocole) Pas d'authentification possible 32

MERCI 33

NoSQL No locking 3 replicas Vector clocks conflit résolution 2 lectures, 2 écritures CAP compatible sans Lock Manager Dynamo, Riak,Voldemort, MongoDB Dernière écriture gagnante en cas de conflit Taille des vecteurs par compactage et ITC pour ajout suppression de noeuds 34