MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
Sharded By Business Line: Migrating to a Core Database using MongoDB and Solr
1. Click to edit Master title style
The Knot Search Platform
MongoLA 2013
2. About Us
• Weddings, Newlyweds, Babies, Style
• NYSE-traded under "XOXO"
• Founded in 1996 as AOL Channel
• 11 million uniques / month
• Articles / Blogs CMS
• Photo Galleries
• Membership / Favorites
• Community Forums
• Planning Tools
• Local Directory
• Gift Registry
• Ecommerce
If you haven't heard of us… watch out, your
girlfriend probably has!
3. About Me
Jason Sirota
Director of Software Architecture
XO Group Inc. (The Knot)
jsirota@xogrp.com
http://jasonsirota.com/
@jasonsirota
4. Current Arch: Sharded By Business Line
Consumer
My
Content National Tools Comm. Memb. eComm Registry Local
Account
UX UX UX / API UX UX / API UX UX / API UX / API
UX
Content National Tools Comm. Memb. eComm Registry Local My Acct.
Business Business Business Business Business Business Business Business Business
Logic Logic Logic Logic Logic Logic Logic Logic Logic
Comm- Member- Local
Sitecore National Tools Ecom Registry CES/ATS
unity ship Profiles
(SQL) (SQL) (SQL) (SQL) (Oracle) (SQL)
(SQL) (SQL) (SQL)
Databases
UW UGC
ODB GR360
(SQL) Photos
(SQL) (MySQL)
(SQL)
Pluck
Responsys
Enterprise
CRM GP FatTail GP Man
Business Intelligence
5. Migrating to OSS and Cloud
Consumer
Solutions
Web APIs
AWS Elastic Beanstalk
Federated via Apigee Services
Caching Document Data Relationships Free-Text Search Data Analysis Key/Value Data
Couchbase MongoDB Neo4j Solr Hadoop DynamoDB
Relational Data
SQL Server
Enterprise Service Bus
MSMQ (On-Premise)
SQS (Cloud)
6. Why MongoDB?
Document DB Decided First: Schemaless Design
• RavenDB (C#) • MongoDB
– Worked well with C# LINQ – Mature Document Data Store
– Cross-collection Joins (but slow..) – Enterprise-level Support
– Very new to NoSQL Landscape – High user-base
– Limited to C# and REST interface – LINQ and JSON-based querying
– Locking issues resolved
– GeoSearching
• Couchbase 2.0
– AWS I/O issues N/A
– Already familiar with Ops from Caching
– Masterless horizontal scaling
– Still in Beta during choice
– Map/Reduce-based queries only
19. MongoDB Challenges
• UUID Endianness
– Write C# GUID to Mongo
– Retrieve UUID from Python, reverses
Endianness, different value out
def upendUUID(orig):
return uuid.UUID(bytes=orig.bytes_le)
• C# Driver logged phantom errors at first:
– "Could not Find MongoDB"
– No other indicators of outage