MySQL & NoSQL from a
PHP perspective



                                            Tim Juravich
                                            @timjuravich
         October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Who Am I?
• Developer, Startup Junky
• Lead projects in .NET, Ruby, and PHP
• Book on PHP & CouchDB development out early next year from Packt Publishing




                               October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




What we’ll talk about today
• A high level discussion on NoSQL databases from the PHP developer POV
• We’ll focus on Data Models
• What we won’t be able to talk about:
  - How each database scales, stores it’s data.
  - CAP Theorem (http://tinyurl.com/nosql-cap)

• We’ll touch on tools for us PHP Developers




                                October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Data Models
A data model defines how your application stores data and how it
makes associations.


If you force an incorrect data model into your application...you’re
probably going to have a hard time.




                                 October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




 Traditional relational Model (MySQL)
          addresses                                                                          users
id    address      city      state     zip        user_id                               id   first_name last_name
      123 Main
1                 Seattle     WA      98101         1
       Street                                                                           1       John       Doe
      120 Pike
2                 Seattle     WA      98101         1
       Street                                                                           2       Jane       Doe
      321 2nd
3                 Seattle     WA      98101         2
        Ave


      phone numbers
 id      number             primary      user_id

 1    555-867-5309            1               1
 2    555-867-5309            0               1
 3    555-867-5309            1               2


                                                     October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




What’s wrong with this?
• Nothing really...there are just limitations
   - Due to normalization as your data grows so does the complexity of your
  database

  - As your database grows, writing becomes a bottleneck
  - Difficult to scale horizontally
  - Sometimes tables are just too limiting




                                      October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




NoSQL databases are born
• History
  - Some NoSQL databases have been around forever
  - In 2004 & 2005 they explode

• NoSQL really means “Not Only SQL”




                              October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




NoSQL
• The Good News
  - Different tools for different situations
  - Flexible (Schema-less)

  - Focused on scalability out of the box
  - New data models

• The Bad News
  - No common standards
  - Relatively immature
  - New data models


                                  October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




There are no silver bullets!




          October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Size vs. Complexity
                 Key/value Stores
                                     Column Stores
                                                                       Document Database
 Scale To Size




                                                                                  Graph Database


                           Typical RDMBS


                                    RDMBS Performance Line



                                Scale To Complexity
                                    October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Key Value Stores
• Definition
   - Access to a value based on a unique key
   - Think of this in terms of a hash-table, or in PHP an associative array.


                 user_1                                            user_2
               “John Doe”                         { name: “John Doe”,
                                                    email: john@example.com”,
                                                    phone: “8675309”
                                                  }




                                October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Redis
• Strengths
   - Incredibly Fast
   - Pub/Sub support      redis> set im.a.key "im.a.value"
                          OK
   - Simple CLI           redis> get im.a.key
                          "im.a.value"
• Weaknesses
   - It can feel limiting with a complex use case

• Use it for
   - Rapidly changing data.
   - Stocks, Analytics, Real-time collection/communication


                                October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Redis & PHP
• There are a variety of Redis & PHP toolkits (http://tinyurl.com/redis-php)
• My favorite is Predis (https://github.com/nrk/predis)

          <?php
          $redis = new PredisClient();
          $redis->set('foo', 'bar');
          $value = $redis->get('foo');


• Twitter clone to play with: (http://redis.io/topics/twitter-clone)



                                 October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Column Stores
• Definition
   - Similar to relational database, but it flips it all around. Instead of storing
   records, column stores store all of the values for a column together in a

   stream. From there, you can use an index to get column values for a particular
   record.
   - Can handle 4 or 5 dimensions

     Keyspace, Column Family, Column Family Row, Column
     Keyspace, Column Family, Column Family Row, Super Column, Column




                                  October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Column Stores
  example-db (Keyspace)
  users (Column Family)
      johndoe (key)
        name (column)        email (column)                phone (column)
          John Doe          john@example.com                 5558675309




      janedoe (key)
        name (column)       email (column)
          Jane Doe          jane@example.com




                        October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Cassandra
• Strengths
   - Can handle some serious data
   - Writes are much faster than reads

   - Hadoop integration

• Weaknesses
   - Complex for it’s offering and bloated

• Use it for
   - Apps with a lot of writing. Serious applications.




                                  October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Cassandra & PHP
• Thrift
• There are a few PHP libraries (http://tinyurl.com/cassandra-php)
• My favorite is phpcassa (https://github.com/thobbs/phpcassa)




                               October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Cassandra & PHP (phpcassa)
<?php

// Connect to Keyspace
$pool = new ConnectionPool('example-db');


// Create ColumnFamily
$users = new ColumnFamily($pool, 'users');


// Create User
$users->insert('2’, array('name' => 'Jane Doe',
                          'email' => 'jane@example.com'));

// Get User
$users->get('2');



                          October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Document Databases
• Definition
   - Documents provide access to structured data, without a schema.
   - Buckets of key-value pairs inside of a self contained object.

   - Friendliest NoSQL databases for PHP developers




                                October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




    Document Databases
{ id: 'johndoe',                                                   { id: 'janedoe',
  name: 'John Doe',                                                  name: 'Jane Doe',
  email : ‘john@example.com’,                                        email : ‘jane@example.com’,
  phone : ‘5558675309’                                             }
  addresses : [ “address1” : {
                   address: '123 main street',
                   city: 'seattle',
                   state: 'WA',
                   zip: ‘98101’ },
                 “address2” : {
                   address: '123 main street',
                   city: 'seattle',
                   state: 'WA',
                   zip: ‘98101’ }
              ]
}




                                      October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




MongoDB
• Strengths
   - Familiar Query Language                     $post->where('id',       $this->getID());


   - A lot of developer toolkits

• Weaknesses
   - Sharding can be a pain

• Use it for
   - Things you might do with MySQL, but schemas are getting in the way.




                                   October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




MongoDB & PHP
• A TON of libraries (http://tinyurl.com/mongo-php)
   - Doctrine
   - Cake

   - Code Ignitor
   - Symfony
   - Zend

   - etc.

• My favorite is ActiveMongo (https://github.com/crodas/ActiveMongo)



                              October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




MongoDB & PHP (Active Mongo)
<?php
ActiveMongo::connect('example-db', 'localhost');

class User extends ActiveMongo
{
  public $name;
  public $email;
}

$user = new User();
$user->name = 'John Doe';
$user->email = 'john@example.com';

// Insert
$user->save();

// Update
$user->email = 'john@example.org';
$user->save();

                          October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




CouchDB
• Strengths
   - Bi-lateral replication (master-master)
   - Slick RESTful JSON API, easy to use

• Weaknesses
   - Need some Javascript chops
   - Slower writes

• Use it for
   - Mobile, CRM, CMS systems, multi-site deployments




                                October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




CouchDB & PHP
• Not as many as MongoDB (http://tinyurl.com/couch-php)
   - Doctrine
   - Variety of standalone libraries

• My favorite is Sag (https://github.com/sbisbee/sag)




                                 October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




CouchDB & PHP (Sag)
<?php
class User
{
  public $name;
  public $email;
}

$user = new User();
$user->name = 'John Doe';
$user->email = 'john@example.com';

$sag = new Sag('127.0.0.1', '5984');
$sag->setDatabase('example-db');
$sag->post($user);




                          October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Graph Databases
• Definition
   - Instead of tables, rows, columns, it's a flexible graph model that contains
   nodes. Nodes have properties and relationships to other nodes.




                                October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Graph Databases




           October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Neo4j
• Strengths
   - Fully transactional
   - Flexible API

• Weaknesses
   - A completely different way of thinking
   - Complex

• Use it for
   - Social relations, road maps, network topologies




                               October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




Neo4j & PHP
• There are a few of options (http://tinyurl.com/neo4j-php)
   - REST API
   - Thrift

• It’s pretty complex...




                               October 4th, 2011 - Tim Juravich
MySQL & NoSQL from a PHP perspective




So which DB should you use?
• Don’t rule out relational databases
• Do your homework
• Every project is different
• NoSQL probably should be avoided in these areas
   - Transactions, orders, anything where money changes hands
   - Business critical data or line of business applications




                                 October 4th, 2011 - Tim Juravich
Thanks!
Feel free to reach out with any questions:
        tim.juravich@gmail.com
              @timjuravich




            October 4th, 2011 - Tim Juravich

More Related Content

PPTX
Designing and Implementing Search Solutions
PDF
Relation Extraction
PDF
Building OBO Foundry ontology using semantic web tools
PDF
Graph analytic and machine learning
PDF
Hw09 Welcome To Hadoop World
PDF
Redis Everywhere - Sunshine PHP
PPTX
Hadoop: An Industry Perspective
PDF
BITS: Introduction to relational databases and MySQL - SQL
Designing and Implementing Search Solutions
Relation Extraction
Building OBO Foundry ontology using semantic web tools
Graph analytic and machine learning
Hw09 Welcome To Hadoop World
Redis Everywhere - Sunshine PHP
Hadoop: An Industry Perspective
BITS: Introduction to relational databases and MySQL - SQL

Viewers also liked (13)

PDF
Extensible Data Modeling
PDF
Speed up your Symfony2 application and build awesome features with Redis
PDF
Introduction to MySQL
PPS
Introduction to Mysql
PPT
Database Management System Introduction
PDF
CBSE XII Database Concepts And MySQL Presentation
PPT
1. Introduction to DBMS
PDF
Alphorm.com Support de la Formation PHP MySQL
PPT
Database Management Systems (DBMS)
PDF
Introduction to PHP
PPT
PPTX
Introduction to database
PPT
Database management system presentation
Extensible Data Modeling
Speed up your Symfony2 application and build awesome features with Redis
Introduction to MySQL
Introduction to Mysql
Database Management System Introduction
CBSE XII Database Concepts And MySQL Presentation
1. Introduction to DBMS
Alphorm.com Support de la Formation PHP MySQL
Database Management Systems (DBMS)
Introduction to PHP
Introduction to database
Database management system presentation
Ad

Similar to MySQL & NoSQL from a PHP Perspective (20)

PPTX
Couchbase at the academic bisilim, Turkey
PPTX
DataStax C*ollege Credit: What and Why NoSQL?
PDF
Polygot persistence for Java Developers - August 2011 / @Oakjug
PDF
Scaling the Web: Databases & NoSQL
PPTX
A Practical Look at the NOSQL and Big Data Hullabaloo
PPTX
SQL Database Design For Developers at PhpTek 2025.pptx
PPTX
Lviv EDGE 2 - NoSQL
PDF
Navigating the Transition from relational to NoSQL - CloudCon Expo 2012
PDF
Transition from relational to NoSQL Philly DAMA Day
PDF
NoSQL Overview
PPTX
Big Data Platforms: An Overview
PDF
Sql no sql
PDF
Polyglot persistence for Java developers - moving out of the relational comfo...
PPTX
Sql vs NoSQL
PDF
The Cassandra Distributed Database
KEY
NoSQL & MongoDB
PPTX
NoSQL and The Big Data Hullabaloo
KEY
Strengths and Weaknesses of MongoDB
PPTX
NoSql-YesSQL mickey alon
PDF
Introduction to NoSQL and Couchbase
Couchbase at the academic bisilim, Turkey
DataStax C*ollege Credit: What and Why NoSQL?
Polygot persistence for Java Developers - August 2011 / @Oakjug
Scaling the Web: Databases & NoSQL
A Practical Look at the NOSQL and Big Data Hullabaloo
SQL Database Design For Developers at PhpTek 2025.pptx
Lviv EDGE 2 - NoSQL
Navigating the Transition from relational to NoSQL - CloudCon Expo 2012
Transition from relational to NoSQL Philly DAMA Day
NoSQL Overview
Big Data Platforms: An Overview
Sql no sql
Polyglot persistence for Java developers - moving out of the relational comfo...
Sql vs NoSQL
The Cassandra Distributed Database
NoSQL & MongoDB
NoSQL and The Big Data Hullabaloo
Strengths and Weaknesses of MongoDB
NoSql-YesSQL mickey alon
Introduction to NoSQL and Couchbase
Ad

Recently uploaded (20)

PPTX
How to use fields_get method in Odoo 18
PPTX
Digital Convergence: How GIS, BIM, and CAD Revolutionize Asset Management
PPTX
How to Convert Tickets Into Sales Opportunity in Odoo 18
PPTX
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
PDF
Optimizing bioinformatics applications: a novel approach with human protein d...
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PPTX
Blending method and technology for hydrogen.pptx
PDF
Ericsson 5G Feature,KPIs Analysis_ Overview, Dependencies & Recommendations (...
PDF
Altius execution marketplace concept.pdf
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PDF
Fitaura: AI & Machine Learning Powered Fitness Tracker
PPTX
Information-Technology-in-Human-Society.pptx
PDF
Gestión Unificada de los Riegos Externos
PDF
Internet of Things (IoT) – Definition, Types, and Uses
PDF
Intravenous drug administration application for pediatric patients via augmen...
PDF
Introduction to MCP and A2A Protocols: Enabling Agent Communication
PDF
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
PDF
Streamline Vulnerability Management From Minimal Images to SBOMs
PDF
NewMind AI Journal Monthly Chronicles - August 2025
PPTX
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
How to use fields_get method in Odoo 18
Digital Convergence: How GIS, BIM, and CAD Revolutionize Asset Management
How to Convert Tickets Into Sales Opportunity in Odoo 18
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
Optimizing bioinformatics applications: a novel approach with human protein d...
EIS-Webinar-Regulated-Industries-2025-08.pdf
Blending method and technology for hydrogen.pptx
Ericsson 5G Feature,KPIs Analysis_ Overview, Dependencies & Recommendations (...
Altius execution marketplace concept.pdf
Connector Corner: Transform Unstructured Documents with Agentic Automation
Fitaura: AI & Machine Learning Powered Fitness Tracker
Information-Technology-in-Human-Society.pptx
Gestión Unificada de los Riegos Externos
Internet of Things (IoT) – Definition, Types, and Uses
Intravenous drug administration application for pediatric patients via augmen...
Introduction to MCP and A2A Protocols: Enabling Agent Communication
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
Streamline Vulnerability Management From Minimal Images to SBOMs
NewMind AI Journal Monthly Chronicles - August 2025
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]

MySQL & NoSQL from a PHP Perspective

  • 1. MySQL & NoSQL from a PHP perspective Tim Juravich @timjuravich October 4th, 2011 - Tim Juravich
  • 2. MySQL & NoSQL from a PHP perspective Who Am I? • Developer, Startup Junky • Lead projects in .NET, Ruby, and PHP • Book on PHP & CouchDB development out early next year from Packt Publishing October 4th, 2011 - Tim Juravich
  • 3. MySQL & NoSQL from a PHP perspective What we’ll talk about today • A high level discussion on NoSQL databases from the PHP developer POV • We’ll focus on Data Models • What we won’t be able to talk about: - How each database scales, stores it’s data. - CAP Theorem (http://tinyurl.com/nosql-cap) • We’ll touch on tools for us PHP Developers October 4th, 2011 - Tim Juravich
  • 4. MySQL & NoSQL from a PHP perspective Data Models A data model defines how your application stores data and how it makes associations. If you force an incorrect data model into your application...you’re probably going to have a hard time. October 4th, 2011 - Tim Juravich
  • 5. MySQL & NoSQL from a PHP perspective Traditional relational Model (MySQL) addresses users id address city state zip user_id id first_name last_name 123 Main 1 Seattle WA 98101 1 Street 1 John Doe 120 Pike 2 Seattle WA 98101 1 Street 2 Jane Doe 321 2nd 3 Seattle WA 98101 2 Ave phone numbers id number primary user_id 1 555-867-5309 1 1 2 555-867-5309 0 1 3 555-867-5309 1 2 October 4th, 2011 - Tim Juravich
  • 6. MySQL & NoSQL from a PHP perspective What’s wrong with this? • Nothing really...there are just limitations - Due to normalization as your data grows so does the complexity of your database - As your database grows, writing becomes a bottleneck - Difficult to scale horizontally - Sometimes tables are just too limiting October 4th, 2011 - Tim Juravich
  • 7. MySQL & NoSQL from a PHP perspective NoSQL databases are born • History - Some NoSQL databases have been around forever - In 2004 & 2005 they explode • NoSQL really means “Not Only SQL” October 4th, 2011 - Tim Juravich
  • 8. MySQL & NoSQL from a PHP perspective NoSQL • The Good News - Different tools for different situations - Flexible (Schema-less) - Focused on scalability out of the box - New data models • The Bad News - No common standards - Relatively immature - New data models October 4th, 2011 - Tim Juravich
  • 9. MySQL & NoSQL from a PHP perspective There are no silver bullets! October 4th, 2011 - Tim Juravich
  • 10. MySQL & NoSQL from a PHP perspective Size vs. Complexity Key/value Stores Column Stores Document Database Scale To Size Graph Database Typical RDMBS RDMBS Performance Line Scale To Complexity October 4th, 2011 - Tim Juravich
  • 11. MySQL & NoSQL from a PHP perspective Key Value Stores • Definition - Access to a value based on a unique key - Think of this in terms of a hash-table, or in PHP an associative array. user_1 user_2 “John Doe” { name: “John Doe”, email: [email protected]”, phone: “8675309” } October 4th, 2011 - Tim Juravich
  • 12. MySQL & NoSQL from a PHP perspective Redis • Strengths - Incredibly Fast - Pub/Sub support redis> set im.a.key "im.a.value" OK - Simple CLI redis> get im.a.key "im.a.value" • Weaknesses - It can feel limiting with a complex use case • Use it for - Rapidly changing data. - Stocks, Analytics, Real-time collection/communication October 4th, 2011 - Tim Juravich
  • 13. MySQL & NoSQL from a PHP perspective Redis & PHP • There are a variety of Redis & PHP toolkits (http://tinyurl.com/redis-php) • My favorite is Predis (https://github.com/nrk/predis) <?php $redis = new PredisClient(); $redis->set('foo', 'bar'); $value = $redis->get('foo'); • Twitter clone to play with: (http://redis.io/topics/twitter-clone) October 4th, 2011 - Tim Juravich
  • 14. MySQL & NoSQL from a PHP perspective Column Stores • Definition - Similar to relational database, but it flips it all around. Instead of storing records, column stores store all of the values for a column together in a stream. From there, you can use an index to get column values for a particular record. - Can handle 4 or 5 dimensions Keyspace, Column Family, Column Family Row, Column Keyspace, Column Family, Column Family Row, Super Column, Column October 4th, 2011 - Tim Juravich
  • 15. MySQL & NoSQL from a PHP perspective Column Stores example-db (Keyspace) users (Column Family) johndoe (key) name (column) email (column) phone (column) John Doe [email protected] 5558675309 janedoe (key) name (column) email (column) Jane Doe [email protected] October 4th, 2011 - Tim Juravich
  • 16. MySQL & NoSQL from a PHP perspective Cassandra • Strengths - Can handle some serious data - Writes are much faster than reads - Hadoop integration • Weaknesses - Complex for it’s offering and bloated • Use it for - Apps with a lot of writing. Serious applications. October 4th, 2011 - Tim Juravich
  • 17. MySQL & NoSQL from a PHP perspective Cassandra & PHP • Thrift • There are a few PHP libraries (http://tinyurl.com/cassandra-php) • My favorite is phpcassa (https://github.com/thobbs/phpcassa) October 4th, 2011 - Tim Juravich
  • 18. MySQL & NoSQL from a PHP perspective Cassandra & PHP (phpcassa) <?php // Connect to Keyspace $pool = new ConnectionPool('example-db'); // Create ColumnFamily $users = new ColumnFamily($pool, 'users'); // Create User $users->insert('2’, array('name' => 'Jane Doe', 'email' => '[email protected]')); // Get User $users->get('2'); October 4th, 2011 - Tim Juravich
  • 19. MySQL & NoSQL from a PHP perspective Document Databases • Definition - Documents provide access to structured data, without a schema. - Buckets of key-value pairs inside of a self contained object. - Friendliest NoSQL databases for PHP developers October 4th, 2011 - Tim Juravich
  • 20. MySQL & NoSQL from a PHP perspective Document Databases { id: 'johndoe', { id: 'janedoe', name: 'John Doe', name: 'Jane Doe', email : ‘[email protected]’, email : ‘[email protected]’, phone : ‘5558675309’ } addresses : [ “address1” : { address: '123 main street', city: 'seattle', state: 'WA', zip: ‘98101’ }, “address2” : { address: '123 main street', city: 'seattle', state: 'WA', zip: ‘98101’ } ] } October 4th, 2011 - Tim Juravich
  • 21. MySQL & NoSQL from a PHP perspective MongoDB • Strengths - Familiar Query Language $post->where('id', $this->getID()); - A lot of developer toolkits • Weaknesses - Sharding can be a pain • Use it for - Things you might do with MySQL, but schemas are getting in the way. October 4th, 2011 - Tim Juravich
  • 22. MySQL & NoSQL from a PHP perspective MongoDB & PHP • A TON of libraries (http://tinyurl.com/mongo-php) - Doctrine - Cake - Code Ignitor - Symfony - Zend - etc. • My favorite is ActiveMongo (https://github.com/crodas/ActiveMongo) October 4th, 2011 - Tim Juravich
  • 23. MySQL & NoSQL from a PHP perspective MongoDB & PHP (Active Mongo) <?php ActiveMongo::connect('example-db', 'localhost'); class User extends ActiveMongo { public $name; public $email; } $user = new User(); $user->name = 'John Doe'; $user->email = '[email protected]'; // Insert $user->save(); // Update $user->email = '[email protected]'; $user->save(); October 4th, 2011 - Tim Juravich
  • 24. MySQL & NoSQL from a PHP perspective CouchDB • Strengths - Bi-lateral replication (master-master) - Slick RESTful JSON API, easy to use • Weaknesses - Need some Javascript chops - Slower writes • Use it for - Mobile, CRM, CMS systems, multi-site deployments October 4th, 2011 - Tim Juravich
  • 25. MySQL & NoSQL from a PHP perspective CouchDB & PHP • Not as many as MongoDB (http://tinyurl.com/couch-php) - Doctrine - Variety of standalone libraries • My favorite is Sag (https://github.com/sbisbee/sag) October 4th, 2011 - Tim Juravich
  • 26. MySQL & NoSQL from a PHP perspective CouchDB & PHP (Sag) <?php class User { public $name; public $email; } $user = new User(); $user->name = 'John Doe'; $user->email = '[email protected]'; $sag = new Sag('127.0.0.1', '5984'); $sag->setDatabase('example-db'); $sag->post($user); October 4th, 2011 - Tim Juravich
  • 27. MySQL & NoSQL from a PHP perspective Graph Databases • Definition - Instead of tables, rows, columns, it's a flexible graph model that contains nodes. Nodes have properties and relationships to other nodes. October 4th, 2011 - Tim Juravich
  • 28. MySQL & NoSQL from a PHP perspective Graph Databases October 4th, 2011 - Tim Juravich
  • 29. MySQL & NoSQL from a PHP perspective Neo4j • Strengths - Fully transactional - Flexible API • Weaknesses - A completely different way of thinking - Complex • Use it for - Social relations, road maps, network topologies October 4th, 2011 - Tim Juravich
  • 30. MySQL & NoSQL from a PHP perspective Neo4j & PHP • There are a few of options (http://tinyurl.com/neo4j-php) - REST API - Thrift • It’s pretty complex... October 4th, 2011 - Tim Juravich
  • 31. MySQL & NoSQL from a PHP perspective So which DB should you use? • Don’t rule out relational databases • Do your homework • Every project is different • NoSQL probably should be avoided in these areas - Transactions, orders, anything where money changes hands - Business critical data or line of business applications October 4th, 2011 - Tim Juravich
  • 32. Thanks! Feel free to reach out with any questions: [email protected] @timjuravich October 4th, 2011 - Tim Juravich