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
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
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
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)