Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Five Years of Beta

Five Years of Beta

Presented July 23, 2016 at Symfony Catalunya: https://joind.in/talk/081df

Jeremy Mikola

July 23, 2016
Tweet

More Decks by Jeremy Mikola

Other Decks in Programming

Transcript

  1. • Object Relational Mapper (ORM) • Database Abstraction Layer (DBAL)

    • Object Document Mappers (ODMs) ◦ MongoDB ◦ PHPCR ◦ CouchDB ◦ OrientDB • MongoDB Abstraction Layer • Common ◦ Annotations ◦ Collections ◦ Lexer • Cache • Migrations • Framework integrations ◦ Symfony bridge and bundles ◦ Zend Framework modules What (and who) is Doctrine?
  2. What is MongoDB? • Open-source document database ◦ Replication and

    sharding ◦ Web scale™ • Cloud services ◦ Monitoring and backup ◦ Operations management ◦ Database as a Service (DBaaS) • Integrations ◦ Hadoop ◦ Spark ◦ BI Connector (SQL) • Drivers ◦ PHP, HHVM, and many other languages
  3. OpenSky faced an architectural challenge • Encountered difficulty scaling Magento

    ◦ Multi-tenant deployment with hundreds of stores • Realized the need for a bespoke application ◦ Move Magento behind a service layer during transition ◦ Slowly migrate away from its EAV database model • Considered the very latest technologies ◦ PHP 5.3 ◦ Lithium ◦ Symfony 2 ◦ Zend Framework 2 ◦ MongoDB
  4. Why don’t we create an ODM for MongoDB? • Port

    essential ORM functionality ◦ Class metadata ◦ Unit of work ◦ Lifecycle events ◦ Persistence ◦ Repositories • Limit the feature scope ◦ Database abstraction layer ◦ Sharding support ◦ Migrations ◦ Caching
  5. • Maintaining compatibility ◦ MongoDB server ◦ Doctrine Common ◦

    Framework integrations ◦ “Gedmo” Doctrine extensions • Community support ◦ Usage questions ◦ Pull requests ◦ Bug reports • Security vulnerabilities Never-ending todo list
  6. Ever-growing wish list • Requested ORM features ◦ Repository factories

    ◦ Query filters ◦ Criteria API ◦ Result caching • New ODM features ◦ Sharding ◦ Geo-spatial queries ◦ Aggregation builder • Refactoring • PHP 7 support
  7. If you look around and can’t find the leader of

    your local user group… guess what? You are it. ― Cal Evans “
  8. On the road to 2.0.0 • Remove deprecated or problematic

    APIs ◦ YAML driver ◦ requireIndexes • Behavioral changes ◦ Collection strategies ◦ Embedded documents • Internal refactoring ◦ Change set calculation ◦ Class metadata • Direct PHP 7 support ◦ Build upon the new MongoDB driver (ext-mongodb)
  9. Photo Credits • http://octodex.github.com • http://www.mongodb-is-web-scale.com/ • http://shirt.woot.com/offers/it-came-out-of-nowhere • http://phicenter.org/wp-content/uploads/2012/08/stork_baby_delivery_720x540.jpg

    • https://livingstills.tumblr.com/post/113724523047 • http://www.donatoart.com/portraits/cartographer.html • http://logisticalfictions.tumblr.com/post/86099686495/before-a-later-film-revealed-its-boring-mundanity • http://www.reinventioninc.com/wp-content/uploads/2013/09/iStock_000008468780Small-e1380565027473.jpg • http://giphy.com/gifs/thegoodfilms-cinemagraph-thegoodfilms-forrest-gump-JjLylCKqqQs5q • http://giphy.com/gifs/cinemagraph-max-fury-xme2XN3AzQOEU • http://dream-recover-live.blogspot.com.es/2013/05/just-keep-swimming.html • http://i.huffpost.com/gen/1729387/images/o-SHARK-ATTACK-facebook.jpg • https://twitter.com/kizmarh/status/553141889541877760 • http://www.cartoonistgroup.com/properties/lester/art_images/cg56ea24513d0c7.jpg • http://cdn.shopify.com/s/files/1/1067/0834/products/velvet_rope_dude_1024x1024.jpg • https://speaktoall.files.wordpress.com/2013/03/macklemore-thrift-shop-artwork.jpg • http://tkirda.github.io/slides-modern-web-tools/resources/images/semver.png • http://static.neatorama.com/images/2014-04/The-Legend-of-Hodor-l.jpg • https://angeliquepanagos.com/wp-content/uploads/2015/08/balance.jpg • http://latestcalendar.weebly.com/uploads/4/2/7/1/42714133/8676421_orig.jpg