MongoDB      atCommunity Engine
About meLead platform engineermathieu.kempe@communityengine.com@mathieukempe
AgendaBrain dump on our experience with MongoDB• Why NoSQL• Why we chose MongoDB• Moving away from an hybrid solution• Mon...
About Community Engine• Social network based on locality and  small business• Launching in April• Built on:    • ASP.NET M...
NoSQL?• How to store the big amounts of data required  in social networking applications• Data complexity, NoSQL handle hi...
Why we chose MongoDB?• Reviewed different products RavenDB, CouchDB...• Selected MongoDB because we had the best  experien...
Why Hybrid?• Team had a lot of experience with SQL Server  and Entity Framework• Reporting• Transaction
No more SQL Server• Simplify our infrastructure• Easier to Backup• Better performance, not slowed down by SQL  Server, too...
Transaction?Transactions we could go around that using the atomic  document updates and a good schema designMongoDB suppor...
Hosting with Amazon Web Service• Elasticity and scalability• Configure MongoDB using Amazon EC2 instance  bundled into an ...
What about durability?Use journalingUse replica sets
Critical writesVerify that replication is working at write timemongodb://host1,host2,host3/?safe=true;w=2;•safe=true : Use...
Why we kept SOLR?•   Right tool for the right job•   Proven technology•   SOLR best solution for Full Text Indexing•   Fac...
MongoDB/SOLR How we do it
MongoDB/SOLR How we do it
MongoDB/SOLR How we do it
MongoDB/SOLR How we do it
MongoDB/SOLR How we do it
Ease of development
Hierarchical data in SQL Server
Single table
Mongo Database SchemaUsing Type discriminator{     "_id" : ObjectId("4f504e7acd3e1c190ce04198"),     "_t" : "PhotoSpark", ...
Views                                                                                                                     ...
Deployment of database with zero downtime• We release every week• We aim at zero downtime• Our domain model change often
Deployment of database with zero downtimeMake sure that our code can handle both "versions" of the data structureWhen savi...
Deployment of database with zero downtime• Use a migration script
Deployment of database with zero downtime  Expansion Script   Deploy new version   Compression Script                     ...
Questions?
Thank you!mathieu.kempe@communityengine.com@mathieukempe
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
MongoDB at community engine
Upcoming SlideShare
Loading in...5
×

MongoDB at community engine

1,379

Published on

This talk will cover lessons learned at Community Engine regarding MongoDB, including: why we moved away from an Hybrid solution using SQL and MongoDB; an outline of the technologies and what we learned using MongoDB on Amazon Web Services; the MongoDB C# driver; MongoDB with SOLR for Full Text Search; how we do migration, deployment and more.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,379
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Brain dump on why we started to use MongoDB Why we moved away from a solution using MongoDB and SQL Server
  • Moved to this infra
  • If the primary crash we have the data in at least one of the secondary Second node has priority greater than or equal to other eligible nodes in the set
  • Update is different as we do sometime Update in place Update in place are a query and an update in one command
  • MongoDB at community engine

    1. 1. MongoDB atCommunity Engine
    2. 2. About meLead platform engineermathieu.kempe@communityengine.com@mathieukempe
    3. 3. AgendaBrain dump on our experience with MongoDB• Why NoSQL• Why we chose MongoDB• Moving away from an hybrid solution• MongoDB and Amazon• SOLR and MongoDB• Ease of development• Zero downtime database deployment
    4. 4. About Community Engine• Social network based on locality and small business• Launching in April• Built on: • ASP.NET MVC 3 • Amazon Web services • MongoDB • SOLR • Mahout • …
    5. 5. NoSQL?• How to store the big amounts of data required in social networking applications• Data complexity, NoSQL handle hierarchical and graph data structures better• Change management is always difficult with RDBMS• Scaling
    6. 6. Why we chose MongoDB?• Reviewed different products RavenDB, CouchDB...• Selected MongoDB because we had the best experience – Very easy to install and get started – Great developer experience – Replication very easy to setup – Good documentation – Much of the convenience of SQL, Dynamic Queries, Indexing
    7. 7. Why Hybrid?• Team had a lot of experience with SQL Server and Entity Framework• Reporting• Transaction
    8. 8. No more SQL Server• Simplify our infrastructure• Easier to Backup• Better performance, not slowed down by SQL Server, too many queries joined in the application• Development speed• Lower cost
    9. 9. Transaction?Transactions we could go around that using the atomic document updates and a good schema designMongoDB supports atomic operations on single document.When transactions across documents are neededTwo phase commits
    10. 10. Hosting with Amazon Web Service• Elasticity and scalability• Configure MongoDB using Amazon EC2 instance bundled into an AMI.• 64 bits EC2 instance• Raid10 + EBS volumes• Multi-datacenter 3-node replica set in different availability zone• Use secondaries for zero downtime backup• We are not yet using sharded replica sets
    11. 11. What about durability?Use journalingUse replica sets
    12. 12. Critical writesVerify that replication is working at write timemongodb://host1,host2,host3/?safe=true;w=2;•safe=true : Use safemode•w=2: wmode, connect to a replica set waiting forreplication to succeed on the majority of nodes
    13. 13. Why we kept SOLR?• Right tool for the right job• Proven technology• SOLR best solution for Full Text Indexing• Faceted search, Spelling suggestions…• Team already skilled with SOLR• SOLR scales well
    14. 14. MongoDB/SOLR How we do it
    15. 15. MongoDB/SOLR How we do it
    16. 16. MongoDB/SOLR How we do it
    17. 17. MongoDB/SOLR How we do it
    18. 18. MongoDB/SOLR How we do it
    19. 19. Ease of development
    20. 20. Hierarchical data in SQL Server
    21. 21. Single table
    22. 22. Mongo Database SchemaUsing Type discriminator{ "_id" : ObjectId("4f504e7acd3e1c190ce04198"), "_t" : "PhotoSpark", "Photo" : "MyMotorcycle.png " "DateCreated" : ISODate("2012-02-24T09:23:12.246Z")}{ "_id" : ObjectId("4f504e7ccd3e1c190ce04199"), "_t" : "PostSpark", "Body" : "Hello World“ " DateCreated" : ISODate("2012-02-28T10:44:12.858Z")}
    23. 23. Views                                                                   
    24. 24. Deployment of database with zero downtime• We release every week• We aim at zero downtime• Our domain model change often
    25. 25. Deployment of database with zero downtimeMake sure that our code can handle both "versions" of the data structureWhen saving we updates to the new structure
    26. 26. Deployment of database with zero downtime• Use a migration script
    27. 27. Deployment of database with zero downtime Expansion Script Deploy new version Compression Script t
    28. 28. Questions?
    29. 29. Thank you!mathieu.kempe@communityengine.com@mathieukempe
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×