SlideShare a Scribd company logo
1 of 44
Messaging Platform with
MongoDB Atlas
@eHarmony
Vijay Vangapandu
(Senior Principal Software Engineer)
Email: vijayvangapandu@eharmony.com
LinkedIn: http://bit.ly/vijay-ln
Elankumaran Srinivasan
(Senior Software Engineer)
Email: esrinivasan@eharmony.com
LinkedIn: http://bit.ly/elan-ln
June 20, 2017
• Our comprehensive & revealing
Relationship Questionnaire
• 29 Dimensions® of Compatibility
• 15 million matches per day globally
(10 billion since inception)
• 101 thousand photos uploaded per day
• 1 million communications per day
• 70 million registrants globally
Who is eHarmony?
eH Product Experience
Match ProfileMatch Listing Communication Newsfeed
18 Step Guided Communication Flow
Match Comm Drop Off (match level)
• Decline in Guided communication stages completion since Jan 2016
 Users completing CEQ’s : -36.5%
 Users completing MHCS : -36.0%
 Users completing OEQ’s : -17.7%
 Users reaching open comm: -36.8%
Goals of the Redesign
• Simplified communication flow
• No lockdown or dependent stages
• Real time messaging system - Chat
• Extend the system to support richer content types
• Giphy
• Video/Photos
• Stickers
• Support various custom business requirements
• Improved user experience
New Communication System
Conversations Chat History User’s Recent Questions
RDBMS Table Distribution
20
3
2
10
3
1
1
Open Ended Questions
Smiles (Icebreaker)
Close Ended Questions
Must Have & Can’t Stands
Open Communication
Workflow & Metadata
Communication: RDBMS Table
Limitations With Current Relational Store
• Antiquated
• Large number of tables
• Complex Joins
• Performance Concerns
• Rigid database model
Communication – Microservice architecture
Redis Oracle
XMPP
HTTPS
Aggregation
Service
Data API Service
SSL
Match ServiceUser Service
Auth
Service
API Gateway
NodeJS APP Stack
FIREWALL
???
Characteristics of eH Use Cases
• Data Consistency
• Read Heavy
• Scalable
• Flexible Schema
• High Performance
• Rich Query Support
Communication – Microservice architecture
Redis Oracle
XMPP
HTTPS
Aggregation
Service
Data API Service
SSL
Match ServiceUser Service
Auth
Service
API Gateway
NodeJS APP Stack
FIREWALL
MongoDB
Why MongoDB Atlas?
• NoSQL DB as a Service
• High Availability
• Low Management Overhead
• Monitoring & Alerting
• Automated Backups
• Disaster Recovery
• Workload Isolation
• Strong Security
• No need for on-site DBA
Schema Modeling
Modeling Challenges
• Related Data
• Normalized Vs Denormalized
• Homogenous Vs Heterogeneous
Schema Modeling - 1
Send
Mark As Read
Read Receipt
Message Document
Receive
Schema Modeling - 2
Match ID
Send
Receive
Mark As Read
Read Receipt
123123123
UID-190
UID-530
UID-121
UID-700
MatchIds
Modeling – Array Of Messages
Pros
Cons
• Easy retrieval
• Logical grouping
• Memory usage & document size limitation
• Query complexities
• Document locking
Modeling – Individual Documents
Pros
• Simple Schema
• Memory efficient
• Simple queries
Final Document Model
Messages
User
Use Cases
• Conversations
• History
• Count
Use Cases
• Recently Asked Questions
Flexible Schema Model
Collection Sharding
Messages
User
Use Cases
• Conversations
• Chat History
• Count of new messages
Use Cases
• Recently Asked Questions
Shard Key
Shard Key
Query - Conversations
Conversations
User Match - 335567
Match - 112334
Match - 233456
Message 1
Message 2
Message N
Message N
Message N
Message 1
Message 1
....
........
Shard
Shard
Shard
Query - Conversations
db.getCollection('message').find({"matchId":NumberLong("11791804342")}).sort({"createdTimeStamp":-1}).limit(1)
API Services
Page & Size
.......
MongoDB AtlasUser-Match Store
Retrieve User Contacts
matchIds
M
O
N
G
O
S
.......
Shard-1
Shard-2
Shard-n
Query - Counts
Output
Query – Chat History
Output
Performance & Load Testing
Performance – Load Testing
eHarmony’s Data Center
Cloud Tests DAO as API Service
Mongo
Driver
MongoDB Atlas
• Network Latency with multiple hops
• Query Performance Impact
• Data Growth
• Sharding
Performance – Best Practices
• Indexing
– Too many or none.
– Compound Indexes
– Covered Queries
– Background Index creation.
• Leverage in place updates.
Configuration
Sizing
Chat Quick
Questions
Total Daily
Transactions
1 Year
Projection
2 year
Projection
Daily Non Peak 75, 000 290,000 365,000 100,375,000
Daily Peak 160, 000 360,000 520,000 46,800,000
Total 147,175,000 300,000,000
Data Size Projection For 2 Year Period
# Documents 300,000,000
Average Doc Size 433 Bytes
Compressed Doc Size 168.37 Bytes
Compression Ratio 0.67
Storage Size 47.18 GB
Index Size 12.49 GB
Mongo Atlas Configration
Primary
Secondary Secondary
Primary
Secondary Secondary
Mongos
Shard #1 Shard #2
32 GB 160 GBM50
Monitoring
Real Time Metrics
Mongo Atlas Stats
Alerting
MongoDB Atlas
• Replica set has no Primary
• Cluster missing active Mongos
• Number of connections
• Write Tickets
• Read Tickets
• Replication Lag
• Disk space
• Number of read
• Number of writes
Users In Communication
Total Communication Volume
Summary
Schema
Design
Load
Testing
Analyze
MongoDB Atlas
- Focus on the feature.
- Highly robust worry free
deployment.
- Excellent professional support.
Future Road Map
• Support other message types like videos/images/map location etc.
• Presentation ready feed.
• Monitor impact of additional shards on aggregate functions.
• Text Search.
Mongo db world-2017-eharmony-messaingplatform

More Related Content

Similar to Mongo db world-2017-eharmony-messaingplatform

MongoDB Partner Program Update - November 2013
MongoDB Partner Program Update - November 2013MongoDB Partner Program Update - November 2013
MongoDB Partner Program Update - November 2013MongoDB
 
WeGroup--A Community Android App
WeGroup--A Community Android AppWeGroup--A Community Android App
WeGroup--A Community Android AppXuan Zhang
 
Productionalize content recommendation engine
Productionalize content recommendation engine Productionalize content recommendation engine
Productionalize content recommendation engine Kim Ming Teh
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldRandy Shoup
 
Fluturas presentation @ Big Data Conclave
Fluturas presentation @ Big Data ConclaveFluturas presentation @ Big Data Conclave
Fluturas presentation @ Big Data Conclavefluturads
 
Microsoft Teams Governance Quickstart - The Experts Conference
Microsoft Teams Governance Quickstart - The Experts ConferenceMicrosoft Teams Governance Quickstart - The Experts Conference
Microsoft Teams Governance Quickstart - The Experts ConferenceJoel Oleson
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsRandy Shoup
 
Software Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecuritySoftware Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecurityTao Xie
 
Webinar: What's New in MongoDB 3.2
Webinar: What's New in MongoDB 3.2Webinar: What's New in MongoDB 3.2
Webinar: What's New in MongoDB 3.2MongoDB
 
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...MongoDB
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBMongoDB
 
L’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova GenerazioneL’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova GenerazioneMongoDB
 
Managing Data in Microservices
Managing Data in MicroservicesManaging Data in Microservices
Managing Data in MicroservicesRandy Shoup
 
Enterprise architectsview 2015-apr
Enterprise architectsview 2015-aprEnterprise architectsview 2015-apr
Enterprise architectsview 2015-aprMongoDB
 
L’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazioneL’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazioneMongoDB
 
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB
 
Open Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design PatternsOpen Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design PatternsMatthew Kalan
 
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB StitchMongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB StitchMongoDB
 
Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...
Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...
Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...Sonya Liberman
 

Similar to Mongo db world-2017-eharmony-messaingplatform (20)

MongoDB Partner Program Update - November 2013
MongoDB Partner Program Update - November 2013MongoDB Partner Program Update - November 2013
MongoDB Partner Program Update - November 2013
 
WeGroup--A Community Android App
WeGroup--A Community Android AppWeGroup--A Community Android App
WeGroup--A Community Android App
 
Productionalize content recommendation engine
Productionalize content recommendation engine Productionalize content recommendation engine
Productionalize content recommendation engine
 
Effective Microservices In a Data-centric World
Effective Microservices In a Data-centric WorldEffective Microservices In a Data-centric World
Effective Microservices In a Data-centric World
 
Fluturas presentation @ Big Data Conclave
Fluturas presentation @ Big Data ConclaveFluturas presentation @ Big Data Conclave
Fluturas presentation @ Big Data Conclave
 
Microsoft Teams Governance Quickstart - The Experts Conference
Microsoft Teams Governance Quickstart - The Experts ConferenceMicrosoft Teams Governance Quickstart - The Experts Conference
Microsoft Teams Governance Quickstart - The Experts Conference
 
Managing Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and EventsManaging Data at Scale - Microservices and Events
Managing Data at Scale - Microservices and Events
 
Software Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and SecuritySoftware Analytics: Data Analytics for Software Engineering and Security
Software Analytics: Data Analytics for Software Engineering and Security
 
Webinar: What's New in MongoDB 3.2
Webinar: What's New in MongoDB 3.2Webinar: What's New in MongoDB 3.2
Webinar: What's New in MongoDB 3.2
 
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
MongoDB Days Silicon Valley: Jumpstart: The Right and Wrong Use Cases for Mon...
 
Webinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDBWebinar: An Enterprise Architect’s View of MongoDB
Webinar: An Enterprise Architect’s View of MongoDB
 
L’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova GenerazioneL’architettura di Classe Enterprise di Nuova Generazione
L’architettura di Classe Enterprise di Nuova Generazione
 
Managing Data in Microservices
Managing Data in MicroservicesManaging Data in Microservices
Managing Data in Microservices
 
Enterprise architectsview 2015-apr
Enterprise architectsview 2015-aprEnterprise architectsview 2015-apr
Enterprise architectsview 2015-apr
 
L’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazioneL’architettura di classe enterprise di nuova generazione
L’architettura di classe enterprise di nuova generazione
 
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDBMongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
MongoDB .local Paris 2020: Les bonnes pratiques pour sécuriser MongoDB
 
Open Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design PatternsOpen Source North - MongoDB Advanced Schema Design Patterns
Open Source North - MongoDB Advanced Schema Design Patterns
 
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB StitchMongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
 
Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...
Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...
Search-Based Serving Architecture of Embeddings-Based Recommendations (RecSys...
 
MongodB Internals
MongodB InternalsMongodB Internals
MongodB Internals
 

Recently uploaded

2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...SOFTTECHHUB
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistandanishmna97
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!Memoori
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...panagenda
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTopCSSGallery
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)Wonjun Hwang
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfOverkill Security
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfalexjohnson7307
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهMohamed Sweelam
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMKumar Satyam
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfdanishmna97
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxFIDO Alliance
 

Recently uploaded (20)

Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
 
How to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in PakistanHow to Check GPS Location with a Live Tracker in Pakistan
How to Check GPS Location with a Live Tracker in Pakistan
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdf
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Intro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptxIntro to Passkeys and the State of Passwordless.pptx
Intro to Passkeys and the State of Passwordless.pptx
 

Mongo db world-2017-eharmony-messaingplatform