SlideShare a Scribd company logo
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 DBAs
Valerii 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 MySQL
FromDual 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 limitations
Jean-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_1
Valerii 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 limitations
Jean-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 limitations
Jean-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 Stream
Jean-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 Devroom
Valeriy Kravchuk
 
How to Monitor MySQL
How to Monitor MySQLHow to Monitor MySQL
How to Monitor MySQL
Server Density
 
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
Olivier 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) final
Valeriy 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 Devroom
Valeriy 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ía
OpenNebula Project
 
Gluster volume snapshot
Gluster volume snapshotGluster volume snapshot
Gluster volume snapshot
Rajesh 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 more
MariaDB 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 DBAs
FromDual GmbH
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
FromDual 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
 
Froscon 2012 DWH
Froscon 2012 DWHFroscon 2012 DWH
Froscon 2012 DWH
FromDual GmbH
 
MySQL configuration - The most important Variables
MySQL configuration - The most important VariablesMySQL configuration - The most important Variables
MySQL configuration - The most important Variables
FromDual 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_dba
orablue11
 
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 Solutions
Lenz Grimmer
 
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 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
Severalnines
 
MongoDB Devops Madrid February 2012
MongoDB Devops Madrid February 2012MongoDB Devops Madrid February 2012
MongoDB Devops Madrid February 2012
Juan Vicente Herrera Ruiz de Alejo
 
mongodb tutorial
mongodb tutorialmongodb tutorial
mongodb tutorial
Jaehong Park
 
Squeak DBX
Squeak DBXSqueak DBX
Squeak DBX
ESUG
 
Introduction to Galera Cluster
Introduction to Galera ClusterIntroduction to Galera Cluster
Introduction to Galera Cluster
Codership Oy - Creators of 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
Jui-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 Frankfurt
MariaDB 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 2007
eLiberatica
 
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
MariaDB 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
 
EVCache & Moneta (GoSF)
EVCache & Moneta (GoSF)EVCache & Moneta (GoSF)
EVCache & Moneta (GoSF)
Scott Mansfield
 
Open stack HA - Theory to Reality
Open stack HA -  Theory to RealityOpen stack HA -  Theory to Reality
Open stack HA - Theory to Reality
Sriram 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
 
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 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 Workshop
FromDual 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 Features
FromDual GmbH
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New Features
FromDual GmbH
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New Features
FromDual GmbH
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA's
FromDual GmbH
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/Recovery
FromDual 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 Cluster
FromDual 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-Replikation
FromDual 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's
FromDual GmbH
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
FromDual 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 fingerprints
FromDual GmbH
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014
FromDual 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 MySQL
FromDual GmbH
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
FromDual GmbH
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexing
FromDual 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

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 

Recently uploaded (20)

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 

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