Building your First MEAN App

  • Published on
    12-May-2015

  • View
    2.197

  • Download
    2

Transcript

  • 1.Evening with MongoDB Building your first MEAN app Solution Architect, MongoDB, Inc. dbaev@mongodb.com Dmitry Baev

2. Agenda Designing your schema in MongoDB How to be MEAN Visualizing your MongoDB data in a MEANingful way! Scalability &Availability DeploymentArchitectures & Operations 3. The Document Model 4. Terminology MongoDB RDBMS Collection Table Document Row Index Index Embedded Document Join Reference Foreign Key 5. Focus on data storage Focus on data use 6. What answers do I have? What questions do I have? 7. 7 Document Data Model Relational MongoDB { first_name: Paul, surname: Miller, city: London, location: [45.123,47.232], cars: [ { model: Bentley, year: 1973, value: 100000, }, { model: Rolls Royce, year: 1965, value: 330000, } } } 8. 8 Documents are Rich Data Structures { first_name: Paul, surname: Miller, cell: +447557505611 city: London, location: [45.123,47.232], Profession: [banking, finance, trader], cars: [ { model: Bentley, year: 1973, value: 100000, }, { model: Rolls Royce, year: 1965, value: 330000, } } } Fields can contain an array of sub-documents Fields Typed field values Fields can contain arrays 9. 9 Document Model Benefits Agility and flexibility Data model supports business change Rapidly iterate to meet new requirements Intuitive, natural data representation Eliminates ORM layer Developers are more productive Reduces the need for joins, disk seeks Programming is more simple Performance delivered at scale 10. 10 Developers are more productive 11. 11 Developers are more productive 12. 12 Better Data Locality Performance In-Memory Caching In-Place Updates 13. 14 Do More With Your Data MongoDB Rich Queries Find Pauls cars Find everybody in London with a car built between 1970 and 1980 Geospatial Find all of the car owners within 5km of Trafalgar Sq. Text Search Find all the cars described as having leather seats Aggregation Calculate the average value of Pauls car collection Map Reduce What is the ownership pattern of colors by geography over time? (is purple trending up in China?) { first_name: Paul, surname: Miller, city: London, location: [45.123,47.232], cars: [ { model: Bentley, year: 1973, value: 100000, }, { model: Rolls Royce, year: 1965, value: 330000, } } } 14. 15 Drivers & Ecosystem Drivers Support for the most popular languages and frameworks Frameworks Morphia MEAN Stack Java Python Perl Ruby 15. Modeling Data with MongoDB 16. Contact Address Business Card 17. Referencing Addresses { _id : , street : , city : , state : , zip_code : , country : } Contacts { _id : , name : , title : , company : , phone : , address_id : } 18. Embedding Contacts { _id : , name : , title : , company : , address : { street : , city : , state : , zip_code : , country : }, phone : } 19. Schema Flexibility { name : , title : , company : , address : { street : , city : , state : , zip_code : }, phone : } { name : , url : , title : , company : , email : , address : { street : , city : , state : , zip_code : } phone : , fax } 20. { _id: , name: , title: , company: , address: [ { street: , city: , state: , zip_code: , country: }, { street: , city: , state: } ], phone: } Schema Flexibility { _id : , name : , title : , company : , address : { street : , city : , state : , zip_code : , country : }, phone : } 21. Lets get MEAN 22. MEAN Stack Database Server Client Angularjs-nvd3 ----------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------- 23. How to be MEAN! ServerClient ------------------------------------------------------ View Controller Service Route Controller Model REST API call 24. Node.js MongoDB Driver Install using npm Basic CRUD Mongos Aggregation Replica Set Sharding Read preferences 25. Mongoose Provides elegant MongoDB object modeling for Node.js using Schemas and Models Each schema maps to a MongoDB collection Models can be instantiated based on a schema Instances of models represent documents in MongoDB Support for CRUD, aggregation, validation, pseudo-joins, rich query builder + lots more! Install using npm 26. Mongoose (getting started) Require Node module Connect to MongoDB Define your schema in JSON Create the model object 27. Mongoose (example) Create/ Update #model.save() Read #model.findOne() #model.find() Update #model.update() Delete #model.remove() Aggregate #model.aggregate() 28. Visualizing data D3.js JavaScript library for manipulating documents based on data bring your data to life NVD3.js reusable charts for d3.js Angularjs-nvd3-directives Angulars way of extending HTML to create new elements and functionality 29. D3.js NVD3.js Visualizing data Angularjs -nvd3- directives 30. Real-time streaming charts Socket.IO (Node.js module) aims to make realtime apps possible in every browser and mobile device MongoDB Tailable Cursors requires a capped collection NVD3.js Event Listeners charts can be refreshed continuouslyas data is inserted/update in MongoDB collection 31. Demo: Visualizing your MongoDB data in a MEANingful way! 32. City of Toronto Open Data Data source: REST ServiceAPI To retrieve a list of service requestbetween Feb 1, 2012 to Feb 7, 2012 https://secure.toronto.ca/webwizard/ws/requests.json?start_date=2012-02- 01T00:00:00Z&end_date=2012-02-07T00:00:00Z&jurisdiction_id=toronto.ca Output format: JSON Refresh rate: continuously - real time refresh 33. Getting started with MEAN MEAN.io ready to use MEAN stack boilerplate Yeoman scaffolding tool for building modern web apps CommunityMEAN stack generators: https://github.com/wlepinski/generator-meanstack https://github.com/jrcryer/generator-mean https://github.com/chrisenytc/generator-meanis 34. Scalability & Availability 35. 36 Scalability Auto-Sharding Increase capacity as you go Commodity and cloud architectures Improved operational simplicity and cost visibility 36. 37 High Availability Automated replication and failover Multi-data center support Improved operational simplicity (e.g., HW swaps) Data durability and consistency 37. 38 MongoDB Architecture 38. Deployment Architectures & Operations 39. 40 Single Data Center Automated failover Tolerates server failures Tolerates rack failures Number of replicas defines failure tolerance Primary A Primary B Primary C Secondary A Secondary ASecondary B Secondary BSecondary CSecondary C 40. 41 Active/Active Data Center Tolerates server, rack, data center failures, network partitions Data Center - West Primary A Primary B Primary C Secondary A Secondary BSecondary C Data Center - East Secondary A Secondary B Secondary C Secondary B Secondary C Secondary A Data Center - Central Arbiter A Arbiter B Arbiter C 41. 42 Read Global/Write Local Primary:NYC Secondary:NYC Primary:LON Primary:SYD Secondary:LON Secondary:NYC Secondary:SYD Secondary:LON Secondary:SYD 42. References MEAN.io - http://www.mean.io MongoDB - http://mongodb.com Express - http://expressjs.com Angular - http://angularjs.org Node - http://nodejs.org Socket.IO- http://http://socket.io Angularjs-nvd3-directives - http://cmaurer.github.io/angularjs-nvd3- directives 43. mongodb.org/downloads 44. Online Training at MongoDB University 45. For More Information Resource Location MongoDB Downloads mongodb.org/downloads Free Online Training education.mongodb.com Webinars and Events mongodb.com/events White Papers mongodb.com/white-papers Case Studies mongodb.com/customers Presentations mongodb.com/presentations Documentation docs.mongodb.org Additional Info info@mongodb.com Resource Location 46. Thank You Solution Architect, MongoDB, Inc. dbaev@mongodb.com Dmitry Baev