com presentations: IPC and PHPTEK talks. Start of MongoDB tutorial.: mongo-tut-summercamp14.xml slides/mongodb/aggr-op-group-collect-example.xml slides/mongodb/aggr-op-group-compound-example.xml slides/mongodb/aggr-op-group-sum-count-example.xml slides/mongodb/aggr-op-limit-example.xml slides/mongodb/aggr-op-match-example.xml slides/mongodb/aggr-op-match-with-query-example.xml slides/mongodb/aggr-op-project-create-sub-example.xml slides/mongodb/a
[email protected] (Derick Rethans)
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 66295908554b148c04fe0420ceecfbafcaee2c5b Author: Derick Rethans <[email protected]> Tue, 2 Sep 2014 08:06:05 +0100 Parents: c60518b11bc4c3b7137ad99d76a8f0c355140d7a Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=66295908554b148c04fe0420ceecfbafcaee2c5b Log: IPC and PHPTEK talks. Start of MongoDB tutorial. Changed paths: A mongo-tut-summercamp14.xml M slides/mongodb/aggr-op-group-collect-example.xml M slides/mongodb/aggr-op-group-compound-example.xml M slides/mongodb/aggr-op-group-sum-count-example.xml M slides/mongodb/aggr-op-limit-example.xml M slides/mongodb/aggr-op-match-example.xml M slides/mongodb/aggr-op-match-with-query-example.xml M slides/mongodb/aggr-op-project-create-sub-example.xml M slides/mongodb/aggr-op-project-incl-excl-example.xml M slides/mongodb/aggr-op-project-rename-compute-example.xml M slides/mongodb/aggr-op-skip-example.xml M slides/mongodb/aggr-op-sort-example.xml M slides/mongodb/aggr-op-sort-limit-skip-example.xml M slides/mongodb/aggr-op-unwind-example.xml M slides/mongodb/aggr-our-example-data.xml M slides/mongodb/aggregation-example-cuisine6-sort.xml M slides/mongodb/commands.xml A slides/mongodb/excercise-finding-data.xml A slides/mongodb/excercise-import-untappd.xml A slides/mongodb/excercise-import-with-types.xml M slides/mongodb/excercise02-distillers-example.xml M slides/mongodb/excercise03-reviews-example.xml M slides/mongodb/excercise04-reviews-aggr.xml M slides/mongodb/half-tutorial-topics.xml A slides/mongodb/types-php.xml M slides/mongodb/types.xml M slides/time/intervals.xml A sql2nosql-ipc14s.xml A sql2nosql-phptek14.xml A time-phptek14.xml
diff_66295908554b148c04fe0420ceecfbafcaee2c5b.txt
(text/plain, 44.2 KB)
diff --git a/mongo-tut-summercamp14.xml b/mongo-tut-summercamp14.xml new file mode 100644 index 0000000..c3083cc --- /dev/null +++ b/mongo-tut-summercamp14.xml @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="10gen-strict.css"> +<topic>mongoDB</topic> +<title>PHP and MongoDB</title> +<event>PHP Summer Camp</event> +<location>Rovinj, Croatia</location> +<date>September 5th, 2014</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>http://derickrethans.nl/talks.html</url> +<joindin></joindin> +<slide>slides/mongodb/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> +<slide>slides/mongodb/half-tutorial-topics.xml</slide> + +<slide>slides/mongodb/section-intro.xml</slide> +<slide>slides/mongodb/collections-documents.xml</slide> +<slide>slides/mongodb/document.xml</slide> + +<slide>slides/mongodb/connecting.xml</slide> + +<slide>slides/mongodb/insert-js.xml</slide> +<slide>slides/mongodb/insert-php.xml</slide> +<slide>slides/mongodb/insert-php-shortarray.xml</slide> +- single + +<slide>slides/mongodb/id.xml</slide> + +<!-- FIRST EXCERCISE --> +<slide>slides/mongodb/excercise.xml</slide> +<slide>slides/mongodb/excercise-import-untappd.xml</slide> + +<slide>slides/mongodb/query.xml</slide> +<slide>slides/mongodb/query2.xml</slide> +- findOne +- find + +<slide>slides/mongodb/query-advanced-ops.xml</slide> + +<slide>slides/mongodb/cursors.xml</slide> +- cursor +<slide>slides/mongodb/limit-skip.xml</slide> +- limit/skip + +<!-- SECOND EXCERCISE --> +<slide>slides/mongodb/excercise.xml</slide> +<slide>slides/mongodb/excercise-finding-data.xml</slide> + +<slide>slides/mongodb/types.xml</slide> +<slide>slides/mongodb/types-php.xml</slide> + +<!-- THIRD EXCERCISE --> +<slide>slides/mongodb/excercise.xml</slide> +<slide>slides/mongodb/excercise-import-with-types.xml</slide> + + +<slide>slides/mongodb/update2a.xml</slide> + +<!-- SCHEMA DESIGN --> +<slide>slides/mongodb/section-schema-design.xml</slide> +Common Patterns + +- RDBMS-normalisation. + +<slide>slides/mongodb/blog.xml</slide> +<slide>slides/mongodb/blog2.xml</slide> + +<slide>slides/mongodb/considerations.xml</slide> + + +<slide>slides/mongodb/one-to-many1.xml</slide> +<slide>slides/mongodb/one-to-many2.xml</slide> +<slide>slides/mongodb/tip-array-key.xml</slide> +<slide>slides/mongodb/one-to-many4.xml</slide> + +<!-- SECOND EXCERCISE --> +<slide>slides/mongodb/excercise.xml</slide> +<slide>slides/mongodb/excercise02-distillers-storage.xml</slide> +<slide>slides/mongodb/excercise02-distillers-example.xml</slide> + + +<slide>slides/mongodb/many-to-many1.xml</slide> +<slide>slides/mongodb/many-to-many2.xml</slide> +<slide>slides/mongodb/many-to-many3.xml</slide> +<slide>slides/mongodb/many-to-many4.xml</slide> + +<slide>slides/mongodb/embed-vs-link.xml</slide> + + +<!-- THIRD EXCERCISE --> +<slide>slides/mongodb/excercise.xml</slide> +<slide>slides/mongodb/excercise03-reviews.xml</slide> +<slide>slides/mongodb/excercise03-reviews-example.xml</slide> +<slide>slides/mongodb/excercise03-push-to-add-review.xml</slide> +<slide>slides/mongodb/excercise03-add-like.xml</slide> + + +<!-- COMMANDS and AGGREGATION --> +<slide>slides/mongodb/commands.xml</slide> + +<slide>slides/mongodb/section-aggregation.xml</slide> +<slide>slides/mongodb/aggr-aggr-framework.xml</slide> + +<slide>slides/mongodb/aggr-pipeline.xml</slide> +<slide>slides/mongodb/aggr-pipelines-ops.xml</slide> +<slide>slides/mongodb/aggr-our-example-data.xml</slide> +<slide>slides/mongodb/aggr-op-match.xml</slide> +<slide>slides/mongodb/aggr-op-match-example.xml</slide> +<slide>slides/mongodb/aggr-op-match-with-query-example.xml</slide> +<slide>slides/mongodb/aggr-op-project.xml</slide> +<slide>slides/mongodb/aggr-op-project-incl-excl-example.xml</slide> +<slide>slides/mongodb/aggr-op-project-rename-compute-example.xml</slide> +<slide>slides/mongodb/aggr-op-project-create-sub-example.xml</slide> +<slide>slides/mongodb/aggr-op-group.xml</slide> +<slide>slides/mongodb/aggr-op-group-sum-count-example.xml</slide> +<slide>slides/mongodb/aggr-op-group-collect-example.xml</slide> +<slide>slides/mongodb/aggr-op-group-compound-example.xml</slide> +<slide>slides/mongodb/aggr-op-unwind.xml</slide> +<slide>slides/mongodb/aggr-op-unwind-example.xml</slide> +<slide>slides/mongodb/aggr-op-sort-skip-limit.xml</slide> +<slide>slides/mongodb/aggr-op-sort-example.xml</slide> +<slide>slides/mongodb/aggr-op-limit-example.xml</slide> +<slide>slides/mongodb/aggr-op-skip-example.xml</slide> +<slide>slides/mongodb/aggr-op-sort-limit-skip-example.xml</slide> + +<!-- FOURTH EXCERCISE --> +<slide>slides/mongodb/aggregation-example-cuisine6-sort.xml</slide> +<slide>slides/mongodb/excercise.xml</slide> +<slide>slides/mongodb/excercise04-reviews-aggr.xml</slide> + +<slide>slides/mongodb/questions.xml</slide> + + +<!-- INDEXES --> +<slide>slides/mongodb/section-indexes.xml</slide> + +<slide>slides/mongodb/idx-create-php.xml</slide> + +<slide>slides/mongodb/idx-cities-by-name-and-pop.xml</slide> +<slide>slides/mongodb/idx-cities-by-name-and-pop2.xml</slide> +<slide>slides/mongodb/idx-cities-by-name-and-pop3.xml</slide> +<slide>slides/mongodb/idx-cities-by-pop-and-dem.xml</slide> +<slide>slides/mongodb/idx-cities-by-pop-and-dem2.xml</slide> +<slide>slides/mongodb/idx-stored2.xml</slide> +<slide>slides/mongodb/idx-cities-by-pop-and-dem4.xml</slide> +<slide>slides/mongodb/idx-cities-by-pop-and-dem6.xml</slide> +<slide>slides/mongodb/idx-cities-by-pop-and-dem5.xml</slide> + +<slide>slides/mongodb/idx-recap1.xml</slide> +<slide>slides/mongodb/idx-recap2.xml</slide> +<slide>slides/mongodb/idx-recap3.xml</slide> + +<slide>slides/mongodb/idx-which-one-is-picked.xml</slide> +<slide>slides/mongodb/questions.xml</slide> + +<!-- REPLICATION --> +<slide>slides/mongodb/section-replication.xml</slide> +<slide>slides/mongodb/repl-use-cases.xml</slide> +<slide>slides/mongodb/repl-features.xml</slide> +<slide>slides/mongodb/repl-works-basic.xml</slide> +<slide>slides/mongodb/repl-works-normal.xml</slide> +<slide>slides/mongodb/repl-works-failover.xml</slide> +<slide>slides/mongodb/repl-oplog.xml</slide> + +<slide>slides/mongodb/replication-setup.xml</slide> + +<slide>slides/mongodb/repl-eventual-consistency.xml</slide> + +<slide>slides/mongodb/questions.xml</slide> +<slide>slides/mongodb/resources.xml</slide> +</presentation> diff --git a/slides/mongodb/aggr-op-group-collect-example.xml b/slides/mongodb/aggr-op-group-collect-example.xml index 45d09bd..f2a2f7c 100644 --- a/slides/mongodb/aggr-op-group-collect-example.xml +++ b/slides/mongodb/aggr-op-group-collect-example.xml @@ -6,29 +6,22 @@ <td> <example inline="3"> { - "_id" : "n388320891", - "tags" : { -* "amenity" : "restaurant",* -* "cuisine" : "chinese",* - "name" : "China GaGa" - } -}, + "_id" : ObjectId("5400a24f44670a01098b488f"), + "beer_name" : "Reveller", + "brewery_name" : "Orchard Pig", + "beer_type" : "Cider" +} { - "_id" : "n388826644", - "tags" : { -* "amenity" : "restaurant",* -* "cuisine" : "japanese",* - "name" : "Oisi" - } -}, + "_id" : ObjectId("5400a24f44670a01098b4890"), + "beer_name" : "Hacker-Pschorr Hefe Weisse", + "brewery_name" : "Paulaner Gruppe", + "beer_type" : "Hefeweizen" +} { - "_id" : "n389031406", - "tags" : { -* "amenity" : "pub",* -* "cuisine" : "tapas",* - "food" : "yes", - "name" : "Tonic" - } + "_id" : ObjectId("5400a24f44670a01098b4891"), + "beer_name" : "Hacker-Pschorr Münchener Gold", + "brewery_name" : "Paulaner Gruppe", + "beer_type" : "Dortmunder / Export Lager" } </example> </td> @@ -38,24 +31,24 @@ <td> <example inline="3"> { $group: { -* _id: '$tags.amenity',* - cuisines: { *'$addToSet': '$tags.cuisine'* } +* _id: '$brewery_name',* + beers: { *'$addToSet': '$beer_name'* } } } </example> <example inline="3"> { - "_id" : "pub", - "cuisines" : [ - "tapas" - ] -}, + "_id" : "Paulaner Gruppe", + "beers" : [ + "Hacker-Pschorr Münchener Gold", + "Hacker-Pschorr Hefe Weisse" + ] +} { - "_id" : "restaurant", - "cuisines" : [ - "japanese", - "chinese" - ] + "_id" : "Orchard Pig", + "beers" : [ + "Reveller" + ] } </example> </td></tr></table> diff --git a/slides/mongodb/aggr-op-group-compound-example.xml b/slides/mongodb/aggr-op-group-compound-example.xml index 8a06430..5a2f65a 100644 --- a/slides/mongodb/aggr-op-group-compound-example.xml +++ b/slides/mongodb/aggr-op-group-compound-example.xml @@ -6,29 +6,29 @@ <td> <example inline="3"> { - "_id" : "n322270228", - "tags" : { -* "amenity" : "restaurant",* -* "cuisine" : "italian",* - "name" : "Ristorante LA COLLINA", - } -}, + "beer_name" : "Sleigh Ride", + "beer_type" : "Cider", + "brewery_country" : "Wales" +} { - "_id" : "n322270302", - "tags" : { -* "amenity" : "restaurant",* -* "cuisine" : "indian",* - "name" : "The Connoisseur", - } -}, + "beer_name" : "Tumbledown Mulled Cider", + "beer_type" : "Cider", + "brewery_country" : "Wales" +} { - "_id" : "n322270304", - "tags" : { -* "amenity" : "restaurant",* -* "cuisine" : "italian",* - "deli" : "yes", - "name" : "Incanto", - } + "beer_name" : "Tumbledown Mulled Cider", + "beer_type" : "Cider", + "brewery_country" : "Wales" +} +{ + "beer_name" : "Two Trees", + "beer_type" : "Perry", + "brewery_country" : "Wales" +} +{ + "beer_name" : "Longdon Perry", + "beer_type" : "Perry", + "brewery_country" : "England" } </example> </td> @@ -39,32 +39,25 @@ <example inline="3"> { $group: { _id: *{* -* 'amenity' : '$tags.amenity',* -* 'cuisine' : '$tags.cuisine'* +* 'country' : '$brewery_country',* +* 'type' : '$beer_type'* * }* - names: { *'$addToSet': '$tags.name'* } + beers: { *'$addToSet': '$beer_name'* } } } </example> <example inline="3"> { -* "_id" : {* -* "amenity" : "restaurant",* -* "cuisine" : "indian"* -* },* - "names" : [ - "The Connoisseur" - ] -}, + "_id" : { "country" : "England", "type" : "Perry" }, + "beers" : [ "Longdon Perry" ] +} +{ + "_id" : { "country" : "Wales", "type" : "Cider" }, + "beers" : [ "Tumbledown Mulled Cider", "Sleigh Ride" ] +} { -* "_id" : {* -* "amenity" : "restaurant",* -* "cuisine" : "italian"* -* },* - "names" : [ - "Incanto", - "Ristorante LA COLLINA" - ] + "_id" : { "country" : "Wales", "type" : "Perry" }, + "beers" : [ "Two Trees" ] } </example> </td></tr></table> diff --git a/slides/mongodb/aggr-op-group-sum-count-example.xml b/slides/mongodb/aggr-op-group-sum-count-example.xml index fcdcd67..5f5c53e 100644 --- a/slides/mongodb/aggr-op-group-sum-count-example.xml +++ b/slides/mongodb/aggr-op-group-sum-count-example.xml @@ -6,30 +6,24 @@ <td> <example inline="3"> { - "_id" : "n306036143", - "tags" : { -* "amenity" : "cafe",* - "cuisine" : "italian", - "name" : "Saponara" - } -}, + "_id" : ObjectId("5400a24f44670a01098b47b2"), + "beer_name" : "Floris Framboise", + "brewery_name" : "Brouwerij Huyghe" +} { - "_id" : "n306042529", - "tags" : { -* "amenity" : "restaurant",* - "cuisine" : "asian", - "layer" : "2", - "name" : "Wagamama" - } -}, + "_id" : ObjectId("5400a24f44670a01098b47b3"), + "beer_name" : "Arabier", + "brewery_name" : "Brouwerij De Dolle Brouwers" +} { - "_id" : "n306042546", - "tags" : { -* "amenity" : "restaurant",* - "cuisine" : "sushi", - "layer" : "2", - "name" : "Yo! Sushi" - } + "_id" : ObjectId("5400a24f44670a01098b47b4"), + "beer_name" : "La Trappe Dubbel", + "brewery_name" : "Bierbrouwerij De Koningshoeven" +} +{ + "_id" : ObjectId("5400a24f44670a01098b47b6"), + "beer_name" : "Marks & Spencer Belgian Winter Beer", + "brewery_name" : "Brouwerij Huyghe" } </example> </td> @@ -39,18 +33,22 @@ <td> <example inline="3"> { $group: { -* _id: '$tags.amenity',* +* _id: '$brewery_name',* count: { *'$sum': 1* } } } </example> <example inline="3"> { - "_id" : "restaurant", + "_id" : "Brouwerij Huyghe", "count" : 2 }, { - "_id" : "cafe", + "_id" : "Brouwerij De Dolle Brouwers", + "count" : 1 +}, +{ + "_id" : "Bierbrouwerij De Koningshoeven", "count" : 1 }, </example> diff --git a/slides/mongodb/aggr-op-limit-example.xml b/slides/mongodb/aggr-op-limit-example.xml index 67c2302..2fc9b6e 100644 --- a/slides/mongodb/aggr-op-limit-example.xml +++ b/slides/mongodb/aggr-op-limit-example.xml @@ -5,15 +5,13 @@ <tr> <td> <example inline="3"> -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Yard" }, -{ "name" : "Le Sacré Coeur" }, -{ "name" : "Ask" }, -{ "name" : "Vigata" }, -{ "name" : "Sedir" }, -{ "name" : "Parveen" }, -{ "name" : "Mem & Laz" }, -{ "name" : "Gallipoli" } +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Rallar Amber Ale" } +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Brixton Porter" } </example> </td> <td> @@ -25,11 +23,11 @@ </example> <example inline="3"> -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Yard" }, -{ "name" : "Le Sacré Coeur" }, -{ "name" : "Ask" }, -{ "name" : "Vigata" }, +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Rallar Amber Ale" } +{ "beer_name" : "Beer Geek Breakfast" } </example> </td></tr></table> </slide> diff --git a/slides/mongodb/aggr-op-match-example.xml b/slides/mongodb/aggr-op-match-example.xml index fde5db4..2a6c3e1 100644 --- a/slides/mongodb/aggr-op-match-example.xml +++ b/slides/mongodb/aggr-op-match-example.xml @@ -6,28 +6,19 @@ <td> <example inline="3"> { - "_id" : "w42931536", - "tags" : { - "amenity" : "restaurant", -* "cuisine" : "french",* - "name" : "Le Comptoir Gascon", - } + "beer_name" : "Gentleman's Wit", + "brewery_name" : "Camden Town Brewery", + "beer_type" : "Witbier" } { - "_id" : "w50732182", - "tags" : { - "amenity" : "restaurant", -* "cuisine" : "burger",* - "name" : "Starving Marvin's", - } + "beer_name" : "Old Rascal", + "brewery_name" : "Thatchers", + *"beer_type" : "Cider"* } { - "_id" : "w58537927", - "tags" : { - "amenity" : "restaurant", -* "cuisine" : "chinese",* - "name" : "Royal Garden Restaurant" - } + "beer_name" : "Byron Lager", + *"brewery_name" : "Camden Town Brewery", + "beer_type" : "Euro Lager" } </example> </td> @@ -38,19 +29,16 @@ <example inline="3"> { * $match: {* -* "tags.cuisine": "chinese"* +* "beer_type": "Cider"* * }* } </example> <example inline="3"> { - "_id" : "w58537927", - "tags" : { - "building" : "yes", -* "cuisine" : "chinese",* - "name" : "Royal Garden Restaurant" - } + "beer_name" : "Old Rascal", + "brewery_name" : "Thatchers", + *"beer_type" : "Cider"* } </example> </td></tr></table> diff --git a/slides/mongodb/aggr-op-match-with-query-example.xml b/slides/mongodb/aggr-op-match-with-query-example.xml index 8d45523..cf6f6a3 100644 --- a/slides/mongodb/aggr-op-match-with-query-example.xml +++ b/slides/mongodb/aggr-op-match-with-query-example.xml @@ -6,30 +6,19 @@ <td> <example inline="3"> { - "_id" : "n1240135999", - "tags" : { - "amenity" : "restaurant", - "cuisine" : "thai", - "name" : "Addie's Thai" - } + "beer_name" : "Premium Organic Cider", + "brewery_name" : "Dunkertons", + *"beer_abv" : 6.8* } { - "_id" : "n1242469688", - "tags" : { -* "addr:postcode" : "CR6 9EG",* - "addr:street" : "Farleigh Road", - "amenity" : "restaurant", - "cuisine" : "regional", - "name" : "The Horseshoe" - } + "beer_name" : "Belgian White", + "brewery_name" : "Blue Moon Brewing Company", + "beer_abv" : 5.4 } { - "_id" : "n1242549289", - "tags" : { - "amenity" : "restaurant", - "cuisine" : "ethiopian", - "name" : "Queen of Sheba" - } + "beer_name" : "Premium Cloudy Cider", + "brewery_name" : "Addlestones (C&C Group plc)", + "beer_abv" : 5.2 } </example> </td> @@ -39,20 +28,15 @@ <td> <example inline="3"> { $match: { -* "tags.addr:postcode": { $exists: true }* +* "beer_abv": { $gte: 6 }* } } </example> <example inline="3"> { - "_id" : "n1242469688", - "tags" : { -* "addr:postcode" : "CR6 9EG",* - "addr:street" : "Farleigh Road", - "amenity" : "restaurant", - "cuisine" : "regional", - "name" : "The Horseshoe" - } + "beer_name" : "Premium Organic Cider", + "brewery_name" : "Dunkertons", + *"beer_abv" : 6.8* } </example> </td></tr></table> diff --git a/slides/mongodb/aggr-op-project-create-sub-example.xml b/slides/mongodb/aggr-op-project-create-sub-example.xml index f5a157b..57eed76 100644 --- a/slides/mongodb/aggr-op-project-create-sub-example.xml +++ b/slides/mongodb/aggr-op-project-create-sub-example.xml @@ -6,21 +6,12 @@ <td> <example inline="3"> { - "_id" : "n691721239", - "type" : NumberLong(1), - "loc" : [ - -0.135621, - 51.515325 - ], - "tags" : { - "addr:city" : "London", - "addr:country" : "GB", - "addr:housenumber" : "187b", - "addr:street" : "Wardour Street", - "amenity" : "restaurant", - "cuisine" : "korean", - "name" : "Red Devil" - } + "beer_name" : "Crazy Goat", + "brewery_name" : "Lilleys Cider Barn", + "beer_type" : "Cider", + "beer_abv" : 6.8, + "beer_ibu" : 0, + "brewery_country" : "England" } </example> </td> @@ -30,27 +21,22 @@ <td> <example inline="3"> { $project: { - *name: '$tags.name',* - cuisine: '$tags.cuisine', -* address: {* -* nr: '$tags.addr:housenumber',* -* street: '$tags.addr:street',* -* city: '$tags.addr:city'* + *name: '$beer_name',* +* brewery: {* +* name: '$brewery_name',* +* country: '$brewery_country',* * }* } } </example> <example inline="3"> - { - "_id" : "n691721239", - *"name" : "Red Devil",* - "cuisine" : "korean", -* "address" : {* -* "nr" : "187b",* -* "street" : "Wardour Street",* -* "city" : "London"* -* }* +{ + "name": "Crazy Goat", + "brewery": { + "name": "Lilleys Cider Barn", + "country": "England", } +} </example> </td></tr></table> </slide> diff --git a/slides/mongodb/aggr-op-project-incl-excl-example.xml b/slides/mongodb/aggr-op-project-incl-excl-example.xml index 4fb3716..7138c7b 100644 --- a/slides/mongodb/aggr-op-project-incl-excl-example.xml +++ b/slides/mongodb/aggr-op-project-incl-excl-example.xml @@ -6,18 +6,15 @@ <td> <example inline="3"> { -* "_id" : "n47733711",* - "type" : NumberLong(1), - "loc" : [ - 0.2344868, - 51.5938555 - ], -* "tags" : {* -* "amenity" : "fast_food",* -* "cuisine" : "fish_and_chips",* -* "name" : "The Frying Pan"* -* }* -}, + "_id" : ObjectId("5400a24f44670a01098b4657"), + "beer_name" : "Honey's Midford Cider", + *"brewery_name" : "Honey And Daughters",* + *"beer_type" : "Cider",* + "beer_abv" : 6.5, + "beer_ibu" : 0, + "rating_score" : 4, + "brewery_country" : "England" +} </example> </td> <td> @@ -26,18 +23,19 @@ <td> <example inline="3"> { -* $project: { _id: 0, tags: 1 }* + *$project: {* + *_id: 0,* + *beer_name: 1,* + *brewery_name: 1* + *}* } </example> <example inline="3"> { -* "tags" : {* -* "amenity" : "fast_food",* -* "cuisine" : "fish_and_chips",* -* "name" : "The Frying Pan"* -* }* -}, + "beer_name" : "Honey's Midford Cider", + "brewery_name" : "Honey And Daughters", +} </example> </td></tr></table> </slide> diff --git a/slides/mongodb/aggr-op-project-rename-compute-example.xml b/slides/mongodb/aggr-op-project-rename-compute-example.xml index 6c4292d..2473429 100644 --- a/slides/mongodb/aggr-op-project-rename-compute-example.xml +++ b/slides/mongodb/aggr-op-project-rename-compute-example.xml @@ -6,20 +6,13 @@ <td> <example inline="3"> { - "_id" : "n375475617", - "type" : NumberLong(1), - "loc" : [ - -0.1502324, - 51.4440935 - ], -* "tags"* : { - "addr:housenumber" : "37", - "addr:street" : "Bedford Hill", - "amenity" : "restaurant", - "cuisine" : "greek", - "name" : "Meze Kitchen" - } -}, + "beer_name" : "Crazy Goat", + "brewery_name" : "Lilleys Cider Barn", + "beer_type" : "Cider", + "beer_abv" : 6.8, + "beer_ibu" : 0, + "brewery_country" : "England" +} </example> </td> <td> @@ -28,26 +21,21 @@ <td> <example inline="3"> { $project: { - address: { *$concat: [* -* '$tags.addr:housenumber',* -* ' ',* -* '$tags.addr:street'* + beer: { *$concat: [* +* '$beer_name',* +* ' (',* +* '$beer_type'* +* ')',* * ]* }, - 'desc': *'$tags'* + 'country': *'$brewery_country'* } } </example> <example inline="3"> { - "_id" : "n375475617", -* "address" : "37 Bedford Hill",* -* "desc"* : { - "addr:housenumber" : "37", - "addr:street" : "Bedford Hill", - "amenity" : "restaurant", - "cuisine" : "greek", - "name" : "Meze Kitchen" - } + "_id" : ObjectId("5400a24f44670a01098b4657"), + "beer" : "Grazy Goat (Cider)", + "country" : "England" }, </example> </td></tr></table> diff --git a/slides/mongodb/aggr-op-skip-example.xml b/slides/mongodb/aggr-op-skip-example.xml index ff31e1b..ec882e0 100644 --- a/slides/mongodb/aggr-op-skip-example.xml +++ b/slides/mongodb/aggr-op-skip-example.xml @@ -5,15 +5,13 @@ <tr> <td> <example inline="3"> -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Yard" }, -{ "name" : "Le Sacré Coeur" }, -{ "name" : "Ask" }, -{ "name" : "Vigata" }, -{ "name" : "Sedir" }, -{ "name" : "Parveen" }, -{ "name" : "Mem & Laz" }, -{ "name" : "Gallipoli" } +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Rallar Amber Ale" } +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Brixton Porter" } </example> </td> <td> @@ -21,16 +19,15 @@ </td> <td> <example inline="3"> -*{ $skip : 3 }* +*{ $skip : 2 }* </example> <example inline="3"> -{ "name" : "Ask" }, -{ "name" : "Vigata" }, -{ "name" : "Sedir" }, -{ "name" : "Parveen" }, -{ "name" : "Mem & Laz" }, -{ "name" : "Gallipoli" } +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Rallar Amber Ale" } +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Brixton Porter" } </example> </td></tr></table> </slide> diff --git a/slides/mongodb/aggr-op-sort-example.xml b/slides/mongodb/aggr-op-sort-example.xml index 9de7dce..8fc9f13 100644 --- a/slides/mongodb/aggr-op-sort-example.xml +++ b/slides/mongodb/aggr-op-sort-example.xml @@ -5,15 +5,13 @@ <tr> <td> <example inline="3"> -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Yard" }, -{ "name" : "Le Sacré Coeur" }, -{ "name" : "Ask" }, -{ "name" : "Vigata" }, -{ "name" : "Sedir" }, -{ "name" : "Parveen" }, -{ "name" : "Mem & Laz" }, -{ "name" : "Gallipoli" } +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Rallar Amber Ale" } +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Brixton Porter" } </example> </td> <td> @@ -22,20 +20,18 @@ <td> <example inline="3"> { $sort: { -* name: 1* +* beer_name: 1* } } </example> <example inline="3"> -{ "name" : "Ask" }, -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Gallipoli" } -{ "name" : "Le Sacré Coeur" }, -{ "name" : "Mem & Laz" }, -{ "name" : "Parveen" }, -{ "name" : "Sedir" }, -{ "name" : "Vigata" }, -{ "name" : "Yard" }, +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Brixton Porter" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +{ "beer_name" : "Rallar Amber Ale" } </example> </td></tr></table> </slide> diff --git a/slides/mongodb/aggr-op-sort-limit-skip-example.xml b/slides/mongodb/aggr-op-sort-limit-skip-example.xml index da89de1..1ed329f 100644 --- a/slides/mongodb/aggr-op-sort-limit-skip-example.xml +++ b/slides/mongodb/aggr-op-sort-limit-skip-example.xml @@ -5,15 +5,13 @@ <tr> <td> <example inline="3"> -*{ "name" : "Blues Restaurant & Bar" },* -*{ "name" : "Yard" },* -*{ "name" : "Le Sacré Coeur" },* -*{ "name" : "Ask" },* -{ "name" : "Vigata" }, -{ "name" : "Sedir" }, -{ "name" : "Parveen" }, -{ "name" : "Mem & Laz" }, -{ "name" : "Gallipoli" } +*{ "beer_name" : "Old Engine Oil" }* +*{ "beer_name" : "Pilsner" }* +*{ "beer_name" : "Du Monde Blanc" }* +*{ "beer_name" : "Rallar Amber Ale" }* +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Brixton Porter" } </example> </td> <td> @@ -23,15 +21,15 @@ <example inline="3"> [ * { $limit : 4 },* -* { $sort : { name: 1 } }* +* { $sort : { beer_name: 1 } }* ] </example> <example inline="3"> -{ "name" : "Ask" }, -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Le Sacré Coeur" }, -{ "name" : "Yard" }, +{ "beer_name" : "Du Monde Blanc" } +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +{ "beer_name" : "Rallar Amber Ale" } </example> </td></tr></table> <break /> @@ -40,15 +38,13 @@ <tr> <td> <example inline="3"> -*{ "name" : "Blues Restaurant & Bar" },* -{ "name" : "Yard" }, -*{ "name" : "Le Sacré Coeur" },* -*{ "name" : "Ask" },* -{ "name" : "Vigata" }, -{ "name" : "Sedir" }, -{ "name" : "Parveen" }, -{ "name" : "Mem & Laz" }, -*{ "name" : "Gallipoli" }* +{ "beer_name" : "Old Engine Oil" } +{ "beer_name" : "Pilsner" } +*{ "beer_name" : "Du Monde Blanc" }* +{ "beer_name" : "Rallar Amber Ale" } +*{ "beer_name" : "Beer Geek Breakfast" }* +*{ "beer_name" : "Dirty Bastard" }* +*{ "beer_name" : "Brixton Porter" }* </example> </td> <td> @@ -57,16 +53,16 @@ <td> <example inline="3"> [ -* { $sort : { name: 1 } },* +* { $sort : { beer_name: 1 } },* * { $limit : 4 }* ] </example> <example inline="3"> -{ "name" : "Ask" }, -{ "name" : "Blues Restaurant & Bar" }, -{ "name" : "Gallipoli" } -{ "name" : "Le Sacré Coeur" }, +{ "beer_name" : "Beer Geek Breakfast" } +{ "beer_name" : "Brixton Porter" } +{ "beer_name" : "Dirty Bastard" } +{ "beer_name" : "Du Monde Blanc" } </example> </td></tr></table> diff --git a/slides/mongodb/aggr-op-unwind-example.xml b/slides/mongodb/aggr-op-unwind-example.xml index 708558e..33a6a3a 100644 --- a/slides/mongodb/aggr-op-unwind-example.xml +++ b/slides/mongodb/aggr-op-unwind-example.xml @@ -6,18 +6,21 @@ <td> <example inline="3"> { - "_id" : "n476033502", - "type" : NumberLong(1), -* "tags" : [* -* "addr:housenumber=125",* -* "addr:street=Alban Gate",* -* "amenity=restaurant",* -* "cuisine=pizza",* -* "level=1",* -* "name=Pizza Express",* -* "phone=020 7600 8880",* -* "postcode=EC2Y 5AS"* -* ]* + "_id" : "Denmark", + "beers" : [ + "Mochaccino Messiah", + "Texas Ranger", + "Tipsy Gypsy", + "Carlsberg", + "Black Ball", + "Final Frontier DIPA", + "Imperial Stout", + "Svaneke Choko Stout", + "Henrik Kaffesort", + "Hibernate", + "Pop Loves", + "Beer Geek Breakfast" + ] } </example> </td> @@ -27,32 +30,23 @@ <td> <example inline="3"> { -* $unwind: '$tags'* +* $unwind: '$beers'* } </example> <example inline="3"> -{ - "_id" : "n476033502", - "type" : NumberLong(1), -* "tags" : "addr:housenumber=125"* -}, -{ - "_id" : "n476033502", - "type" : NumberLong(1), -* "tags" : "addr:street=Alban Gate"* -}, -{ - "_id" : "n476033502", - "type" : NumberLong(1), -* "tags" : "amenity=restaurant"* -}, -{ - "_id" : "n476033502", - "type" : NumberLong(1), -* "tags" : "cuisine=pizza"* -}, -… +{ "_id" : "Denmark", "beers" : "Mochaccino Messiah" } +{ "_id" : "Denmark", "beers" : "Texas Ranger" } +{ "_id" : "Denmark", "beers" : "Tipsy Gypsy" } +{ "_id" : "Denmark", "beers" : "Carlsberg" } +{ "_id" : "Denmark", "beers" : "Black Ball" } +{ "_id" : "Denmark", "beers" : "Final Frontier DIPA" } +{ "_id" : "Denmark", "beers" : "Imperial Stout" } +{ "_id" : "Denmark", "beers" : "Svaneke Choko Stout" } +{ "_id" : "Denmark", "beers" : "Henrik Kaffesort" } +{ "_id" : "Denmark", "beers" : "Hibernate" } +{ "_id" : "Denmark", "beers" : "Pop Loves" } +{ "_id" : "Denmark", "beers" : "Beer Geek Breakfast" } </example> </td></tr></table> </slide> diff --git a/slides/mongodb/aggr-our-example-data.xml b/slides/mongodb/aggr-our-example-data.xml index 57fce13..cea432e 100644 --- a/slides/mongodb/aggr-our-example-data.xml +++ b/slides/mongodb/aggr-our-example-data.xml @@ -3,15 +3,24 @@ <example> { - "_id" : "w94069675", - "tags" : { - "addr:housenumber" : "64", - "addr:street" : "Borough High Street", - "amenity" : "restaurant", - "building" : "yes", - "cuisine" : "indian", - "name" : "Truly Indian" - }, + "_id" : ObjectId("5400a24f44670a01098b491d"), + "beer_name" : "Aurora Australis", + "brewery_name" : "Bridge Road Brewers", + "beer_type" : "Belgian Quad", + "beer_abv" : 11, + "beer_ibu" : 30, + "comment" : "Red wine flavours. Brewed in Australia but packaged in Norway.", + "venue_name" : "Olympen", + "venue_city" : "Oslo", + "venue_state" : "Oslo", + "venue_lat" : 59.9121, + "venue_lng" : 10.7643, + "rating_score" : 4.5, + "created_at" : ISODate("2014-07-06T20:38:17Z"), + "checkin_url" : "https://untappd.com/c/97860912", + "beer_url" : "https://untappd.com/beer/300283", + "brewery_url" : "https://untappd.com/brewery/3174", + "brewery_country" : "Australia" } </example> </slide> diff --git a/slides/mongodb/aggregation-example-cuisine6-sort.xml b/slides/mongodb/aggregation-example-cuisine6-sort.xml index a6be84c..08a4673 100644 --- a/slides/mongodb/aggregation-example-cuisine6-sort.xml +++ b/slides/mongodb/aggregation-example-cuisine6-sort.xml @@ -1,19 +1,22 @@ <slide> <title>Aggregation example</title> -<example result="3"><![CDATA[<?php +<blurb>Find 10 venues with the most distinct beers</blurb> +<example result="1"><![CDATA[<?php $m = new MongoClient(); -$res = $m->demo->poiConcat->aggregate( [ - [ '$match' => [ 'ts' => new MongoRegex( '/^cuisine=/' ) ] ], - [ '$unwind' => '$ts' ], - [ '$match' => [ 'ts' => new MongoRegex( '/^cuisine=/' ) ] ], - [ '$group' => [ '_id' => '$ts', 'count' => [ '$sum' => 1 ] ] ], - /* and at last we sort by count */ +$res = $m->tutorial->beer->aggregate( [ + [ '$match' => [ 'venue_name' => [ '$ne' => null ] ] ], + [ '$group' => [ '_id' => [ 'venue' => '$venue_name', 'beer' => '$beer_name' ] ] ], + [ '$group' => [ '_id' => '$_id.venue', count => [ '$sum' => 1 ] ] ], [ '$sort' => [ 'count' => -1 ] ], + [ '$limit' => 10 ], ] ); -var_dump( $res['result'] ); +foreach ( $res['result'] as $result ) +{ + echo $result['_id'], ': ', $result['count'], "\n"; +} ?>]]> </example> </slide> diff --git a/slides/mongodb/commands.xml b/slides/mongodb/commands.xml index db43ef0..dbf91d0 100644 --- a/slides/mongodb/commands.xml +++ b/slides/mongodb/commands.xml @@ -3,8 +3,8 @@ <list> <bullet>Are run on the database</bullet> - <bullet>Do not (yet) return a cursor</bullet> - <bullet>Return one document</bullet> - <bullet>Some commands have helpers in the drivers and shell</bullet> + <bullet>Some (aggregation) return a cursor</bullet> + <bullet>Others return one document</bullet> + <bullet>Some commands have helpers in the drivers and shell, most don't</bullet> </list> </slide> diff --git a/slides/mongodb/excercise-finding-data.xml b/slides/mongodb/excercise-finding-data.xml new file mode 100644 index 0000000..0e031b4 --- /dev/null +++ b/slides/mongodb/excercise-finding-data.xml @@ -0,0 +1,12 @@ +<slide> +<title>Excercise: querying</title> + +<div>Write a script that:</div> + +<list> + <bullet>Outputs the *date* date of the first "check-in" for *USA Hells*</bullet> + <bullet>List all *beer names* (with rating and date), where the beer has a + rating of *4.5 or higher*, ordered first by rating (highest first), and second by + date (earliest first).</bullet> +</list> +</slide> diff --git a/slides/mongodb/excercise-import-untappd.xml b/slides/mongodb/excercise-import-untappd.xml new file mode 100644 index 0000000..4e973b8 --- /dev/null +++ b/slides/mongodb/excercise-import-untappd.xml @@ -0,0 +1,16 @@ +<slide> +<title>Excercise: Import Beer</title> + +<list> + <bullet>%git clone https://github.com/derickr/mongo-tutorial.git%</bullet> + <bullet>We will use beer ratings and types for examples</bullet> + <bullet>%untappd.json% has one JSON document per line</bullet> + <bullet>Write a script to import each beer into the *tutorial* database and the *beer* collection</bullet> + <bullet>Verify the result on the mongo shell: +<example> +mongo tutorial +db.beer.count(); +</example> + </bullet> +</list> +</slide> diff --git a/slides/mongodb/excercise-import-with-types.xml b/slides/mongodb/excercise-import-with-types.xml new file mode 100644 index 0000000..c339e47 --- /dev/null +++ b/slides/mongodb/excercise-import-with-types.xml @@ -0,0 +1,11 @@ +<slide> +<title>Excercise: import with types</title> + +<div>Update the import script to use types</div> + +<list> + <bullet>Import %beer_abv%, %beer_ibu%, %venue_lat%, %venue_lng% and %rating_score% as float.</bullet> + <bullet>Import %created_at% as %MongoDate% object</bullet> + <bullet>Fix the finding script</bullet> +</list> +</slide> diff --git a/slides/mongodb/excercise02-distillers-example.xml b/slides/mongodb/excercise02-distillers-example.xml index daafea6..b37aae3 100644 --- a/slides/mongodb/excercise02-distillers-example.xml +++ b/slides/mongodb/excercise02-distillers-example.xml @@ -4,7 +4,7 @@ <div effect="fade-out"> <blurb>Collection: distillery</blurb> <example><![CDATA[{ - name: "Glenfiddch", + name: "Glenfiddich", country: "Scotland", region: "Speyside", opening_year: 1887, @@ -12,7 +12,7 @@ }]]></example> <blurb>Collection: whisky</blurb> <example><![CDATA[{ - name: "Glenfiddch 15", + name: "Glenfiddich 15", age: 15, strength: 50.3 }]]></example> @@ -21,14 +21,14 @@ <div effect="fade-in"> <blurb>Collection: distillery</blurb> <example><![CDATA[{ - name: "Glenfiddch", + name: "Glenfiddich", country: "Scotland", region: "Speyside", opening_year: 1887 }]]></example> <blurb>Collection: whisky</blurb> <example><![CDATA[{ - name: "Glenfiddch 15", + name: "Glenfiddich 15", age: 15, strength: 50.3, distillery: "Glenfiddich" diff --git a/slides/mongodb/excercise03-reviews-example.xml b/slides/mongodb/excercise03-reviews-example.xml index 22ae959..ab03899 100644 --- a/slides/mongodb/excercise03-reviews-example.xml +++ b/slides/mongodb/excercise03-reviews-example.xml @@ -4,7 +4,7 @@ <div effect="fade-out"> <blurb>Collection: whisky</blurb> <example><![CDATA[{ - name: "Glenfiddch 15", + name: "Glenfiddich 15", age: 15, strength: 50.3, }]]></example> diff --git a/slides/mongodb/excercise04-reviews-aggr.xml b/slides/mongodb/excercise04-reviews-aggr.xml index 353a054..e7cbfda 100644 --- a/slides/mongodb/excercise04-reviews-aggr.xml +++ b/slides/mongodb/excercise04-reviews-aggr.xml @@ -1,35 +1,12 @@ <slide> <title>Excercise: Aggregation</title> -<blurb>http://pastebin.com/rzYUULs2</blurb> +<blurb>Write a script that uses the Aggregation Framework to:</blurb> -<div effect="fade-out"> -<example><![CDATA[{ - name: "Glenfiddich 15", - notes: [ - { - user_name: "Derick", likes: 17, rating: 3.5, - note: "Caramel and honey, fruity with some hints of earth", - }, - { - user_name: "Michael", likes: 9, rating: 3, - note: "Fruity and oaky", - } - ] -}, -{ - name: "Lagavullin 16", - notes: [ - { - user_name: "Michael", likes: 7, rating: 4.5, - note: "Earty and full of nice peat smoke", - }, - ] -}]]></example> -</div> - -<div effect="fade-in"> -<blurb>Write a script that uses the Aggregation Framework to list all review for a user -sorted on rating</blurb> -</div> +<list> + <bullet>List the average %rating_score% per %beer_type%</bullet> + <bullet>Only include types if there are more than 5 ratings</bullet> + <bullet>Sort by highest rated type</bullet> + <bullet>Show only the top 8</bullet> +</list> </slide> diff --git a/slides/mongodb/half-tutorial-topics.xml b/slides/mongodb/half-tutorial-topics.xml index 3630d13..bae624d 100644 --- a/slides/mongodb/half-tutorial-topics.xml +++ b/slides/mongodb/half-tutorial-topics.xml @@ -5,7 +5,7 @@ <bullet>Introduction into MongoDB with PHP</bullet> <bullet>Schema Design</bullet> <bullet>Indexes</bullet> - <bullet>Practical Example of Schema Design and Indexes</bullet> + <bullet>Introduction to Replication</bullet> <bullet>Questions and Answers</bullet> </list> </slide> diff --git a/slides/mongodb/types-php.xml b/slides/mongodb/types-php.xml new file mode 100644 index 0000000..b47169e --- /dev/null +++ b/slides/mongodb/types-php.xml @@ -0,0 +1,10 @@ +<slide> +<title>MongoDB types and PHP</title> + +<list> + <bullet>Unlike PHP, MongoDB does not type juggle</bullet> + <bullet>There is a date type, but it's UTC only (MongoDate)</bullet> + <bullet>When reading, everything will be an (associative) array, but never + an object</bullet> +</list> +</slide> diff --git a/slides/mongodb/types.xml b/slides/mongodb/types.xml index 6279a63..ae3c312 100644 --- a/slides/mongodb/types.xml +++ b/slides/mongodb/types.xml @@ -1,5 +1,5 @@ <slide> -<title>mongoDB supports many types</title> +<title>MongoDB supports many types</title> <list> <bullet>null</bullet> diff --git a/slides/time/intervals.xml b/slides/time/intervals.xml index 3711820..a57b1a4 100644 --- a/slides/time/intervals.xml +++ b/slides/time/intervals.xml @@ -12,7 +12,7 @@ $i = new DateInterval( 'P3DT6H' ); // from a difference $d1 = new DateTimeImmutable(); -$d2 = new DateTimeImmutable( "2013-08-13 19:30 Europe/London" ); +$d2 = new DateTimeImmutable( "2014-06-20 11:45 Europe/London" ); $i = $d1->diff( $d2 ); // displaying the difference diff --git a/sql2nosql-ipc14s.xml b/sql2nosql-ipc14s.xml new file mode 100644 index 0000000..2ad79de --- /dev/null +++ b/sql2nosql-ipc14s.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="10gen-strict.css"> +<topic>mongoDB</topic> +<title>From SQL to NoSQL</title> +<event>IPC Spring</event> +<location>Berlin, Germany</location> +<date>Jun 2nd, 2014</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>http://derickrethans.nl/talks.html</url> +<joindin></joindin> +<slide>slides/mongodb/title.xml</slide> + +<!-- DINOSAUR vs PLATIPUS --> +<slide>slides/mongodb/relational-model.xml</slide> +<slide>slides/mongodb/dinosaur.xml</slide> +<slide>slides/mongodb/normal-form.xml</slide> +<slide>slides/mongodb/normal-form1.xml</slide> +<slide>slides/mongodb/normal-form2.xml</slide> +<slide>slides/mongodb/normal-form3.xml</slide> + +<!-- DIFFERENT NoSQL --> +<slide>slides/mongodb/nosql.xml</slide> +<slide>slides/mongodb/nosql-kv.xml</slide> +<slide>slides/mongodb/nosql-column.xml</slide> +<slide>slides/mongodb/nosql-graph.xml</slide> +<slide>slides/mongodb/nosql-document.xml</slide> +<slide>slides/mongodb/platipus.xml</slide> + +<!-- ACID vs CAP --> +<slide>slides/mongodb/acid.xml</slide> +<slide>slides/mongodb/cap.xml</slide> + +<!-- A FEW NOTES ON MONGODB --> +<slide>slides/mongodb/databasefield.xml</slide> +<slide>slides/mongodb/collections-documents.xml</slide> +<slide>slides/mongodb/document.xml</slide> +<slide>slides/mongodb/mongodb-1nf.xml</slide> +<slide>slides/mongodb/mongodb-3nf.xml</slide> +<slide>slides/mongodb/insert-intro.xml</slide> +<slide>slides/mongodb/query-side-by-side.xml</slide> +<slide>slides/mongodb/update-intro.xml</slide> +<slide>slides/mongodb/update-atomicity.xml</slide> +<slide>slides/mongodb/update-consistency.xml</slide> + +<slide>slides/mongodb/arbitrary-keys1.xml</slide> +<slide>slides/mongodb/one-to-many2.xml</slide> +<slide>slides/mongodb/one-to-many4.xml</slide> + +<!-- REPLICATION --> +<slide>slides/mongodb/availability.xml</slide> +<slide>slides/mongodb/repl-features.xml</slide> +<slide>slides/mongodb/repl-works-normal.xml</slide> + +<slide>slides/mongodb/repl-eventual-consistency.xml</slide> + +<slide>slides/mongodb/sql2nosql-conclusion.xml</slide> +<slide>slides/mongodb/resources.xml</slide> + +</presentation> diff --git a/sql2nosql-phptek14.xml b/sql2nosql-phptek14.xml new file mode 100644 index 0000000..d1e62c9 --- /dev/null +++ b/sql2nosql-phptek14.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="10gen-strict.css"> +<topic>mongoDB</topic> +<title>From SQL to NoSQL</title> +<event>php[tek] 2014</event> +<location>Rosemont, IL, US</location> +<date>May 22nd, 2014</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<twitter>derickr</twitter> +<url>http://derickrethans.nl/talks.html</url> +<joindin>https://joind.in/10640</joindin> +<slide>slides/mongodb/title.xml</slide> + +<!-- DINOSAUR vs PLATIPUS --> +<slide>slides/mongodb/relational-model.xml</slide> +<slide>slides/mongodb/dinosaur.xml</slide> +<slide>slides/mongodb/normal-form.xml</slide> +<slide>slides/mongodb/normal-form1.xml</slide> +<slide>slides/mongodb/normal-form2.xml</slide> +<slide>slides/mongodb/normal-form3.xml</slide> + +<!-- DIFFERENT NoSQL --> +<slide>slides/mongodb/nosql.xml</slide> +<slide>slides/mongodb/nosql-kv.xml</slide> +<slide>slides/mongodb/nosql-column.xml</slide> +<slide>slides/mongodb/nosql-graph.xml</slide> +<slide>slides/mongodb/nosql-document.xml</slide> +<slide>slides/mongodb/platipus.xml</slide> + +<!-- ACID vs CAP --> +<slide>slides/mongodb/acid.xml</slide> +<slide>slides/mongodb/cap.xml</slide> + +<!-- A FEW NOTES ON MONGODB --> +<slide>slides/mongodb/databasefield.xml</slide> +<slide>slides/mongodb/collections-documents.xml</slide> +<slide>slides/mongodb/document.xml</slide> +<slide>slides/mongodb/mongodb-1nf.xml</slide> +<slide>slides/mongodb/mongodb-3nf.xml</slide> +<slide>slides/mongodb/insert-intro.xml</slide> +<slide>slides/mongodb/query-side-by-side.xml</slide> +<slide>slides/mongodb/update-intro.xml</slide> +<slide>slides/mongodb/update-atomicity.xml</slide> +<slide>slides/mongodb/update-consistency.xml</slide> + +<slide>slides/mongodb/arbitrary-keys1.xml</slide> +<slide>slides/mongodb/one-to-many2.xml</slide> +<slide>slides/mongodb/one-to-many4.xml</slide> + +<!-- REPLICATION --> +<slide>slides/mongodb/availability.xml</slide> +<slide>slides/mongodb/repl-features.xml</slide> +<slide>slides/mongodb/repl-works-normal.xml</slide> + +<slide>slides/mongodb/repl-eventual-consistency.xml</slide> + +<slide>slides/mongodb/sql2nosql-conclusion.xml</slide> +<slide>slides/mongodb/resources.xml</slide> + +</presentation> diff --git a/time-phptek14.xml b/time-phptek14.xml new file mode 100644 index 0000000..c1ce13a --- /dev/null +++ b/time-phptek14.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<presentation css="10gen-strict.css"> +<topic>Localization and Internationalization</topic> +<title>Advanced Date/Time Handling</title> +<event>php[tek] 2014</event> +<location>Rosemont, IL, USA</location> +<date>May 21st, 2014</date> +<speaker>Derick Rethans</speaker> +<email>[email protected]</email> +<url>http://derickrethans.nl/talks.html</url> +<joindin>http://joind.in/10617</joindin> +<twitter>derickr</twitter> + +<slide>slides/mongodb/title.xml</slide> +<slide>slides/mongodb/me.xml</slide> + +<!-- INTRODUCTION --> +<slide>slides/time/problems-condensed.xml</slide> + +<!-- PHP - IMPROVEMENTS --> +<slide>slides/time/improvements-timezones.xml</slide> +<slide>slides/time/improvements-more-on-timezones.xml</slide> +<slide>slides/time/default-timezone.xml</slide> +<slide>slides/time/timestamps-suck.xml</slide> + +<!-- PHP - CODE EXAMPLES --> +<slide>slides/time/basic-parse-time-new.xml</slide> +<slide>slides/time/date-parse2.xml</slide> +<slide>slides/time/date-parse-from-format3.xml</slide> +<slide>slides/time/date-parse-from-format2.xml</slide> + +<!-- DATE EXAMPLES --> +<slide>slides/time/date-modify.xml</slide> +<slide>slides/time/date-modify-immutable1.xml</slide> +<slide>slides/time/date-modify-immutable2.xml</slide> +<slide>slides/time/timezone-object-1.xml</slide> +<slide>slides/time/date-timezone.xml</slide> +<slide>slides/time/timezone-utilities-3.xml</slide> + +<!-- INTERVALS and PERIODS --> +<slide>slides/time/intervals.xml</slide> +<slide>slides/time/intervals-2.xml</slide> +<slide>slides/time/relative-month.xml</slide> +<slide>slides/time/relative-month3.xml</slide> +<slide>slides/time/period-2.xml</slide> + +<!-- STORING in DATABASE --> +<slide>slides/time/in-database1.xml</slide> +<slide>slides/time/in-database2.xml</slide> +<slide>slides/time/in-database3.xml</slide> +<slide>slides/time/in-database4.xml</slide> + +<!-- EXIT --> +<slide>slides/time/book.xml</slide> <!-- resources --> +<slide>slides/mongodb/resources.xml</slide> <!-- resources --> +</presentation>