The Codex of Business Writing Software for Real-World Solutions 2.pptx
What's New in the PHP Driver
1. What’s new in the
PHP Driver (1.3.0)
Hannes Magnusson, 10gen
bjori@10gen.com
@bjori
November 15th, 2012
Thursday, 15 November 12
2. About me
• Hannes / @bjori
• Icelandic
– Oslo, Norway
– London, England
– San Francisco, USA
• PHP Contributor
• PHP Driver Engineer
» @10gen
3
Thursday, 15 November 12
8. MongoClient !!
• Acknowledged writes by default! o/o/
• No deprecated methods
– Old Mongo class now extends MongoClient
and adds back the old behaviour and
methods
9
Thursday, 15 November 12
24. Replica Set - Driver view
Driver
Node 1 Node 2
Secondary Secondary
Node 3
Primary
Thursday, 15 November 12
25. Connecting to Replica Set
<?php
$servers = "mongodb://Node1,Node3";
$options = array(
"replicaSet" => "mySet",
);
$m = new MongoClient($servers, $options);
?>
• Connect to Node1
– send `ismaster` then `ping`
• Connect to Node3...
• Topology discovery
– Match hostnames & Replica Set names
– Verify the seedlist
– Discover more nodes
– Connect to Node2...
26
Thursday, 15 November 12
26. Connections
• Each unique connection string
• host:port;replicaSetName;user/pass/db;pid
• Once per process
• Closed & Cleaned up during shutdown
– Please don’t close connections manually :)
27
Thursday, 15 November 12
28. Replica Set - Default only primary
Driver
Node 1 Node 2
Secondary Secondary
Node 3
Primary
Thursday, 15 November 12
29. Read Preferences
• Only read from primary
• Read from secondaries
• Read from specific secondaries
• Only read from secondaries when primary
down
• Don’t care, just the nearest one
• Preferably node with a given tag
30
Thursday, 15 November 12
30. Read Preferences
• Modes (readPreference)
– primary, primaryPreferred
– secondary, secondaryPreferred
– nearest
• Tag Sets (readPreferenceTags)
– Uses Replica Set tags
– Passed Tag is used to find matching members
31
Thursday, 15 November 12
31. Detecting failures / failovers
• Runs `ping` every 5 seconds
(mongo.ping_interval)
• Runs `ismaster` every 60 seconds
(mongo.is_master_interval)
• Server/connection failure/force close
– rs.stepDown()
– service mongod stop
– Query failure
– ...
32
Thursday, 15 November 12
32. Read Preference
+
Failovers
No primary available
Thursday, 15 November 12
33. Replica Set - all well
Driver
Node 1 Node 2
Secondary Secondary
Node 3
Primary
Thursday, 15 November 12
34. Replica Set
Driver
Node 1 Node 2
Secondary Secondary
Node 3
Primary
Thursday, 15 November 12
35. Read Preferences
<?php
$servers = "mongodb://Node1,Node2,Node3";
$options = array(
"replicaSet" => "mySet",
"readPreference" => "primaryPreferred",
"readPreferenceTagS" => "dc:is",
);
$m = new MongoClient($servers, $options);
?>
• Read from Primary if available
• Otherwise from a secondary in Iceland
36
Thursday, 15 November 12
36. WriteConcerns
How much do you love your data?
(not actually new, but still cool)
Thursday, 15 November 12
37. Write Preference
• Unacknowledged (w=0)
• Acknowledged (w=1)
• Wait for replication (w=2+)
• Wait for replication to tagset (w=string)
• Wait for journal sync (j=1)
Thursday, 15 November 12
38. Write Preference
<?php
$examples = $mongo->test->example;
$data = array("Hello" => "World");
$examples->insert($data, array("w" => 2));
$examples->insert($data, array("w" => "is"));
?>
• w=majority
• (replicate to the majority of the RS)
Thursday, 15 November 12
39. New Connection handling
Read Preferences
Acknowledged writes by default
RC2 released last Monday...
RC3 this coming Monday...
Final .. 2weeks?
Thursday, 15 November 12
40. download at mongodb.org
We’re Hiring !
bjori@10gen.com @bjori
conferences, appearances, and meetups
http://www.10gen.com/events
Facebook | Twitter | LinkedIn
http://bit.ly/mongofb @mongodb http://linkd.in/joinmongo
Thursday, 15 November 12