SlideShare a Scribd company logo
To SQL
                             OR


                 No (T) SQL?
PFCongres 2012 Jeroen van Dijk
JEROEN VAN DIJK



∂ Nerd chief @ ENRISE
∂ PHPBenelux board member
∂ Zend Certified Engineer
∂ Web technology freak
∂ Open source addict

   JEROEN@ENRISE.COM   @NEOREY
THE ENRISE RESTAURANT




∂ We want to prepare the best dishes
∂ With the best ingredients
∂ To create a magical client experience!


∂ You engineers are our top chefs!
WHAT IS


ACID?
EVER HEARD OF

CAP
 THEOREM?
KNOW


ABC?
∂ Courtesy of Tim Anglade
Always

∂ Courtesy of Tim Anglade
Always
            Be
∂ Courtesy of Tim Anglade
Always
            Be
            Caching
∂ Courtesy of Tim Anglade
Always
            Be
            Caching
∂ Courtesy of Tim Anglade
JOIN THE HYPE?




WANT!==HAVE

                 13
HAVE TO USE NOSQL?




     SCALABILITY
                     &
  PERFORMANCE
                         14
HAVE TO USE NOSQL?




     SCALABILITY
                     &
  PERFORMANCE
                         15
RECAP RDBMS GREATNESS


∂   Standard Query Language
∂   ACID: Atomicity, Consistency, Isolation, Durability
∂   Supported by everyone and everything
∂   Tuning options
∂   Battle tested!
∂   Open source?!


    NOT ENOUGH?



                                                          16
MAKING LOADS OF MONEY?




                         17
BUY A BIGGER BOX




                   18
NOT SO GREAT RDBMS FEATURES


∂ Vertical scalability




                              19
NOT SO GREAT RDBMS FEATURES


∂ Vertical scalability



∂ Horizontal scalability




                              20
NOT SO GREAT RDBMS FEATURES


∂ Vertical scalability



∂ Horizontal scalability



∂ Schema changes!




                              21
SINCE 2004




DATA++++++
             22
WHO NEEDS


ACID!?
CAP THEOREM

                  AVAILABILITY
                       A




              C                  P
  CONSISTENCY                    PARTITION TOLERANCE
CAP THEOREM

                   AVAILABILITY
                        A
              CA                  AP


                      PICK
                      TWO
              C                   P
  CONSISTENCY                     PARTITION TOLERANCE
                        CP
CAP THEOREM

                                      AVAILABILITY
MySQL (InnoDB, not MyISAM)                             A                    Dynamo      Voldemort


PostgreSQL       SQL Server                                                 Cassandra      CouchDB

                              CA                                       AP
Oracle RAC       Neo4J                                                      SimpleDB    Riak



                                                PICK
                                                TWO
                              C                                         P
        CONSISTENCY                                                     PARTITION TOLERANCE
                                                       CP

                                          Hypertable        Hbase


                               BigTable          MongoDB       Terrastore


                              Couchbase          MemcacheDB         Redis
4   NOSQL
    TYPES
4 NOSQL TYPES


                KEY-VALUE




                COLUMN




                GRAPH




                DOCUMENT
4 NOSQL TYPES


                KEY-VALUE




                COLUMN




                GRAPH




                DOCUMENT
4 NOSQL TYPES


                KEY-VALUE




                COLUMN




                GRAPH




                DOCUMENT
4 NOSQL TYPES


                KEY-VALUE




                COLUMN




                GRAPH




                DOCUMENT
4 NOSQL TYPES


   KEY-VALUE




   COLUMN




   GRAPH




   DOCUMENT




∂ 122 known NoSQL databases
4 NOSQL TYPES


   KEY-VALUE




   COLUMN




   GRAPH




   DOCUMENT




∂ Focus from Redis, Riak, Neo4J, MongoDB
KEY - VALUE


   KEY-VALUE   ∂   Schema-less design
               ∂   Just strings of data
               ∂   Hard to query
   COLUMN
               ∂   Mostly in memory

   GRAPH




   DOCUMENT
KEY - VALUE


   KEY-VALUE
               [
   COLUMN          “key1” => “value1”,
                   “key2” => “value2”,
   GRAPH

                   “key3” => “value3”,
   DOCUMENT
               ]
REDIS


KEY-VALUE
            ∂    Blazing fast key-value implementation
            ∂    Master - slave replication
            ∂    Lots of methods to query data
COLUMN
            ∂    Notable options
                 ∂ Data types : Strings, hashes, lists, sets
GRAPH            ∂ Data expiration
                 ∂ Pub/Sub for messaging
DOCUMENT




         ∂ Reconsider when using Memcached
COLUMN


  KEY-VALUE   ∂   BigTable or Dynamo style
              ∂   Consistent hashing
              ∂   Vector clocks
  COLUMN
              ∂   Hinted hand off

  GRAPH




  DOCUMENT
COLUMN


   KEY-VALUE




   COLUMN




   GRAPH




   DOCUMENT




∂ Data stored in a ring
COLUMN

                                     D

KEY-VALUE




COLUMN


                       C                     A


GRAPH




DOCUMENT

                                     B



         ∂ Consistent hashing with 4 nodes
COLUMN


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Partitioning as done by Riak
COLUMN


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Read / Write....
COLUMN


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Anywhere in the ring
COLUMN


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ First node joins the cluster, claims all partitions
COLUMN


KEY-VALUE    N=3                            A

                                                  B


                                                      C
COLUMN




GRAPH




DOCUMENT




         ∂ Reading / writing is done to 3 nodes
COLUMN


KEY-VALUE    N=3                            A

                                                B

             W=2                                    C
COLUMN
             R=2
GRAPH




DOCUMENT




         ∂ Reading / writing succeeds with 2 valid responses
COLUMN


KEY-VALUE    N=3                           A
                                                     [ Ov1,v2 ]
                                                 B

             W=2                                     C       [ Ov1 ]
COLUMN
             R=2
                                                         D
                                                              [ Ov1,v2 ]
GRAPH




DOCUMENT




         ∂ Node C down, while new write action
COLUMN


KEY-VALUE    N=3                              A
                                                      [ Ov1,v2 ]
                                                  B

             W=2                                      C       [ Ov1,v2 ]
COLUMN
             R=2
                                                          D
                                                               [ Ov1,v2 ]
GRAPH




DOCUMENT




         ∂ Node D hands the new version off
RIAK


   KEY-VALUE   ∂   Dynamo implementation
               ∂   MapReduce query style
               ∂   Multiple storage backends
   COLUMN
               ∂   Notable options
                   § Link walking (like Graph solutions)
   GRAPH
                   § Solr-like search interface
                   § Secondary indexes
   DOCUMENT
GRAPH


  KEY-VALUE   ∂ Relations more important then entities
              ∂ From RDBMS perspective : SELF JOINS

  COLUMN




  GRAPH




  DOCUMENT
GRAPH


   KEY-VALUE




   COLUMN




   GRAPH




   DOCUMENT




∂ Facebook style
GRAPH


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Betweenness centrality
GRAPH


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Degree centrality
GRAPH


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Closeness centrality
GRAPH


KEY-VALUE




COLUMN




GRAPH




DOCUMENT




         ∂ Twitter style
GRAPH


KEY-VALUE



                              2
COLUMN                    1

                                  9       3           2
                              1       2       1
GRAPH                                             2
                              3
                                  3

DOCUMENT




         ∂ TomTom style
GRAPH


KEY-VALUE



                              2
COLUMN                    1

                                  9       3           2
                              1       2       1
GRAPH                                             2
                              3
                                  3

DOCUMENT




         ∂ TomTom style
GRAPH


KEY-VALUE



                              2
COLUMN                    1

                                  9       3           2
                              1       2       1
GRAPH                                             2
                              3
                                  3

DOCUMENT




         ∂ TomTom style
NEO4J


KEY-VALUE   ∂   ACID compliant
            ∂   Enterprise product for HA ($$$)
            ∂   Custom query language
COLUMN
            ∂   Notable options
                 § Self contained web admin
GRAPH




DOCUMENT
DOCUMENT


  KEY-VALUE   ∂ Largest resemblance with RDBMS
              ∂ MapReduce
              ∂ Software architect more important
  COLUMN




  GRAPH




  DOCUMENT
MONGODB


  KEY-VALUE   ∂   MySQL of it’s generation?!
              ∂   Master - slave structure
              ∂   MapReduce
  COLUMN
              ∂   Notable options
                  § Geo indexes
  GRAPH




  DOCUMENT
              SMALLEST LEARNING CURVE!
USE CASES

               ∂ Rapid changing data which fits in memory
   KEY-VALUE
               ∂ Analytics, logging, real-time data collection

   COLUMN




   GRAPH




   DOCUMENT
USE CASES

               ∂ Rapid changing data which fits in memory
   KEY-VALUE
               ∂ Analytics, logging, real-time data collection
               ∂ Very good availability & fault tolerance
   COLUMN
               ∂ Applications where seconds of downtime hurt

   GRAPH




   DOCUMENT
USE CASES

               ∂ Rapid changing data which fits in memory
   KEY-VALUE
               ∂ Analytics, logging, real-time data collection
               ∂ Very good availability & fault tolerance
   COLUMN
               ∂ Applications where seconds of downtime hurt
               ∂ For rich interconnected data
   GRAPH
               ∂ Social relational data, geo & maps data

   DOCUMENT
USE CASES

               ∂ Rapid changing data which fits in memory
   KEY-VALUE
               ∂ Analytics, logging, real-time data collection
               ∂ Very good availability & fault tolerance
   COLUMN
               ∂ Applications where seconds of downtime hurt
               ∂ For rich interconnected data
   GRAPH
               ∂ Social relational data, geo & maps data
               ∂ MySQL like usage with indexes
   DOCUMENT
               ∂ Any type of data you’d fit in MySQL
ONE USEFUL INGREDIENT




                        65
MORE GREAT TASTES




                    66
∂ KLIK VOOR FOOTER

                     67
Polyglot persistence?


∂ KLIK VOOR FOOTER

                                  68
∂ THANK YOU! FEEDBACK? JOIND.IN/7084
∂ MORE DETAILS? SCAN THIS CODE.

More Related Content

What's hot

8086 instruction set
8086 instruction set8086 instruction set
8086 instruction set
Alamin Hossain Miraje
 
8086 instruction set
8086 instruction set8086 instruction set
8086 instruction set
Sazzad Hossain
 
Instruction Set Of 8086 DIU CSE
Instruction Set Of 8086 DIU CSEInstruction Set Of 8086 DIU CSE
Instruction Set Of 8086 DIU CSE
salmancreation
 
Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012
Logica_hummingbird
 
Assembly Language Lecture 5
Assembly Language Lecture 5Assembly Language Lecture 5
Assembly Language Lecture 5
Motaz Saad
 
Instruction set of 8086
Instruction set of 8086Instruction set of 8086
Instruction set of 8086
Tirumalesh Nizampatnam
 
8086 Microprocessor Instruction set
8086 Microprocessor Instruction set8086 Microprocessor Instruction set
8086 Microprocessor Instruction set
Vijay Kumar
 
Instruction Set of 8086 Microprocessor
Instruction Set of 8086 MicroprocessorInstruction Set of 8086 Microprocessor
Instruction Set of 8086 Microprocessor
Ashita Agrawal
 
Instruction set of 8086
Instruction set of 8086Instruction set of 8086
Instruction set of 8086aviban
 
Unit 3 – assembly language programming
Unit 3 – assembly language programmingUnit 3 – assembly language programming
Unit 3 – assembly language programming
Kartik Sharma
 
Assembly language 8086
Assembly language 8086Assembly language 8086
Assembly language 8086
John Cutajar
 
Liszt los alamos national laboratory Aug 2011
Liszt los alamos national laboratory Aug 2011Liszt los alamos national laboratory Aug 2011
Liszt los alamos national laboratory Aug 2011
Ed Dodds
 
8086 instruction set
8086  instruction set8086  instruction set
8086 instruction set
mengistu ketema
 
Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs
Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada ProgramsAst2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs
Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs
Gneuromante canalada.org
 
Hawai'i Gas
Hawai'i GasHawai'i Gas
Hawai'i Gas
alaskalng
 
Notes arithmetic instructions
Notes arithmetic instructionsNotes arithmetic instructions
Notes arithmetic instructions
HarshitParkar6677
 
1344 Alp Of 8086
1344 Alp Of 80861344 Alp Of 8086
1344 Alp Of 8086
techbed
 

What's hot (20)

8086 instruction set
8086 instruction set8086 instruction set
8086 instruction set
 
8086 instruction set
8086 instruction set8086 instruction set
8086 instruction set
 
Instruction Set Of 8086 DIU CSE
Instruction Set Of 8086 DIU CSEInstruction Set Of 8086 DIU CSE
Instruction Set Of 8086 DIU CSE
 
Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012
 
Assembly Language Lecture 5
Assembly Language Lecture 5Assembly Language Lecture 5
Assembly Language Lecture 5
 
Instruction set of 8086
Instruction set of 8086Instruction set of 8086
Instruction set of 8086
 
8086 Microprocessor Instruction set
8086 Microprocessor Instruction set8086 Microprocessor Instruction set
8086 Microprocessor Instruction set
 
Instruction Set of 8086 Microprocessor
Instruction Set of 8086 MicroprocessorInstruction Set of 8086 Microprocessor
Instruction Set of 8086 Microprocessor
 
Instruction set of 8086
Instruction set of 8086Instruction set of 8086
Instruction set of 8086
 
Lecture04
Lecture04Lecture04
Lecture04
 
Unit 3 – assembly language programming
Unit 3 – assembly language programmingUnit 3 – assembly language programming
Unit 3 – assembly language programming
 
Assembly language 8086
Assembly language 8086Assembly language 8086
Assembly language 8086
 
Liszt los alamos national laboratory Aug 2011
Liszt los alamos national laboratory Aug 2011Liszt los alamos national laboratory Aug 2011
Liszt los alamos national laboratory Aug 2011
 
8086 instruction set
8086  instruction set8086  instruction set
8086 instruction set
 
P repetitive
P repetitiveP repetitive
P repetitive
 
Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs
Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada ProgramsAst2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs
Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs
 
Complier designer
Complier designerComplier designer
Complier designer
 
Hawai'i Gas
Hawai'i GasHawai'i Gas
Hawai'i Gas
 
Notes arithmetic instructions
Notes arithmetic instructionsNotes arithmetic instructions
Notes arithmetic instructions
 
1344 Alp Of 8086
1344 Alp Of 80861344 Alp Of 8086
1344 Alp Of 8086
 

Viewers also liked

Zend Server: Not just a PHP stack
Zend Server: Not just a PHP stackZend Server: Not just a PHP stack
Zend Server: Not just a PHP stack
Jeroen van Dijk
 
Liking Relevance - PHP North East 2014
Liking Relevance - PHP North East 2014Liking Relevance - PHP North East 2014
Liking Relevance - PHP North East 2014
Jeroen van Dijk
 
Technology Fast 500
Technology Fast 500Technology Fast 500
Technology Fast 500
Eric Espinosa
 
56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...
56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...
56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...Annadurai B
 
Front-End Optimization (FEO)
Front-End Optimization (FEO)Front-End Optimization (FEO)
Front-End Optimization (FEO)
Kim Stefan Lindholm
 
Varnish Configuration Step by Step
Varnish Configuration Step by StepVarnish Configuration Step by Step
Varnish Configuration Step by Step
Kim Stefan Lindholm
 

Viewers also liked (6)

Zend Server: Not just a PHP stack
Zend Server: Not just a PHP stackZend Server: Not just a PHP stack
Zend Server: Not just a PHP stack
 
Liking Relevance - PHP North East 2014
Liking Relevance - PHP North East 2014Liking Relevance - PHP North East 2014
Liking Relevance - PHP North East 2014
 
Technology Fast 500
Technology Fast 500Technology Fast 500
Technology Fast 500
 
56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...
56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...
56.Synthesis, Characterization and Antibacterial activity of iron oxide Nanop...
 
Front-End Optimization (FEO)
Front-End Optimization (FEO)Front-End Optimization (FEO)
Front-End Optimization (FEO)
 
Varnish Configuration Step by Step
Varnish Configuration Step by StepVarnish Configuration Step by Step
Varnish Configuration Step by Step
 

Similar to To SQL or No(t)SQL - PFCongres 2012

Introducing Riak
Introducing RiakIntroducing Riak
Introducing RiakKevin Smith
 
Introducing Riak
Introducing RiakIntroducing Riak
Introducing RiakKevin Smith
 
Progressive NOSQL: Cassandra
Progressive NOSQL: CassandraProgressive NOSQL: Cassandra
Progressive NOSQL: Cassandra
Acunu
 
Spring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_dataSpring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_data
Roger Xia
 
Online Analytics with Hadoop and Cassandra
Online Analytics with Hadoop and CassandraOnline Analytics with Hadoop and Cassandra
Online Analytics with Hadoop and Cassandra
Robbie Strickland
 
NoSQL Smackdown!
NoSQL Smackdown!NoSQL Smackdown!
NoSQL Smackdown!
Tim Berglund
 
Cassandra Deep Diver & Data Modeling
Cassandra Deep Diver & Data ModelingCassandra Deep Diver & Data Modeling
Cassandra Deep Diver & Data Modeling
Brian Enochson
 
On Rails with Apache Cassandra
On Rails with Apache CassandraOn Rails with Apache Cassandra
On Rails with Apache Cassandra
Stu Hood
 
KDB+/R Integration
KDB+/R IntegrationKDB+/R Integration
KDB+/R Integration
Rory Winston
 
A Guide to the Post Relational Revolution
A Guide to the Post Relational RevolutionA Guide to the Post Relational Revolution
A Guide to the Post Relational Revolution
Theo Hultberg
 
Ruby on Big Data @ Philly Ruby Group
Ruby on Big Data @ Philly Ruby GroupRuby on Big Data @ Philly Ruby Group
Ruby on Big Data @ Philly Ruby Group
Brian O'Neill
 
Raven lovin' - .NET does NoSQL
Raven lovin' - .NET does NoSQLRaven lovin' - .NET does NoSQL
Raven lovin' - .NET does NoSQLJudah Himango
 
SiddharthAnand_NetflixsCloudDataArchitecture
SiddharthAnand_NetflixsCloudDataArchitectureSiddharthAnand_NetflixsCloudDataArchitecture
SiddharthAnand_NetflixsCloudDataArchitectureKostas Mavridis
 
Java SE 8 library design
Java SE 8 library designJava SE 8 library design
Java SE 8 library design
Stephen Colebourne
 
Taming NoSQL with Spring Data
Taming NoSQL with Spring DataTaming NoSQL with Spring Data
Taming NoSQL with Spring Data
Sergi Almar i Graupera
 
第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra
Shun Nakamura
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQLlyonjug
 
DotNetToscana: NoSQL Revolution - Scalability
DotNetToscana: NoSQL Revolution - ScalabilityDotNetToscana: NoSQL Revolution - Scalability
DotNetToscana: NoSQL Revolution - Scalability
Nicola Baldi
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentation
jexp
 
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases SharingDeep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Databricks
 

Similar to To SQL or No(t)SQL - PFCongres 2012 (20)

Introducing Riak
Introducing RiakIntroducing Riak
Introducing Riak
 
Introducing Riak
Introducing RiakIntroducing Riak
Introducing Riak
 
Progressive NOSQL: Cassandra
Progressive NOSQL: CassandraProgressive NOSQL: Cassandra
Progressive NOSQL: Cassandra
 
Spring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_dataSpring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_data
 
Online Analytics with Hadoop and Cassandra
Online Analytics with Hadoop and CassandraOnline Analytics with Hadoop and Cassandra
Online Analytics with Hadoop and Cassandra
 
NoSQL Smackdown!
NoSQL Smackdown!NoSQL Smackdown!
NoSQL Smackdown!
 
Cassandra Deep Diver & Data Modeling
Cassandra Deep Diver & Data ModelingCassandra Deep Diver & Data Modeling
Cassandra Deep Diver & Data Modeling
 
On Rails with Apache Cassandra
On Rails with Apache CassandraOn Rails with Apache Cassandra
On Rails with Apache Cassandra
 
KDB+/R Integration
KDB+/R IntegrationKDB+/R Integration
KDB+/R Integration
 
A Guide to the Post Relational Revolution
A Guide to the Post Relational RevolutionA Guide to the Post Relational Revolution
A Guide to the Post Relational Revolution
 
Ruby on Big Data @ Philly Ruby Group
Ruby on Big Data @ Philly Ruby GroupRuby on Big Data @ Philly Ruby Group
Ruby on Big Data @ Philly Ruby Group
 
Raven lovin' - .NET does NoSQL
Raven lovin' - .NET does NoSQLRaven lovin' - .NET does NoSQL
Raven lovin' - .NET does NoSQL
 
SiddharthAnand_NetflixsCloudDataArchitecture
SiddharthAnand_NetflixsCloudDataArchitectureSiddharthAnand_NetflixsCloudDataArchitecture
SiddharthAnand_NetflixsCloudDataArchitecture
 
Java SE 8 library design
Java SE 8 library designJava SE 8 library design
Java SE 8 library design
 
Taming NoSQL with Spring Data
Taming NoSQL with Spring DataTaming NoSQL with Spring Data
Taming NoSQL with Spring Data
 
第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra第17回Cassandra勉強会: MyCassandra
第17回Cassandra勉強会: MyCassandra
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
 
DotNetToscana: NoSQL Revolution - Scalability
DotNetToscana: NoSQL Revolution - ScalabilityDotNetToscana: NoSQL Revolution - Scalability
DotNetToscana: NoSQL Revolution - Scalability
 
Intro to Neo4j presentation
Intro to Neo4j presentationIntro to Neo4j presentation
Intro to Neo4j presentation
 
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases SharingDeep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
 

More from Jeroen van Dijk

WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
Jeroen van Dijk
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/Press
Jeroen van Dijk
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
Jeroen van Dijk
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/Press
Jeroen van Dijk
 
Beacons in Appcelerator Titanium
Beacons in Appcelerator TitaniumBeacons in Appcelerator Titanium
Beacons in Appcelerator Titanium
Jeroen van Dijk
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in Titanium
Jeroen van Dijk
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in Titanium
Jeroen van Dijk
 
An app on the shoulders of giants
An app on the shoulders of giantsAn app on the shoulders of giants
An app on the shoulders of giants
Jeroen van Dijk
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using Codeception
Jeroen van Dijk
 
To SQL or No(t)SQL - PHPNW12
To SQL or No(t)SQL - PHPNW12To SQL or No(t)SQL - PHPNW12
To SQL or No(t)SQL - PHPNW12Jeroen van Dijk
 
Socializing a world of travel
Socializing a world of travelSocializing a world of travel
Socializing a world of travelJeroen van Dijk
 
Varnish, the high performance valhalla?
Varnish, the high performance valhalla?Varnish, the high performance valhalla?
Varnish, the high performance valhalla?
Jeroen van Dijk
 
Varnish, the high performance valhalla?
Varnish, the high performance valhalla?Varnish, the high performance valhalla?
Varnish, the high performance valhalla?
Jeroen van Dijk
 
Edge Side Includes in Zend Framework without Varnish
Edge Side Includes in Zend Framework without VarnishEdge Side Includes in Zend Framework without Varnish
Edge Side Includes in Zend Framework without Varnish
Jeroen van Dijk
 

More from Jeroen van Dijk (14)

WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/Press
 
WordPress REST API hacking
WordPress REST API hackingWordPress REST API hacking
WordPress REST API hacking
 
The Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/PressThe Enterprise Wor/d/thy/Press
The Enterprise Wor/d/thy/Press
 
Beacons in Appcelerator Titanium
Beacons in Appcelerator TitaniumBeacons in Appcelerator Titanium
Beacons in Appcelerator Titanium
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in Titanium
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in Titanium
 
An app on the shoulders of giants
An app on the shoulders of giantsAn app on the shoulders of giants
An app on the shoulders of giants
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using Codeception
 
To SQL or No(t)SQL - PHPNW12
To SQL or No(t)SQL - PHPNW12To SQL or No(t)SQL - PHPNW12
To SQL or No(t)SQL - PHPNW12
 
Socializing a world of travel
Socializing a world of travelSocializing a world of travel
Socializing a world of travel
 
Varnish, the high performance valhalla?
Varnish, the high performance valhalla?Varnish, the high performance valhalla?
Varnish, the high performance valhalla?
 
Varnish, the high performance valhalla?
Varnish, the high performance valhalla?Varnish, the high performance valhalla?
Varnish, the high performance valhalla?
 
Edge Side Includes in Zend Framework without Varnish
Edge Side Includes in Zend Framework without VarnishEdge Side Includes in Zend Framework without Varnish
Edge Side Includes in Zend Framework without Varnish
 

Recently uploaded

Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
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
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
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 | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
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
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
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
 
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.
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
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
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 

Recently uploaded (20)

Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
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
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
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 | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
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
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
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
 
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
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
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
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 

To SQL or No(t)SQL - PFCongres 2012

  • 1. To SQL OR No (T) SQL? PFCongres 2012 Jeroen van Dijk
  • 2. JEROEN VAN DIJK ∂ Nerd chief @ ENRISE ∂ PHPBenelux board member ∂ Zend Certified Engineer ∂ Web technology freak ∂ Open source addict JEROEN@ENRISE.COM @NEOREY
  • 3. THE ENRISE RESTAURANT ∂ We want to prepare the best dishes ∂ With the best ingredients ∂ To create a magical client experience! ∂ You engineers are our top chefs!
  • 4.
  • 6.
  • 7. EVER HEARD OF CAP THEOREM?
  • 10. Always Be ∂ Courtesy of Tim Anglade
  • 11. Always Be Caching ∂ Courtesy of Tim Anglade
  • 12. Always Be Caching ∂ Courtesy of Tim Anglade
  • 14. HAVE TO USE NOSQL? SCALABILITY & PERFORMANCE 14
  • 15. HAVE TO USE NOSQL? SCALABILITY & PERFORMANCE 15
  • 16. RECAP RDBMS GREATNESS ∂ Standard Query Language ∂ ACID: Atomicity, Consistency, Isolation, Durability ∂ Supported by everyone and everything ∂ Tuning options ∂ Battle tested! ∂ Open source?! NOT ENOUGH? 16
  • 17. MAKING LOADS OF MONEY? 17
  • 18. BUY A BIGGER BOX 18
  • 19. NOT SO GREAT RDBMS FEATURES ∂ Vertical scalability 19
  • 20. NOT SO GREAT RDBMS FEATURES ∂ Vertical scalability ∂ Horizontal scalability 20
  • 21. NOT SO GREAT RDBMS FEATURES ∂ Vertical scalability ∂ Horizontal scalability ∂ Schema changes! 21
  • 24. CAP THEOREM AVAILABILITY A C P CONSISTENCY PARTITION TOLERANCE
  • 25. CAP THEOREM AVAILABILITY A CA AP PICK TWO C P CONSISTENCY PARTITION TOLERANCE CP
  • 26. CAP THEOREM AVAILABILITY MySQL (InnoDB, not MyISAM) A Dynamo Voldemort PostgreSQL SQL Server Cassandra CouchDB CA AP Oracle RAC Neo4J SimpleDB Riak PICK TWO C P CONSISTENCY PARTITION TOLERANCE CP Hypertable Hbase BigTable MongoDB Terrastore Couchbase MemcacheDB Redis
  • 27. 4 NOSQL TYPES
  • 28. 4 NOSQL TYPES KEY-VALUE COLUMN GRAPH DOCUMENT
  • 29. 4 NOSQL TYPES KEY-VALUE COLUMN GRAPH DOCUMENT
  • 30. 4 NOSQL TYPES KEY-VALUE COLUMN GRAPH DOCUMENT
  • 31. 4 NOSQL TYPES KEY-VALUE COLUMN GRAPH DOCUMENT
  • 32. 4 NOSQL TYPES KEY-VALUE COLUMN GRAPH DOCUMENT ∂ 122 known NoSQL databases
  • 33. 4 NOSQL TYPES KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Focus from Redis, Riak, Neo4J, MongoDB
  • 34. KEY - VALUE KEY-VALUE ∂ Schema-less design ∂ Just strings of data ∂ Hard to query COLUMN ∂ Mostly in memory GRAPH DOCUMENT
  • 35. KEY - VALUE KEY-VALUE [ COLUMN “key1” => “value1”, “key2” => “value2”, GRAPH “key3” => “value3”, DOCUMENT ]
  • 36. REDIS KEY-VALUE ∂ Blazing fast key-value implementation ∂ Master - slave replication ∂ Lots of methods to query data COLUMN ∂ Notable options ∂ Data types : Strings, hashes, lists, sets GRAPH ∂ Data expiration ∂ Pub/Sub for messaging DOCUMENT ∂ Reconsider when using Memcached
  • 37. COLUMN KEY-VALUE ∂ BigTable or Dynamo style ∂ Consistent hashing ∂ Vector clocks COLUMN ∂ Hinted hand off GRAPH DOCUMENT
  • 38. COLUMN KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Data stored in a ring
  • 39. COLUMN D KEY-VALUE COLUMN C A GRAPH DOCUMENT B ∂ Consistent hashing with 4 nodes
  • 40. COLUMN KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Partitioning as done by Riak
  • 42. COLUMN KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Anywhere in the ring
  • 43. COLUMN KEY-VALUE COLUMN GRAPH DOCUMENT ∂ First node joins the cluster, claims all partitions
  • 44. COLUMN KEY-VALUE N=3 A B C COLUMN GRAPH DOCUMENT ∂ Reading / writing is done to 3 nodes
  • 45. COLUMN KEY-VALUE N=3 A B W=2 C COLUMN R=2 GRAPH DOCUMENT ∂ Reading / writing succeeds with 2 valid responses
  • 46. COLUMN KEY-VALUE N=3 A [ Ov1,v2 ] B W=2 C [ Ov1 ] COLUMN R=2 D [ Ov1,v2 ] GRAPH DOCUMENT ∂ Node C down, while new write action
  • 47. COLUMN KEY-VALUE N=3 A [ Ov1,v2 ] B W=2 C [ Ov1,v2 ] COLUMN R=2 D [ Ov1,v2 ] GRAPH DOCUMENT ∂ Node D hands the new version off
  • 48. RIAK KEY-VALUE ∂ Dynamo implementation ∂ MapReduce query style ∂ Multiple storage backends COLUMN ∂ Notable options § Link walking (like Graph solutions) GRAPH § Solr-like search interface § Secondary indexes DOCUMENT
  • 49. GRAPH KEY-VALUE ∂ Relations more important then entities ∂ From RDBMS perspective : SELF JOINS COLUMN GRAPH DOCUMENT
  • 50. GRAPH KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Facebook style
  • 51. GRAPH KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Betweenness centrality
  • 52. GRAPH KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Degree centrality
  • 53. GRAPH KEY-VALUE COLUMN GRAPH DOCUMENT ∂ Closeness centrality
  • 55. GRAPH KEY-VALUE 2 COLUMN 1 9 3 2 1 2 1 GRAPH 2 3 3 DOCUMENT ∂ TomTom style
  • 56. GRAPH KEY-VALUE 2 COLUMN 1 9 3 2 1 2 1 GRAPH 2 3 3 DOCUMENT ∂ TomTom style
  • 57. GRAPH KEY-VALUE 2 COLUMN 1 9 3 2 1 2 1 GRAPH 2 3 3 DOCUMENT ∂ TomTom style
  • 58. NEO4J KEY-VALUE ∂ ACID compliant ∂ Enterprise product for HA ($$$) ∂ Custom query language COLUMN ∂ Notable options § Self contained web admin GRAPH DOCUMENT
  • 59. DOCUMENT KEY-VALUE ∂ Largest resemblance with RDBMS ∂ MapReduce ∂ Software architect more important COLUMN GRAPH DOCUMENT
  • 60. MONGODB KEY-VALUE ∂ MySQL of it’s generation?! ∂ Master - slave structure ∂ MapReduce COLUMN ∂ Notable options § Geo indexes GRAPH DOCUMENT SMALLEST LEARNING CURVE!
  • 61. USE CASES ∂ Rapid changing data which fits in memory KEY-VALUE ∂ Analytics, logging, real-time data collection COLUMN GRAPH DOCUMENT
  • 62. USE CASES ∂ Rapid changing data which fits in memory KEY-VALUE ∂ Analytics, logging, real-time data collection ∂ Very good availability & fault tolerance COLUMN ∂ Applications where seconds of downtime hurt GRAPH DOCUMENT
  • 63. USE CASES ∂ Rapid changing data which fits in memory KEY-VALUE ∂ Analytics, logging, real-time data collection ∂ Very good availability & fault tolerance COLUMN ∂ Applications where seconds of downtime hurt ∂ For rich interconnected data GRAPH ∂ Social relational data, geo & maps data DOCUMENT
  • 64. USE CASES ∂ Rapid changing data which fits in memory KEY-VALUE ∂ Analytics, logging, real-time data collection ∂ Very good availability & fault tolerance COLUMN ∂ Applications where seconds of downtime hurt ∂ For rich interconnected data GRAPH ∂ Social relational data, geo & maps data ∂ MySQL like usage with indexes DOCUMENT ∂ Any type of data you’d fit in MySQL
  • 67. ∂ KLIK VOOR FOOTER 67
  • 69. ∂ THANK YOU! FEEDBACK? JOIND.IN/7084
  • 70. ∂ MORE DETAILS? SCAN THIS CODE.

Editor's Notes

  1. \n
  2. Vragen gewoon tussendoor stellen\n
  3. Onze projecten moeten de lekkerste gerechten zijn voor de klant\nAlleen maar doen met de beste ingredienten\nzodat klant een magische ervaring heeft\n\nDaar we hebben we personen zoals jullie voor nodig\n
  4. Onze projecten moeten de lekkerste gerechten zijn voor de klant\nAlleen maar doen met de beste ingredienten\nzodat klant een magische ervaring heeft\n\nDaar we hebben we personen zoals jullie voor nodig\n
  5. Onze projecten moeten de lekkerste gerechten zijn voor de klant\nAlleen maar doen met de beste ingredienten\nzodat klant een magische ervaring heeft\n\nDaar we hebben we personen zoals jullie voor nodig\n
  6. Onze projecten moeten de lekkerste gerechten zijn voor de klant\nAlleen maar doen met de beste ingredienten\nzodat klant een magische ervaring heeft\n\nDaar we hebben we personen zoals jullie voor nodig\n
  7. WHAT IS THIS?\n
  8. \n
  9. AND THIS?\n
  10. \n
  11. Courtesy of Tim Anglade who inspired me to do this talk\n
  12. \n\n
  13. \n
  14. \n\n
  15. Biggest bang for buck\n- JS, media\n- HTTP Caching\n- CDN caching\n\n\n
  16. WANT TO USE NOSQL OR HAVE TO USE NOSQL\n\nIn 2009 talk, DPC, Scott MacViccar, Alternative databases\n
  17. NOSQL USE FOR BOTH SCALABILITY AND PERFORMANCE\n
  18. NO SCALABILITY ISSUES?\n
  19. SQL, name says it all\nACID for transactions\nBuy support, hire a db consultatnt\nOpen source -> change it to your needs\n\n
  20. SQL\nACID for transaction\nBuy support, hire a db consultatnt\nOpen source -> change it to your needs\n\n
  21. SQL\nACID for transaction\nBuy support, hire a db consultatnt\nOpen source -> change it to your needs\n\n
  22. VERTICAL = performance\nHORIZONTAL = distribution\n
  23. VERTICAL = performance\nHORIZONTAL = distribution\n
  24. VERTICAL = performance\nHORIZONTAL = distribution\n
  25. PEOPLE STARTED TO LOOK FOR NEW SOLUTION FOR STORING DATA INDEPENDENTLY\n
  26. PEOPLE QUESTION THEMSELVES\n\nDOES THE WORLD GO DOWN WHEN A REPLY ON FACEBOOK IS GONE?\nEXPERIENCE MORE IMPORTANT THEN ALWAYS CONSISTENT DATA\n
  27. EVENTUAL CONSISTENCY\n
  28. A DISTRIBUTED SYSTEM CAN ONLY SATISFY TWO OF THE GUARANTEES\n\nDROP P -> You have 2 use one machine\nDROP A -> On partition people will have to wait before the data is consistent again\nDROP C -> What if 2 people buy the same book where there is just one in stock....?\n\n
  29. \n
  30. GENERALLY SEEN, 4 TYPES\n\nBUT OTHER PEOPLE MIGHT HAVE OTHER OPINIONS\n\n
  31. \n
  32. \n
  33. \n
  34. \n
  35. Far from complete, as there are 122 NoSQL databases listed on nosql-database.org\n\n\n\n
  36. My explanation will be from the point of view of ...\n
  37. What to tell about KV\nEvery body knows memcached? Used it?\n
  38. PHP ASSOCIATIVE ARRAY = KV STORE\n\n
  39. GET IN TOUCH WITH ROSS TUCK\n\nPIETER NOORDHUIS\n
  40. \n\n
  41. DATA STORED IN RING... make it endless\n
  42. EXPLAIN CONSISTENT HASHING\n
  43. SHA1 partitioning\n\n
  44. \n
  45. \n
  46. FIRST NODE JOINS THE CLUSTER, CLAIMS THE COMPLETE RING\n
  47. \n
  48. READ & WRITE QUORUM\n
  49. VECTOR CLOCKS\n\n
  50. HINTED HANDOFF\n\n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. BETWEENNESS CENTRALITY\n\nIMPORTANT PERSON FOR CONNECTING NETWORKS\n
  57. DEGREE CENTRALITY\n\nTHE ONE WITH THE MOST RELATIONS\n
  58. CLOSENESS CENTRALITY\n\nSOMEONE WHO CAN CREATE EASY CONTACTS\n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. - Best use case -> rapid changing data\n- For example -> analytics, real-time data collection\n
  68. - Best use case -> very good availability\n- For example -> no downtime allowed\n
  69. - Best use case - rich interconnected data\n- For example - social networks, network topologies\n
  70. - Best use case - any data you would store in MySQL\n- For example\n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n