SlideShare a Scribd company logo
1 of 31
Download to read offline
HandlerSocket and similar Technologies -
NoSQL for MySQL


            FOSDEM, Brussels
            5./6. February 2011

               Oli Sennhauser
          Senior MySQL Consultant at FromDual

          oli.sennhauser@fromdual.com



                     www.fromdual.com           1
Contents

  NoSQL for MySQL
  ➢
      NoSQL Trends
  ➢
      SQL Overhead
  ➢
      HandlerSocket
  ➢
      NDB-API
  ➢
      BLOB Streaming Engine
  ➢
      Handler Interface
  ➢
      Graph Storage Engine




                        www.fromdual.com   2
About FromDual
●   We provide neutral and vendor independent:
    ●   Consulting (on-site and remote)
    ●   Remote-DBA / MySQL Operation Services
    ●   Support
    ●   Training (DBA, Performance Tuning, Scale-Out, High
        Availability, MySQL Cluster)
●   We are consulting partner of the Open Database
    Alliance (ODBA.org)
●   Oracle Silver Partner (OPN)


                     http://www.fromdual.com
                             www.fromdual.com                3
Trends
                            NoSQL




MySQL


         www.fromdual.com           4
What is the problem?

                           Storage Engine part



                             SQL overhead




●   SQL overhead is up to 70-80% for simple queries (~ 1 ms)!
●   with NO SQL → we could be up to 5 times faster
●   SQL is made for complex queries
●   NoSQL typically solves simple queries


                            www.fromdual.com                    5
Where does this overhead come
from?
             Application / Client

  Thread            Connection          mysqld
  Cache              Manager                                       Parser
                                             Optimizer
                      User Au-
                    thentication
                                        Access Control
                    Command                                           Table Open
  Logging
                    Dispatcher                                       Cache (.frm, fh)
                                         Table Manager
   Query            Query Cache                                      Table Definition
   Cache              Module                                         Cache (tbl def.)

                                     Handler Interface


  MyISAM   InnoDB    Memory   NDB      PBXT        Aria   XtraDB    Federated-X   ...


                                    www.fromdual.com                                    6
What can we do about?
●   HandlerSocket (2010)
●   NDB-API (1997!)
●   PrimeBase Streaming Engine (2008)
●   Handler Interface (2001/2011)
●   OQGRAPH SE (2009)




                      www.fromdual.com   7
HandlerSocket
●   October 20, 2010, Yoshinori Matsunobu:
    Using MySQL as a NoSQL - A story for ex-
    ceeding 750,000 qps on a commodity server




                    www.fromdual.com            8
SELECT

# SELECT * FROM test.test where id = 42;

use Net::HandlerSocket;

my $args = { host => 'master', port => 9998 };
my $hs = new Net::HandlerSocket($args);

my $res = $hs­>open_index(0, 'test', 'test', 'PRIMARY', 'id,data,ts');

$res = $hs­>execute_single(0, '=', [ '42' ], 1, 0);
shift(@$res);
for (my $row = 0; $row < 1; ++$row) {
  print "$idt$datat$tsn";
}

$hs­>close();



                            www.fromdual.com                             9
Infos
●   Compile yourself (easy!)
●   7.5 times more throughput?!?
●   Works with 5.5.8 and MariaDB
●   Faster than mem-
    cached!?!
●   In Percona-Server
    12.3

                     www.fromdual.com   10
Features / functionality
●   Different query patterns (see also handler interface later)
●   Lots of concurrent connections
●   Highly performant (200 – 700%)
●   No duplicate cache (MySQL and memcached)
●   No data inconsistency (MySQL and memcache)
●   Crash-safe
●   SQL access as well (for complex queries like reporting)
●   No need to modify/rebuild MySQL ?!?
●   Theoretically works for other storage engines as well (I did not
    test it).


                              www.fromdual.com                     11
NDB-API
●   1997, Mikael Ronström: The NDB Cluster – A
    parallel data server for telecommunications
    applications
●   November 25, 2008, Jonas Oreland: 950'000
    reads per second on 1 datanode




                    www.fromdual.com            12
MySQL Cluster
    Application   Application      Application     Application     Application
     NDB-API       NDB-API
                                                   Load balancer

                                   SQL Node 1      SQL Node 2      SQL Node 3
                                                                                 ...
Mgm Node 1


Mgm Node 2
                     Data Node 1            Data Node 2


                                     Sw.
                                      Sw.

                     Data Node 3            Data Node 4


                                www.fromdual.com                                  13
INSERT

// INSERT INTO cars VALUES (reg_no, brand, color);

const NdbDictionary::Dictionary* myDict= myNdb­>getDictionary();
const NdbDictionary::Table *myTable= myDict­>getTable("cars");

NdbTransaction* myTrans = myNdb­>startTransaction();
NdbOperation* myNdbOperation = myTrans­>getNdbOperation(myTable);

myNdbOperation­>insertTuple();
myNdbOperation­>equal("REG_NO", reg_no);
myNdbOperation­>setValue("BRAND", brand);
myNdbOperation­>setValue("COLOR", color);

int check = myTrans­>execute(NdbTransaction::Commit);

myTrans­>close();




                            www.fromdual.com                        14
SELECT
// SELECT * FROM cars;

const NdbDictionary::Dictionary* myDict= myNdb­>getDictionary();
const NdbDictionary::Table *myTable= myDict­>getTable("cars");

myTrans = myNdb­>startTransaction();
myScanOp = myTrans­>getNdbScanOperation(myTable);   
myScanOp­>readTuples(NdbOperation::LM_CommittedRead)

myRecAttr[0] = myScanOp­>getValue("REG_NO");
myRecAttr[1] = myScanOp­>getValue("BRAND");
myRecAttr[2] = myScanOp­>getValue("COLOR");

myTrans­>execute(NdbTransaction::NoCommit);

while ((check = myScanOp­>nextResult(true)) == 0) {
    
  std::cout << myRecAttr[0]­>u_32_value() << "t";
  std::cout << myRecAttr[1]­>aRef() << "t";
  std::cout << myRecAttr[2]­>aRef() << std::endl;
}
myNdb­>closeTransaction(myTrans);




                                   www.fromdual.com                15
Benchmarks and numbers
    ●   ./flexAsynch -ndbrecord -temp -con 4 -t 16
        -p 312 -l 3 -a 2 -r 2
    ●   From the MySQL Cluster test suite
        (src/storage/ndb/test/ndbapi)
●   16 number of concurrent threads (-t)             ●   4 concurrent connections (-con)
    312 number of parallel operation per thread
●
                                                     ●   2 number of records (-r ?)
●   3 iterations (-l)
                                                     ●   1 32-bit word per attribute
●   2 attributes per table (8 bytes) (-a)
                                                     ●   1 ndbmtd (1 NoOfRepl.)

    insert average: 506506/s min: 497508/s max: 522613/s stddev: 2%
    update average: 503664/s min: 495533/s max: 507833/s stddev: 1%
    delete average: 494225/s min: 474705/s max: 518272/s stddev: 3%
    read   average: 980386/s min: 942242/s max: 1028006/s stddev: 2%



                                            www.fromdual.com                               16
Learnings
●   Observations
    ● CPU's not maxed out. "Somewhere" is potential !?!
    ● When you overdo: CPU is maxed out and performance

      drops to 14%!
●   The fakes:
    ● Look at the parameters!
    ● All other setups: I got worse throughput


    ● IP instead of localhost: 89% throughput


●   Learnings:
    ●   Do not trust benchmarks you did not fake yourself!


                             www.fromdual.com                17
BLOB Streaming Project
●   April 2008, Paul McCullagh: Introduction to
    the BLOB Streaming Project
●   March 5 2010, Barry Leslie: Upload 1000+
    BLOB's per second!




                     www.fromdual.com             18
BLOB's local and in the cloud




             www.fromdual.com   19
Advantages of BLOB's in the
database
●   old: RDBMS are not fast in storing BLOB's
    → do NOT store BLOB's in the databases
●   new: With NoSQL technologies it becomes much
    better!
●   With PBSE: atomic transactions → No “dangling”
    references.
●   BLOB's in the normal database Backup !?!
●   BLOB's can be replicated
●   BLOB's in the DB will scale better. Most file systems
    perform poorly when the number of files exceeds 2
    million ?
                         www.fromdual.com                   20
The Handler Interface
●   October 2001, MySQL manual: A new
    HANDLER interface to MyISAM tables
●   December 27, 2010, Stephane Varoqui:
    Using MySQL as a NoSQL: a story for
    exceeding 450'000 qps with MariaDB
●   January 10, 2011, Stephane Varoqui: 20% to
    50% improvement in MariaDB 5.3 Handler
    Interface using prepared statement


                    www.fromdual.com         21
Skipping overhead with Handler
Interface
             Application / Client

   Thread           Connection          mysqld
   Cache             Manager                                       Parser
                                             Optimizer
                      User Au-
                    thentication
                                        Access Control
                    Command                                           Table Open
  Logging
                    Dispatcher                                       Cache (.frm, fh)
                                         Table Manager
   Query            Query Cache                                      Table Definition
   Cache              Module                                         Cache (tbl def.)

                                     Handler Interface


  MyISAM   InnoDB    Memory   NDB      PBXT        Aria   XtraDB    Federated-X   ...


                                    www.fromdual.com                                    22
HANDLER Example
# MySQL
# SELECT * FROM family;
                                                HANDLER tbl OPEN
HANDLER family OPEN;
                                                HANDLER tbl READ idx (..., ..., …)
HANDLER family
                                                  WHERE ... LIMIT ...
   READ `PRIMARY` = (id)
  WHERE id = 1;
                                                HANDLER tbl READ idx FIRST
HANDLER family CLOSE;
                                                  WHERE ... LIMIT ...
                                                HANDLER tbl READ idx NEXT
                                                  WHERE ... LIMIT ...
# With MariaDB 5.3
                                                HANDLER tbl READ idx PREV
                                                  WHERE ... LIMIT ...
HANDLER family OPEN;
                                                HANDLER tbl READ idx LAST
PREPARE stmt
                                                  WHERE ... LIMIT ...
   FROM 'HANDLER family
            READ `PRIMARY` = (id)
                                                HANDLER tbl READ FIRST
           WHERE id = ?';
                                                  WHERE ... LIMIT ...
set @id=1;
                                                HANDLER tbl READ NEXT
EXECUTE stmt USING @id;
                                                  WHERE ... LIMIT ...
DEALLOCATE PREPARE stmt;
HANDLER family CLOSE;
                                                HANDLER tbl CLOSE
Use persistent connections!!!



                                    www.fromdual.com                                 23
Characteristics of the Handler
Interface
●   HANDLER is faster than SELECT:
    ●   Less parsing involved
    ●   No optimizer overhead
    ●   Less query-checking overhead
    ●   The table does not have to be locked between two handler
        requests
●   No consistent look of the data (dirty reads are permitted)
●   Some optimizations possible that SELECT does not allow
●   Traverse the database in a manner that is difficult (or even
    impossible) to accomplish with SELECT



                                www.fromdual.com                   24
A Graph Storage Engine
●   May 5, 2009, Arjen Lentz: OQGRAPH
    Computation Engine for MySQL, MariaDB &
    Drizzle




●   It's included in MariaDB 5.1 ff.
●   And available for MySQL 5.0 ff.
                       www.fromdual.com       25
How does it feel?
●   It is similar to MEMORY SE (persistency, locking, trx)
●   We talk in:                                      Node
    ●   Node/Item/vertex and
    ●   Edge/connection/link
●   Edges have a direction
                                                               Edge
●   We can do networks and hierarchies
    ●   (family relations, friends of friends, fastest way from a to b)
●   To talk to the OQGRAPH SE we use the latches (which
    algorithm to use)
●   It is a computational engine not a storage engine!


                                  www.fromdual.com                        26
Simple example: My family
                                             SELECT f1.name AS parent, f2.name AS child
INSERT INTO family VALUES                      FROM relation AS r
  (1, 'Grand­grand­ma')                        JOIN family f1 ON f1.id = r.origid
, (2, 'Grand­ma')                              JOIN family f2 ON f2.id = r.destid;
, (3, 'Grand­uncle')
, (4, 'Grand­aunt')                          +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+
, (5, 'Grand­pa')                            | parent         | child       |
, (6, 'Mother')                              +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+
, (7, 'Uncle 1')                             | Grand­grand­ma | Grand­ma    |
, (8, 'Uncle 2')                             | Grand­grand­ma | Grand­uncle |
, (9, 'Father')                              | Grand­grand­ma | Grand­aunt  |
, (10, 'Me')                                 | Grand­ma       | Mother      |
, (11, 'Sister');                            | Grand­ma       | Uncle 1     |
                                             | Grand­ma       | Uncle 2     |
INSERT INTO relation (origid, destid)        | Grand­pa       | Mother      |
VALUES                                       | Grand­pa       | Uncle 1     |
  (1, 2), (1, 3), (1, 4)                     | Grand­pa       | Uncle 2     |
, (2, 6), (2, 7), (2, 8)                     | Mother         | Me          |
, (5, 6), (5, 7), (5, 8)                     | Mother         | Sister      |
, (6, 10), (6, 11)                           | Father         | Me          |
, (9, 10), (9, 11);                          | Father         | Sister      |
                                             +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+



                                   www.fromdual.com                                   27
Network queries

                                                       SELECT r.weight, r.seq, f.name
                                                         FROM relation AS r
SELECT GROUP_CONCAT(f.name SEPARATOR ' ­> ')             JOIN family AS f ON (r.linkid = f.id)
       AS path
       AS path                                          WHERE r.latch = 2
  FROM relation AS r
  FROM relation AS r
                                                          AND r.destid = 10;
  JOIN family AS f ON (r.linkid = f.id)
  JOIN family AS f ON (r.linkid = f.id)
 WHERE latch = 1
   AND origid = 1
   AND origid = 1
   AND destid = 10
   AND destid = 10                                     +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­+
ORDER BY seq;                                          | weight | seq  | name           |
                                                       +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­+
                                                       |      3 |    6 | Grand­grand­ma |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+         |      2 |    5 | Grand­pa       |
| path                                       |         |      2 |    4 | Grand­ma       |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+         |      1 |    3 | Father         |
| Grand­grand­ma ­> Grand­ma ­> Mother ­> Me |         |      1 |    2 | Mother         |
+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+
                                                       |      0 |    1 | Me             |
                                                       +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­+
latch = 1: Find shortest path (Dijkstra)
latch = 1: Find shortest path (Dijkstra)
                                                       latch = 2: Find originating nodes
                                                                  (Breadth­first search)




                                           www.fromdual.com                                      28
Resume
●   SQL is good for complex queries
●   NoSQL is typically for simple queries
●   Be careful with performance numbers!
●   Architecture / coding becomes more
    complex
●   You can gain better performance

●   But it is interesting like hell!
                       www.fromdual.com     29
Literature
●   Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server:
    http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
●   950k reads per second on 1 datanode: http://jonasoreland.blogspot.com/2008/11/950k-reads-
    per-second-on-1-datanode.html
●   Scalable BLOB Streaming Infrastructure for MySQL and Drizzle:
    http://www.blobstreaming.org/
●   HandlerSocket: Why did our version not take off?
    http://pbxt.blogspot.com/2010/12/handlersocket-why-did-out-version-did.html
●   Using MySQL as a NoSQL: a story for exceeding 450000 qps with MariaDB:
    http://varokism.blogspot.com/2010/12/using-mysql-as-nosql-story-for_27.html
●   HANDLER Syntax: http://dev.mysql.com/doc/refman/5.5/en/handler.html
●   GRAPH Computation Engine – Documentation: http://openquery.com/graph/doc




                                        www.fromdual.com                                   30
Q&A


                Questions ?

                Discussion?


      We have some slots free to provide
      you personal consulting services...


                   www.fromdual.com         31

More Related Content

What's hot

FOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsFOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsValerii Kravchuk
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLFromDual GmbH
 
MySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitationsMySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitationsJean-François Gagné
 
Tracing and profiling my sql (percona live europe 2019) draft_1
Tracing and profiling my sql (percona live europe 2019) draft_1Tracing and profiling my sql (percona live europe 2019) draft_1
Tracing and profiling my sql (percona live europe 2019) draft_1Valerii Kravchuk
 
MySQL/MariaDB Parallel Replication: inventory, use-case and limitations
MySQL/MariaDB Parallel Replication: inventory, use-case and limitationsMySQL/MariaDB Parallel Replication: inventory, use-case and limitations
MySQL/MariaDB Parallel Replication: inventory, use-case and limitationsJean-François Gagné
 
MySQL Parallel Replication: inventory, use-cases and limitations
MySQL Parallel Replication: inventory, use-cases and limitationsMySQL Parallel Replication: inventory, use-cases and limitations
MySQL Parallel Replication: inventory, use-cases and limitationsJean-François Gagné
 
Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Valerii Kravchuk
 
Riding the Binlog: an in Deep Dissection of the Replication Stream
Riding the Binlog: an in Deep Dissection of the Replication StreamRiding the Binlog: an in Deep Dissection of the Replication Stream
Riding the Binlog: an in Deep Dissection of the Replication StreamJean-François Gagné
 
MariaDB Server on macOS - FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS -  FOSDEM 2022 MariaDB DevroomMariaDB Server on macOS -  FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS - FOSDEM 2022 MariaDB DevroomValeriy Kravchuk
 
What's New in MySQL 5.7
What's New in MySQL 5.7What's New in MySQL 5.7
What's New in MySQL 5.7Olivier DASINI
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalValeriy Kravchuk
 
MySQLドライバの改良と軽量O/Rマッパーの紹介
MySQLドライバの改良と軽量O/Rマッパーの紹介MySQLドライバの改良と軽量O/Rマッパーの紹介
MySQLドライバの改良と軽量O/Rマッパーの紹介kwatch
 
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...Jean-François Gagné
 
Tuning Linux for Databases.
Tuning Linux for Databases.Tuning Linux for Databases.
Tuning Linux for Databases.Alexey Lesovsky
 
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomMore on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomValeriy Kravchuk
 
OpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto García
OpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto GarcíaOpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto García
OpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto GarcíaOpenNebula Project
 
Gluster volume snapshot
Gluster volume snapshotGluster volume snapshot
Gluster volume snapshotRajesh Joseph
 
The New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and moreThe New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and moreMariaDB Corporation
 

What's hot (20)

FOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAsFOSDEM 2015: gdb tips and tricks for MySQL DBAs
FOSDEM 2015: gdb tips and tricks for MySQL DBAs
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQL
 
MySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitationsMySQL Parallel Replication: inventory, use-case and limitations
MySQL Parallel Replication: inventory, use-case and limitations
 
Tracing and profiling my sql (percona live europe 2019) draft_1
Tracing and profiling my sql (percona live europe 2019) draft_1Tracing and profiling my sql (percona live europe 2019) draft_1
Tracing and profiling my sql (percona live europe 2019) draft_1
 
MySQL/MariaDB Parallel Replication: inventory, use-case and limitations
MySQL/MariaDB Parallel Replication: inventory, use-case and limitationsMySQL/MariaDB Parallel Replication: inventory, use-case and limitations
MySQL/MariaDB Parallel Replication: inventory, use-case and limitations
 
MySQL Parallel Replication: inventory, use-cases and limitations
MySQL Parallel Replication: inventory, use-cases and limitationsMySQL Parallel Replication: inventory, use-cases and limitations
MySQL Parallel Replication: inventory, use-cases and limitations
 
Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)
 
Riding the Binlog: an in Deep Dissection of the Replication Stream
Riding the Binlog: an in Deep Dissection of the Replication StreamRiding the Binlog: an in Deep Dissection of the Replication Stream
Riding the Binlog: an in Deep Dissection of the Replication Stream
 
MariaDB Server on macOS - FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS -  FOSDEM 2022 MariaDB DevroomMariaDB Server on macOS -  FOSDEM 2022 MariaDB Devroom
MariaDB Server on macOS - FOSDEM 2022 MariaDB Devroom
 
How to Monitor MySQL
How to Monitor MySQLHow to Monitor MySQL
How to Monitor MySQL
 
What's New in MySQL 5.7
What's New in MySQL 5.7What's New in MySQL 5.7
What's New in MySQL 5.7
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) final
 
MySQLドライバの改良と軽量O/Rマッパーの紹介
MySQLドライバの改良と軽量O/Rマッパーの紹介MySQLドライバの改良と軽量O/Rマッパーの紹介
MySQLドライバの改良と軽量O/Rマッパーの紹介
 
Kvm optimizations
Kvm optimizationsKvm optimizations
Kvm optimizations
 
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
 
Tuning Linux for Databases.
Tuning Linux for Databases.Tuning Linux for Databases.
Tuning Linux for Databases.
 
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB DevroomMore on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
More on bpftrace for MariaDB DBAs and Developers - FOSDEM 2022 MariaDB Devroom
 
OpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto García
OpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto GarcíaOpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto García
OpenNebulaConf2015 2.02 Backing up your VM’s with Bacula - Alberto García
 
Gluster volume snapshot
Gluster volume snapshotGluster volume snapshot
Gluster volume snapshot
 
The New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and moreThe New MariaDB Offering - MariaDB 10, MaxScale and more
The New MariaDB Offering - MariaDB 10, MaxScale and more
 

Viewers also liked

MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6FromDual GmbH
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsFromDual GmbH
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerFromDual GmbH
 
OpenExpo: MySQL, Where are you going?
OpenExpo: MySQL, Where are you going?OpenExpo: MySQL, Where are you going?
OpenExpo: MySQL, Where are you going?FromDual GmbH
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 
MySQL configuration - The most important Variables
MySQL configuration - The most important VariablesMySQL configuration - The most important Variables
MySQL configuration - The most important VariablesFromDual GmbH
 
FOSDEM 2012: New Features in MySQL 5.6
FOSDEM 2012: New Features in MySQL 5.6FOSDEM 2012: New Features in MySQL 5.6
FOSDEM 2012: New Features in MySQL 5.6FromDual GmbH
 

Viewers also liked (9)

NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
OpenExpo: MySQL, Where are you going?
OpenExpo: MySQL, Where are you going?OpenExpo: MySQL, Where are you going?
OpenExpo: MySQL, Where are you going?
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
Froscon 2012 DWH
Froscon 2012 DWHFroscon 2012 DWH
Froscon 2012 DWH
 
MySQL configuration - The most important Variables
MySQL configuration - The most important VariablesMySQL configuration - The most important Variables
MySQL configuration - The most important Variables
 
FOSDEM 2012: New Features in MySQL 5.6
FOSDEM 2012: New Features in MySQL 5.6FOSDEM 2012: New Features in MySQL 5.6
FOSDEM 2012: New Features in MySQL 5.6
 

Similar to NoSQL with MySQL

Ukoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dbaUkoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dbaorablue11
 
UKOUG 2011: Practical MySQL Tuning
UKOUG 2011: Practical MySQL TuningUKOUG 2011: Practical MySQL Tuning
UKOUG 2011: Practical MySQL TuningFromDual GmbH
 
NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database OverviewSteve Min
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsLenz Grimmer
 
Mysqlhacodebits20091203 1260184765-phpapp02
Mysqlhacodebits20091203 1260184765-phpapp02Mysqlhacodebits20091203 1260184765-phpapp02
Mysqlhacodebits20091203 1260184765-phpapp02Louis liu
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsLenz Grimmer
 
MySQL Cluster (NDB) - Best Practices Percona Live 2017
MySQL Cluster (NDB) - Best Practices Percona Live 2017MySQL Cluster (NDB) - Best Practices Percona Live 2017
MySQL Cluster (NDB) - Best Practices Percona Live 2017Severalnines
 
Squeak DBX
Squeak DBXSqueak DBX
Squeak DBXESUG
 
HandlerSocket - A NoSQL plugin for MySQL
HandlerSocket - A NoSQL plugin for MySQLHandlerSocket - A NoSQL plugin for MySQL
HandlerSocket - A NoSQL plugin for MySQLJui-Nan Lin
 
MariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin Frankfurt
MariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin FrankfurtMariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin Frankfurt
MariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin FrankfurtMariaDB Corporation
 
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007eLiberatica
 
M|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocksM|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocksMariaDB plc
 
Locality of (p)reference
Locality of (p)referenceLocality of (p)reference
Locality of (p)referenceFromDual GmbH
 
Fosdem2012 mariadb-5.3-query-optimizer-r2
Fosdem2012 mariadb-5.3-query-optimizer-r2Fosdem2012 mariadb-5.3-query-optimizer-r2
Fosdem2012 mariadb-5.3-query-optimizer-r2Sergey Petrunya
 
Open stack HA - Theory to Reality
Open stack HA -  Theory to RealityOpen stack HA -  Theory to Reality
Open stack HA - Theory to RealitySriram Subramanian
 
MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...
MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...
MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...ronwarshawsky
 

Similar to NoSQL with MySQL (20)

Ukoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dbaUkoug 2011 mysql_arch_for_orcl_dba
Ukoug 2011 mysql_arch_for_orcl_dba
 
UKOUG 2011: Practical MySQL Tuning
UKOUG 2011: Practical MySQL TuningUKOUG 2011: Practical MySQL Tuning
UKOUG 2011: Practical MySQL Tuning
 
NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database Overview
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
Mysqlhacodebits20091203 1260184765-phpapp02
Mysqlhacodebits20091203 1260184765-phpapp02Mysqlhacodebits20091203 1260184765-phpapp02
Mysqlhacodebits20091203 1260184765-phpapp02
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
MySQL Cluster (NDB) - Best Practices Percona Live 2017
MySQL Cluster (NDB) - Best Practices Percona Live 2017MySQL Cluster (NDB) - Best Practices Percona Live 2017
MySQL Cluster (NDB) - Best Practices Percona Live 2017
 
MongoDB Devops Madrid February 2012
MongoDB Devops Madrid February 2012MongoDB Devops Madrid February 2012
MongoDB Devops Madrid February 2012
 
mongodb tutorial
mongodb tutorialmongodb tutorial
mongodb tutorial
 
Squeak DBX
Squeak DBXSqueak DBX
Squeak DBX
 
Introduction to Galera Cluster
Introduction to Galera ClusterIntroduction to Galera Cluster
Introduction to Galera Cluster
 
HandlerSocket - A NoSQL plugin for MySQL
HandlerSocket - A NoSQL plugin for MySQLHandlerSocket - A NoSQL plugin for MySQL
HandlerSocket - A NoSQL plugin for MySQL
 
MariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin Frankfurt
MariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin FrankfurtMariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin Frankfurt
MariaDB und mehr - MariaDB Roadshow Summer 2014 Hamburg Berlin Frankfurt
 
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
"Advanced MySQL 5 Tuning" by Michael Monty Widenius @ eLiberatica 2007
 
M|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocksM|18 How Facebook Migrated to MyRocks
M|18 How Facebook Migrated to MyRocks
 
Locality of (p)reference
Locality of (p)referenceLocality of (p)reference
Locality of (p)reference
 
Fosdem2012 mariadb-5.3-query-optimizer-r2
Fosdem2012 mariadb-5.3-query-optimizer-r2Fosdem2012 mariadb-5.3-query-optimizer-r2
Fosdem2012 mariadb-5.3-query-optimizer-r2
 
EVCache & Moneta (GoSF)
EVCache & Moneta (GoSF)EVCache & Moneta (GoSF)
EVCache & Moneta (GoSF)
 
Open stack HA - Theory to Reality
Open stack HA -  Theory to RealityOpen stack HA -  Theory to Reality
Open stack HA - Theory to Reality
 
MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...
MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...
MongoDB performance tuning and load testing, NOSQL Now! 2013 Conference prese...
 

More from FromDual GmbH

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...FromDual GmbH
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?FromDual GmbH
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopFromDual GmbH
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New FeaturesFromDual GmbH
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA'sFromDual GmbH
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/RecoveryFromDual GmbH
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?FromDual GmbH
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterFromDual GmbH
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationFromDual GmbH
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015FromDual GmbH
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?FromDual GmbH
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprintsFromDual GmbH
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014FromDual GmbH
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLFromDual GmbH
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexingFromDual GmbH
 

More from FromDual GmbH (20)

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New Features
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New Features
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New Features
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA's
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/Recovery
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und Cluster
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA's
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprints
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQL
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexing
 

Recently uploaded

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 

Recently uploaded (20)

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 

NoSQL with MySQL

  • 1. HandlerSocket and similar Technologies - NoSQL for MySQL FOSDEM, Brussels 5./6. February 2011 Oli Sennhauser Senior MySQL Consultant at FromDual oli.sennhauser@fromdual.com www.fromdual.com 1
  • 2. Contents NoSQL for MySQL ➢ NoSQL Trends ➢ SQL Overhead ➢ HandlerSocket ➢ NDB-API ➢ BLOB Streaming Engine ➢ Handler Interface ➢ Graph Storage Engine www.fromdual.com 2
  • 3. About FromDual ● We provide neutral and vendor independent: ● Consulting (on-site and remote) ● Remote-DBA / MySQL Operation Services ● Support ● Training (DBA, Performance Tuning, Scale-Out, High Availability, MySQL Cluster) ● We are consulting partner of the Open Database Alliance (ODBA.org) ● Oracle Silver Partner (OPN) http://www.fromdual.com www.fromdual.com 3
  • 4. Trends NoSQL MySQL www.fromdual.com 4
  • 5. What is the problem? Storage Engine part SQL overhead ● SQL overhead is up to 70-80% for simple queries (~ 1 ms)! ● with NO SQL → we could be up to 5 times faster ● SQL is made for complex queries ● NoSQL typically solves simple queries www.fromdual.com 5
  • 6. Where does this overhead come from? Application / Client Thread Connection mysqld Cache Manager Parser Optimizer User Au- thentication Access Control Command Table Open Logging Dispatcher Cache (.frm, fh) Table Manager Query Query Cache Table Definition Cache Module Cache (tbl def.) Handler Interface MyISAM InnoDB Memory NDB PBXT Aria XtraDB Federated-X ... www.fromdual.com 6
  • 7. What can we do about? ● HandlerSocket (2010) ● NDB-API (1997!) ● PrimeBase Streaming Engine (2008) ● Handler Interface (2001/2011) ● OQGRAPH SE (2009) www.fromdual.com 7
  • 8. HandlerSocket ● October 20, 2010, Yoshinori Matsunobu: Using MySQL as a NoSQL - A story for ex- ceeding 750,000 qps on a commodity server www.fromdual.com 8
  • 10. Infos ● Compile yourself (easy!) ● 7.5 times more throughput?!? ● Works with 5.5.8 and MariaDB ● Faster than mem- cached!?! ● In Percona-Server 12.3 www.fromdual.com 10
  • 11. Features / functionality ● Different query patterns (see also handler interface later) ● Lots of concurrent connections ● Highly performant (200 – 700%) ● No duplicate cache (MySQL and memcached) ● No data inconsistency (MySQL and memcache) ● Crash-safe ● SQL access as well (for complex queries like reporting) ● No need to modify/rebuild MySQL ?!? ● Theoretically works for other storage engines as well (I did not test it). www.fromdual.com 11
  • 12. NDB-API ● 1997, Mikael Ronström: The NDB Cluster – A parallel data server for telecommunications applications ● November 25, 2008, Jonas Oreland: 950'000 reads per second on 1 datanode www.fromdual.com 12
  • 13. MySQL Cluster Application Application Application Application Application NDB-API NDB-API Load balancer SQL Node 1 SQL Node 2 SQL Node 3 ... Mgm Node 1 Mgm Node 2 Data Node 1 Data Node 2 Sw. Sw. Data Node 3 Data Node 4 www.fromdual.com 13
  • 15. SELECT // SELECT * FROM cars; const NdbDictionary::Dictionary* myDict= myNdb­>getDictionary(); const NdbDictionary::Table *myTable= myDict­>getTable("cars"); myTrans = myNdb­>startTransaction(); myScanOp = myTrans­>getNdbScanOperation(myTable);    myScanOp­>readTuples(NdbOperation::LM_CommittedRead) myRecAttr[0] = myScanOp­>getValue("REG_NO"); myRecAttr[1] = myScanOp­>getValue("BRAND"); myRecAttr[2] = myScanOp­>getValue("COLOR"); myTrans­>execute(NdbTransaction::NoCommit); while ((check = myScanOp­>nextResult(true)) == 0) {        std::cout << myRecAttr[0]­>u_32_value() << "t";   std::cout << myRecAttr[1]­>aRef() << "t";   std::cout << myRecAttr[2]­>aRef() << std::endl; } myNdb­>closeTransaction(myTrans); www.fromdual.com 15
  • 16. Benchmarks and numbers ● ./flexAsynch -ndbrecord -temp -con 4 -t 16 -p 312 -l 3 -a 2 -r 2 ● From the MySQL Cluster test suite (src/storage/ndb/test/ndbapi) ● 16 number of concurrent threads (-t) ● 4 concurrent connections (-con) 312 number of parallel operation per thread ● ● 2 number of records (-r ?) ● 3 iterations (-l) ● 1 32-bit word per attribute ● 2 attributes per table (8 bytes) (-a) ● 1 ndbmtd (1 NoOfRepl.) insert average: 506506/s min: 497508/s max: 522613/s stddev: 2% update average: 503664/s min: 495533/s max: 507833/s stddev: 1% delete average: 494225/s min: 474705/s max: 518272/s stddev: 3% read   average: 980386/s min: 942242/s max: 1028006/s stddev: 2% www.fromdual.com 16
  • 17. Learnings ● Observations ● CPU's not maxed out. "Somewhere" is potential !?! ● When you overdo: CPU is maxed out and performance drops to 14%! ● The fakes: ● Look at the parameters! ● All other setups: I got worse throughput ● IP instead of localhost: 89% throughput ● Learnings: ● Do not trust benchmarks you did not fake yourself! www.fromdual.com 17
  • 18. BLOB Streaming Project ● April 2008, Paul McCullagh: Introduction to the BLOB Streaming Project ● March 5 2010, Barry Leslie: Upload 1000+ BLOB's per second! www.fromdual.com 18
  • 19. BLOB's local and in the cloud www.fromdual.com 19
  • 20. Advantages of BLOB's in the database ● old: RDBMS are not fast in storing BLOB's → do NOT store BLOB's in the databases ● new: With NoSQL technologies it becomes much better! ● With PBSE: atomic transactions → No “dangling” references. ● BLOB's in the normal database Backup !?! ● BLOB's can be replicated ● BLOB's in the DB will scale better. Most file systems perform poorly when the number of files exceeds 2 million ? www.fromdual.com 20
  • 21. The Handler Interface ● October 2001, MySQL manual: A new HANDLER interface to MyISAM tables ● December 27, 2010, Stephane Varoqui: Using MySQL as a NoSQL: a story for exceeding 450'000 qps with MariaDB ● January 10, 2011, Stephane Varoqui: 20% to 50% improvement in MariaDB 5.3 Handler Interface using prepared statement www.fromdual.com 21
  • 22. Skipping overhead with Handler Interface Application / Client Thread Connection mysqld Cache Manager Parser Optimizer User Au- thentication Access Control Command Table Open Logging Dispatcher Cache (.frm, fh) Table Manager Query Query Cache Table Definition Cache Module Cache (tbl def.) Handler Interface MyISAM InnoDB Memory NDB PBXT Aria XtraDB Federated-X ... www.fromdual.com 22
  • 23. HANDLER Example # MySQL # SELECT * FROM family; HANDLER tbl OPEN HANDLER family OPEN; HANDLER tbl READ idx (..., ..., …) HANDLER family   WHERE ... LIMIT ...    READ `PRIMARY` = (id)   WHERE id = 1; HANDLER tbl READ idx FIRST HANDLER family CLOSE;   WHERE ... LIMIT ... HANDLER tbl READ idx NEXT   WHERE ... LIMIT ... # With MariaDB 5.3 HANDLER tbl READ idx PREV   WHERE ... LIMIT ... HANDLER family OPEN; HANDLER tbl READ idx LAST PREPARE stmt   WHERE ... LIMIT ...    FROM 'HANDLER family             READ `PRIMARY` = (id) HANDLER tbl READ FIRST            WHERE id = ?';   WHERE ... LIMIT ... set @id=1; HANDLER tbl READ NEXT EXECUTE stmt USING @id;   WHERE ... LIMIT ... DEALLOCATE PREPARE stmt; HANDLER family CLOSE; HANDLER tbl CLOSE Use persistent connections!!! www.fromdual.com 23
  • 24. Characteristics of the Handler Interface ● HANDLER is faster than SELECT: ● Less parsing involved ● No optimizer overhead ● Less query-checking overhead ● The table does not have to be locked between two handler requests ● No consistent look of the data (dirty reads are permitted) ● Some optimizations possible that SELECT does not allow ● Traverse the database in a manner that is difficult (or even impossible) to accomplish with SELECT www.fromdual.com 24
  • 25. A Graph Storage Engine ● May 5, 2009, Arjen Lentz: OQGRAPH Computation Engine for MySQL, MariaDB & Drizzle ● It's included in MariaDB 5.1 ff. ● And available for MySQL 5.0 ff. www.fromdual.com 25
  • 26. How does it feel? ● It is similar to MEMORY SE (persistency, locking, trx) ● We talk in: Node ● Node/Item/vertex and ● Edge/connection/link ● Edges have a direction Edge ● We can do networks and hierarchies ● (family relations, friends of friends, fastest way from a to b) ● To talk to the OQGRAPH SE we use the latches (which algorithm to use) ● It is a computational engine not a storage engine! www.fromdual.com 26
  • 27. Simple example: My family SELECT f1.name AS parent, f2.name AS child INSERT INTO family VALUES   FROM relation AS r   (1, 'Grand­grand­ma')   JOIN family f1 ON f1.id = r.origid , (2, 'Grand­ma')   JOIN family f2 ON f2.id = r.destid; , (3, 'Grand­uncle') , (4, 'Grand­aunt') +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+ , (5, 'Grand­pa') | parent         | child       | , (6, 'Mother') +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+ , (7, 'Uncle 1') | Grand­grand­ma | Grand­ma    | , (8, 'Uncle 2') | Grand­grand­ma | Grand­uncle | , (9, 'Father') | Grand­grand­ma | Grand­aunt  | , (10, 'Me') | Grand­ma       | Mother      | , (11, 'Sister'); | Grand­ma       | Uncle 1     | | Grand­ma       | Uncle 2     | INSERT INTO relation (origid, destid) | Grand­pa       | Mother      | VALUES | Grand­pa       | Uncle 1     |   (1, 2), (1, 3), (1, 4) | Grand­pa       | Uncle 2     | , (2, 6), (2, 7), (2, 8) | Mother         | Me          | , (5, 6), (5, 7), (5, 8) | Mother         | Sister      | , (6, 10), (6, 11) | Father         | Me          | , (9, 10), (9, 11); | Father         | Sister      | +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+ www.fromdual.com 27
  • 28. Network queries SELECT r.weight, r.seq, f.name   FROM relation AS r SELECT GROUP_CONCAT(f.name SEPARATOR ' ­> ')   JOIN family AS f ON (r.linkid = f.id)        AS path        AS path  WHERE r.latch = 2   FROM relation AS r   FROM relation AS r    AND r.destid = 10;   JOIN family AS f ON (r.linkid = f.id)   JOIN family AS f ON (r.linkid = f.id)  WHERE latch = 1    AND origid = 1    AND origid = 1    AND destid = 10    AND destid = 10 +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­+ ORDER BY seq; | weight | seq  | name           | +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­+ |      3 |    6 | Grand­grand­ma | +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ |      2 |    5 | Grand­pa       | | path                                       | |      2 |    4 | Grand­ma       | +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ |      1 |    3 | Father         | | Grand­grand­ma ­> Grand­ma ­> Mother ­> Me | |      1 |    2 | Mother         | +­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ |      0 |    1 | Me             | +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­+ latch = 1: Find shortest path (Dijkstra) latch = 1: Find shortest path (Dijkstra) latch = 2: Find originating nodes            (Breadth­first search) www.fromdual.com 28
  • 29. Resume ● SQL is good for complex queries ● NoSQL is typically for simple queries ● Be careful with performance numbers! ● Architecture / coding becomes more complex ● You can gain better performance ● But it is interesting like hell! www.fromdual.com 29
  • 30. Literature ● Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server: http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html ● 950k reads per second on 1 datanode: http://jonasoreland.blogspot.com/2008/11/950k-reads- per-second-on-1-datanode.html ● Scalable BLOB Streaming Infrastructure for MySQL and Drizzle: http://www.blobstreaming.org/ ● HandlerSocket: Why did our version not take off? http://pbxt.blogspot.com/2010/12/handlersocket-why-did-out-version-did.html ● Using MySQL as a NoSQL: a story for exceeding 450000 qps with MariaDB: http://varokism.blogspot.com/2010/12/using-mysql-as-nosql-story-for_27.html ● HANDLER Syntax: http://dev.mysql.com/doc/refman/5.5/en/handler.html ● GRAPH Computation Engine – Documentation: http://openquery.com/graph/doc www.fromdual.com 30
  • 31. Q&A Questions ? Discussion? We have some slots free to provide you personal consulting services... www.fromdual.com 31