SlideShare ist ein Scribd-Unternehmen logo
1 von 59
| 1
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
| 2
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
XO Group Inc.
Membership and Community Team
Alexander Copquin - Senior Software Engineer
Vladimir Carballo - Senior Software Engineer
| 3
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorites API Re-platforming
…a case study
| 4
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorites API Re-platforming
• Architectures SQL .NET / Ruby Mongo
• Reasons for migration
• Schema design
• RoR model design and implementation
• Migration strategies and systems
• Lessons learned
| 5
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Our Favorites Feature
| 6
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorites API
• Add / Edit / Delete Object.
• Manage Boards
• Get counts & stats
• RESTful API
• Rails
• JavaScript
• Ios
• Android
Features
| 7
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• + 100,000,000 “favorited” objects
• + 760,000 boards
• Avg. 55,000 new objects per day
Stats
| 8
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Legacy Architecture
| 9
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Database 55 GB and growing…
• Avg 45 rpm on peak times
• Avg 80 msec response POST
• Avg 460 msec response GET
Legacy Benchmarks
| 10
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Db Reaching max. capacity for setup
• Scalability problems
• Hard to modify schema
• Bad response times
• Very complex caching layer
• Out of line with company’s strategy
Maxed
| 11
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
New Architecture
| 12
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Easy to scale
• Flexible schema
• Fast Response
• No Cache Layer
• Fast Iteration / Deploy
• TDD first and foremost
• At a glance monitoring of all layers
Scalable
| 13
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Implementation
| 14
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
What we persisted in the legacy schema
• UserId (primary key)
• UniqueId
• Url (unique per user)
• ImageUrl
• Name
• Description
• ObjectId (unique per application
adding favorites)
• Category
• Timestamps
• Other
| 15
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorites DB Legacy Schema
| 16
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
select top 10 UserFavoriteId, Name, Description, Url, ImageUrl
from userFavorites
where userId = '5174181997807393'
Sample queries
| 17
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
select top 5 grp.groupId, grp.Name as GroupName,
fav.userFavoriteId, fav.name,
fav.Description, fav.Url, fav.ImageUrl
from userFavoritesGroups grp
inner join userFavoritesGroupsItems grpItm
on grp.GroupId = grpItm.GroupId
inner join userFavorites fav
on grpItm.userFavoriteId = fav.userFavoriteId
where grp.userId = '5174181997807393'
Sample queries
| 18
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Towards a new Schema and Persistance Layer
• Start with a clean slate
• Break with the past
• Persist only relevant minimum data points
• Think and rethink relationships
• High Performance
• Flexible
• Prototype different scenarios
| 19
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
First attempt
| 20
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
UserFavorites
| 21
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Document contains embedded documents which are
required to be accessed on its own
• Documents would grow without bound
• Most queries would be slow
• Indexes would be very expensive
• Tries too hard to imitate legacy
Cons
| 22
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Second attempt
| 23
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
| 24
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Board document with one recent favorite
| 25
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Board document with more recent favorites
| 26
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
| 27
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorite document located on different boards
| 28
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Document structure matches the data required on the view
• A Board document includes the 4 most recent favorites.
• A Favorite document includes the list of boards it was
added to
• Faster queries.
• More control on the size of each document
• Better implementation of UX intent
Pros
| 29
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Sample queries
db.favorites.find({'member': 'e1606ed5-4ac8-48b4-aee6-bc4203937903'})
.limit(1)
db.favorites.find({'boards': '7557acf8-b7b1-4eab-a64d-57449034cfc6'})
.limit(1)
db.favorites.find({'application': 'marketplace'})
.limit(1)
db.boards.find({'member': 'e1606ed5-4ac8-48b4-aee6-bc4203937903'})
.limit(1)
db.boards.find({'member': 'e1606ed5-4ac8-48b4-aee6-bc4203937903',
'default_board': true})
db.boards.find({'name' : 'Simple Reception Decor'}).limit(1)
| 30
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
● Rails web application framework
● We speak RoR and JS
● mongoDB as a data repository (we love NoSQL)
● Two collections, one for Boards and one for
Favorites
● No joins, no foreign keys
● Referential integrity is handled in a different fashion.
● MongoId Gem (Pros & Cons)
Some implementation details
| 31
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorites re-platform
| 32
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Board
class
| 33
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
| 34
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorite
class
| 35
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
| 36
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Scaling reads with replica sets
| 37
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Scaling reads with sharding
| 38
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Migration
| 39
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Clients switchover
New
API
Legacy API
Client
Client
Client
Client
ONE WAY
| 40
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Migration Timeline
new API.
Continuous
Migr.
Implement
Monitors
Turn on
Continuous
Data
Catch-up
Plug ClientsBulk Migr.
Development
Bulk Migr.
Migration
| 41
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Bulk Migration
ETL
| 42
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Bulk Migration
FavoritesUserFavorites
SQL Tables Mongo Collections
BoardsUserFavoritesGroups
UserFavoritesGroupsItems
| 43
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Favorites Job
| 44
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Pentaho Steps
| 45
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Auto-increment Id vs. UUID
UserFavoriteId
GroupId
Favorites UUID
Groups UUID
Continuous
Migration
| 46
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Get UUID from the Get Go
• Add a column to legacy Db (+ 100M recs!!) with new
Mongo UUID
• Then migrations will take care of inserting into new
documents
SQL
has all new
ids
xxxxx-xxxx-xxxx
xxxxx-xxxx-xxxx
xxxxx-xxxx-xxxx
Mongo
Ids are
inserted
Migration
Systems
| 47
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Add UUID Columns in SQL
100 M recs!!!Alter table add UUID uniqueidentifier
New Favs TempTable
with UUID
SELECT *, uuid = NEWID()
INTO NewUserFavorites
FROM UserFavorites
Add
Indexes
Rename & drop
| 48
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• SQL needed some sanitation
• SQL prep scripts approx. 4 hs
• Pentaho ETL on local Workstation: 8hs
• Restore into production Mongo Cluster: 4hs
Facts
| 49
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
We’ve got data!!
| 50
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Continuous Migration Architecture
Clients
Legacy API New API
SQS Queue Messenger
ONE WAY SYNC…
| 51
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Continuous Migration
Favorites Legacy Messenger
• Ruby
• Consumer of an SQS queue coming from Legacy
that generates 1 message per operation
• Issues API call to new app per each operation
• Runs as a worker in the background
Legacy
API
SQS
Legacy
Messenge
r
New
API
Mongo
| 52
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
SQS Queue is not a FIFO Friend
Sent by Legacy
1
2
3
4
5
6
7
5
3
1
2
4
6
7
Consumed by Messenger
| 53
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Queue is not FIFO
• Objects don’t exist
• Queue bloats fast
• Can get like not-real-time
• Data is different
Challenges
| 54
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Verify if entity exists (API call),
otherwise, throw back in queue
• Set message expiration
• Sanitize data
• Get multiple workers to achieve
near real-time syncing.
Solutions
| 55
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Favor a simple document structure
• Try different schema paradigms
• Bypass native objectId generation in favor of UUID
• Break with the past
• Queues can be deceiving
• Gems can simplify application layer impl.
• Manage ref. integrity in app. layer
• No cache required Take away
| 56
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
• Avg 85 rpm on peak times
• Avg 58 msec response POST
• Avg 18 msec response GET
New Benchmarks
| 57
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
New vs. Legacy
• Overall Performance Increase
• 18 ms vs. 460 ms for GET
• 58 ms vs. 80 ms for POST
• Easy Schema Changes
• Scalable
• Simpler architecture
• No Cache layer
• Fast Code iteration, testing and deployment
• In-line with company’s technology strategy
Good
| 58
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
Acknowledgments
• Dmitri Nesterenko
• Jason Sherman
• Nelly Santoso
• Phillip Chiu
• Sean Lipkin
• George Taveras
• Alison Fay
• Diana Taykhman
• Rajendra Prashad
• Josh Keys
• Lewis DiFelice
| 59
© 2014 XO GROUP INC. ALL RIGHTS RESERVED.
contact, questions, inquiries?
memcomtech@xogrp.com

Weitere ähnliche Inhalte

Was ist angesagt?

Evolution of Microservices - Craft Conference
Evolution of Microservices - Craft ConferenceEvolution of Microservices - Craft Conference
Evolution of Microservices - Craft ConferenceAdrian Cockcroft
 
Hadoop Hive Tutorial | Hive Fundamentals | Hive Architecture
Hadoop Hive Tutorial | Hive Fundamentals | Hive ArchitectureHadoop Hive Tutorial | Hive Fundamentals | Hive Architecture
Hadoop Hive Tutorial | Hive Fundamentals | Hive ArchitectureSkillspeed
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMongoDB
 
Cloud Migration - Cloud Computing Benefits & Issues
Cloud Migration - Cloud Computing Benefits & IssuesCloud Migration - Cloud Computing Benefits & Issues
Cloud Migration - Cloud Computing Benefits & IssuesArtizen, Inc.
 
MongoDB Memory Management Demystified
MongoDB Memory Management DemystifiedMongoDB Memory Management Demystified
MongoDB Memory Management DemystifiedMongoDB
 
Openshift Container Platform
Openshift Container PlatformOpenshift Container Platform
Openshift Container PlatformDLT Solutions
 
JanusGraph DataBase Concepts
JanusGraph DataBase ConceptsJanusGraph DataBase Concepts
JanusGraph DataBase ConceptsSanil Bagzai
 
Introdução a web semântica e o case da globo.com
Introdução a web semântica e o case da globo.comIntrodução a web semântica e o case da globo.com
Introdução a web semântica e o case da globo.comRenan Moreira de Oliveira
 
Azure Migration Program Pitch Deck
Azure Migration Program Pitch DeckAzure Migration Program Pitch Deck
Azure Migration Program Pitch DeckNicholas Vossburg
 
Overcoming Today's Data Challenges with MongoDB
Overcoming Today's Data Challenges with MongoDBOvercoming Today's Data Challenges with MongoDB
Overcoming Today's Data Challenges with MongoDBMongoDB
 
Ozone and HDFS's Evolution
Ozone and HDFS's EvolutionOzone and HDFS's Evolution
Ozone and HDFS's EvolutionDataWorks Summit
 
AZ-104T00A-ENU-PowerPoint_00.pptx
AZ-104T00A-ENU-PowerPoint_00.pptxAZ-104T00A-ENU-PowerPoint_00.pptx
AZ-104T00A-ENU-PowerPoint_00.pptxAliChallioui
 
Hive and Apache Tez: Benchmarked at Yahoo! Scale
Hive and Apache Tez: Benchmarked at Yahoo! ScaleHive and Apache Tez: Benchmarked at Yahoo! Scale
Hive and Apache Tez: Benchmarked at Yahoo! ScaleDataWorks Summit
 
YARN Ready: Integrating to YARN with Tez
YARN Ready: Integrating to YARN with Tez YARN Ready: Integrating to YARN with Tez
YARN Ready: Integrating to YARN with Tez Hortonworks
 
CCI2018 - Azure Network - Security Best Practices
CCI2018 - Azure Network - Security Best PracticesCCI2018 - Azure Network - Security Best Practices
CCI2018 - Azure Network - Security Best Practiceswalk2talk srl
 
Az 104 session 6 azure networking part2
Az 104 session 6 azure networking part2Az 104 session 6 azure networking part2
Az 104 session 6 azure networking part2AzureEzy1
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자NAVER D2
 

Was ist angesagt? (20)

Evolution of Microservices - Craft Conference
Evolution of Microservices - Craft ConferenceEvolution of Microservices - Craft Conference
Evolution of Microservices - Craft Conference
 
Hadoop Hive Tutorial | Hive Fundamentals | Hive Architecture
Hadoop Hive Tutorial | Hive Fundamentals | Hive ArchitectureHadoop Hive Tutorial | Hive Fundamentals | Hive Architecture
Hadoop Hive Tutorial | Hive Fundamentals | Hive Architecture
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
 
Cloud Migration - Cloud Computing Benefits & Issues
Cloud Migration - Cloud Computing Benefits & IssuesCloud Migration - Cloud Computing Benefits & Issues
Cloud Migration - Cloud Computing Benefits & Issues
 
MongoDB Memory Management Demystified
MongoDB Memory Management DemystifiedMongoDB Memory Management Demystified
MongoDB Memory Management Demystified
 
Openshift Container Platform
Openshift Container PlatformOpenshift Container Platform
Openshift Container Platform
 
JanusGraph DataBase Concepts
JanusGraph DataBase ConceptsJanusGraph DataBase Concepts
JanusGraph DataBase Concepts
 
Introdução a web semântica e o case da globo.com
Introdução a web semântica e o case da globo.comIntrodução a web semântica e o case da globo.com
Introdução a web semântica e o case da globo.com
 
Azure Migration Program Pitch Deck
Azure Migration Program Pitch DeckAzure Migration Program Pitch Deck
Azure Migration Program Pitch Deck
 
Overcoming Today's Data Challenges with MongoDB
Overcoming Today's Data Challenges with MongoDBOvercoming Today's Data Challenges with MongoDB
Overcoming Today's Data Challenges with MongoDB
 
Ozone and HDFS's Evolution
Ozone and HDFS's EvolutionOzone and HDFS's Evolution
Ozone and HDFS's Evolution
 
AZ-104T00A-ENU-PowerPoint_00.pptx
AZ-104T00A-ENU-PowerPoint_00.pptxAZ-104T00A-ENU-PowerPoint_00.pptx
AZ-104T00A-ENU-PowerPoint_00.pptx
 
Hive and Apache Tez: Benchmarked at Yahoo! Scale
Hive and Apache Tez: Benchmarked at Yahoo! ScaleHive and Apache Tez: Benchmarked at Yahoo! Scale
Hive and Apache Tez: Benchmarked at Yahoo! Scale
 
YARN Ready: Integrating to YARN with Tez
YARN Ready: Integrating to YARN with Tez YARN Ready: Integrating to YARN with Tez
YARN Ready: Integrating to YARN with Tez
 
Couchbase 101
Couchbase 101 Couchbase 101
Couchbase 101
 
CCI2018 - Azure Network - Security Best Practices
CCI2018 - Azure Network - Security Best PracticesCCI2018 - Azure Network - Security Best Practices
CCI2018 - Azure Network - Security Best Practices
 
Migrating Oracle to PostgreSQL
Migrating Oracle to PostgreSQLMigrating Oracle to PostgreSQL
Migrating Oracle to PostgreSQL
 
Az 104 session 6 azure networking part2
Az 104 session 6 azure networking part2Az 104 session 6 azure networking part2
Az 104 session 6 azure networking part2
 
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
 

Andere mochten auch

Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDBMongoDB
 
Migrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMigrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMongoDB
 
Practical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo DbPractical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo DbAlex Sharp
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDBNick Court
 
Scaling Hike Messenger to 15M Users
Scaling Hike Messenger to 15M UsersScaling Hike Messenger to 15M Users
Scaling Hike Messenger to 15M UsersMongoDB
 
Zero to 1 Billion+ Records: A True Story of Learning & Scaling GameChanger
Zero to 1 Billion+ Records: A True Story of Learning & Scaling GameChangerZero to 1 Billion+ Records: A True Story of Learning & Scaling GameChanger
Zero to 1 Billion+ Records: A True Story of Learning & Scaling GameChangerMongoDB
 
Geolocation and Cassandra at Physi
Geolocation and Cassandra at PhysiGeolocation and Cassandra at Physi
Geolocation and Cassandra at PhysiCassandra Austin
 
MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...
MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...
MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...MongoDB
 
Geolocation in mongodb
Geolocation in mongodbGeolocation in mongodb
Geolocation in mongodbMongoDB
 
Mongo db with spring data document
Mongo db with spring data documentMongo db with spring data document
Mongo db with spring data documentSean Lee
 
From sql server to mongo db
From sql server to mongo dbFrom sql server to mongo db
From sql server to mongo dbRyan Hoffman
 
Content Management with MongoDB by Mark Helmstetter
 Content Management with MongoDB by Mark Helmstetter Content Management with MongoDB by Mark Helmstetter
Content Management with MongoDB by Mark HelmstetterMongoDB
 
Apache Spark and MongoDB - Turning Analytics into Real-Time Action
Apache Spark and MongoDB - Turning Analytics into Real-Time ActionApache Spark and MongoDB - Turning Analytics into Real-Time Action
Apache Spark and MongoDB - Turning Analytics into Real-Time ActionJoão Gabriel Lima
 
Webinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBWebinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBMongoDB
 
Oracle vs NoSQL – The good, the bad and the ugly
Oracle vs NoSQL – The good, the bad and the uglyOracle vs NoSQL – The good, the bad and the ugly
Oracle vs NoSQL – The good, the bad and the uglyJohn Kanagaraj
 
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...MongoDB
 
Building an An AI Startup with MongoDB at x.ai
Building an An AI Startup with MongoDB at x.aiBuilding an An AI Startup with MongoDB at x.ai
Building an An AI Startup with MongoDB at x.aiMongoDB
 
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...MongoDB
 

Andere mochten auch (20)

From Oracle to MongoDB
From Oracle to MongoDBFrom Oracle to MongoDB
From Oracle to MongoDB
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
 
Migrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDBMigrating from RDBMS to MongoDB
Migrating from RDBMS to MongoDB
 
Practical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo DbPractical Ruby Projects With Mongo Db
Practical Ruby Projects With Mongo Db
 
Moving from SQL Server to MongoDB
Moving from SQL Server to MongoDBMoving from SQL Server to MongoDB
Moving from SQL Server to MongoDB
 
Scaling Hike Messenger to 15M Users
Scaling Hike Messenger to 15M UsersScaling Hike Messenger to 15M Users
Scaling Hike Messenger to 15M Users
 
Zero to 1 Billion+ Records: A True Story of Learning & Scaling GameChanger
Zero to 1 Billion+ Records: A True Story of Learning & Scaling GameChangerZero to 1 Billion+ Records: A True Story of Learning & Scaling GameChanger
Zero to 1 Billion+ Records: A True Story of Learning & Scaling GameChanger
 
Geolocation and Cassandra at Physi
Geolocation and Cassandra at PhysiGeolocation and Cassandra at Physi
Geolocation and Cassandra at Physi
 
MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...
MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...
MongoDB and the Connectivity Map: Making Connections Between Genetics and Dis...
 
Geolocation in mongodb
Geolocation in mongodbGeolocation in mongodb
Geolocation in mongodb
 
Mongo db with spring data document
Mongo db with spring data documentMongo db with spring data document
Mongo db with spring data document
 
From sql server to mongo db
From sql server to mongo dbFrom sql server to mongo db
From sql server to mongo db
 
Content Management with MongoDB by Mark Helmstetter
 Content Management with MongoDB by Mark Helmstetter Content Management with MongoDB by Mark Helmstetter
Content Management with MongoDB by Mark Helmstetter
 
Apache Spark and MongoDB - Turning Analytics into Real-Time Action
Apache Spark and MongoDB - Turning Analytics into Real-Time ActionApache Spark and MongoDB - Turning Analytics into Real-Time Action
Apache Spark and MongoDB - Turning Analytics into Real-Time Action
 
Webinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBWebinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDB
 
Oracle vs NoSQL – The good, the bad and the ugly
Oracle vs NoSQL – The good, the bad and the uglyOracle vs NoSQL – The good, the bad and the ugly
Oracle vs NoSQL – The good, the bad and the ugly
 
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
Replacing Traditional Technologies with MongoDB: A Single Platform for All Fi...
 
Spark and MongoDB
Spark and MongoDBSpark and MongoDB
Spark and MongoDB
 
Building an An AI Startup with MongoDB at x.ai
Building an An AI Startup with MongoDB at x.aiBuilding an An AI Startup with MongoDB at x.ai
Building an An AI Startup with MongoDB at x.ai
 
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
Securing MongoDB to Serve an AWS-Based, Multi-Tenant, Security-Fanatic SaaS A...
 

Ähnlich wie Favorites API Replatforming Case Study

Couchbase usage at Symantec
Couchbase usage at SymantecCouchbase usage at Symantec
Couchbase usage at Symantecgauravchandna
 
NetIQ identity powered security
NetIQ identity powered security   NetIQ identity powered security
NetIQ identity powered security Finceptum Oy
 
JDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo BarrosJDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo BarrosPROIDEA
 
Hack for Good and Profit (Cloud Foundry Summit 2014)
Hack for Good and Profit (Cloud Foundry Summit 2014)Hack for Good and Profit (Cloud Foundry Summit 2014)
Hack for Good and Profit (Cloud Foundry Summit 2014)VMware Tanzu
 
Dba to data scientist -Satyendra
Dba to data scientist -SatyendraDba to data scientist -Satyendra
Dba to data scientist -Satyendrapasalapudi123
 
Rocking the enterprise with Ruby - RubyKaigi 2010
Rocking the enterprise with Ruby - RubyKaigi 2010Rocking the enterprise with Ruby - RubyKaigi 2010
Rocking the enterprise with Ruby - RubyKaigi 2010releasebeta
 
Aai 3228-dev ops-tools-websphere-sl
Aai 3228-dev ops-tools-websphere-slAai 3228-dev ops-tools-websphere-sl
Aai 3228-dev ops-tools-websphere-slsflynn073
 
Impala 2.0 - The Best Analytic Database for Hadoop
Impala 2.0 - The Best Analytic Database for HadoopImpala 2.0 - The Best Analytic Database for Hadoop
Impala 2.0 - The Best Analytic Database for HadoopCloudera, Inc.
 
Strata NY 2014 - Architectural considerations for Hadoop applications tutorial
Strata NY 2014 - Architectural considerations for Hadoop applications tutorialStrata NY 2014 - Architectural considerations for Hadoop applications tutorial
Strata NY 2014 - Architectural considerations for Hadoop applications tutorialhadooparchbook
 
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)VMware Tanzu
 
Apex 42-new-features-1867076
Apex 42-new-features-1867076Apex 42-new-features-1867076
Apex 42-new-features-1867076Gorava Prakash
 
大数据数据治理及数据安全
大数据数据治理及数据安全大数据数据治理及数据安全
大数据数据治理及数据安全Jianwei Li
 
Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...
Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...
Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...DataStax Academy
 
Cf summit2014 roadmap
Cf summit2014 roadmapCf summit2014 roadmap
Cf summit2014 roadmapJames Bayer
 
Hadoop Application Architectures tutorial - Strata London
Hadoop Application Architectures tutorial - Strata LondonHadoop Application Architectures tutorial - Strata London
Hadoop Application Architectures tutorial - Strata Londonhadooparchbook
 

Ähnlich wie Favorites API Replatforming Case Study (20)

Couchbase usage at Symantec
Couchbase usage at SymantecCouchbase usage at Symantec
Couchbase usage at Symantec
 
NetIQ identity powered security
NetIQ identity powered security   NetIQ identity powered security
NetIQ identity powered security
 
JDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo BarrosJDD2014: Multitenant Search - Pablo Barros
JDD2014: Multitenant Search - Pablo Barros
 
Qtr 3 2012 Ppt
Qtr 3 2012 PptQtr 3 2012 Ppt
Qtr 3 2012 Ppt
 
Hack for Good and Profit (Cloud Foundry Summit 2014)
Hack for Good and Profit (Cloud Foundry Summit 2014)Hack for Good and Profit (Cloud Foundry Summit 2014)
Hack for Good and Profit (Cloud Foundry Summit 2014)
 
Dba to data scientist -Satyendra
Dba to data scientist -SatyendraDba to data scientist -Satyendra
Dba to data scientist -Satyendra
 
Apereo OAE - Bootcamp
Apereo OAE - BootcampApereo OAE - Bootcamp
Apereo OAE - Bootcamp
 
Rocking the enterprise with Ruby - RubyKaigi 2010
Rocking the enterprise with Ruby - RubyKaigi 2010Rocking the enterprise with Ruby - RubyKaigi 2010
Rocking the enterprise with Ruby - RubyKaigi 2010
 
Aai 3228-dev ops-tools-websphere-sl
Aai 3228-dev ops-tools-websphere-slAai 3228-dev ops-tools-websphere-sl
Aai 3228-dev ops-tools-websphere-sl
 
Impala 2.0 - The Best Analytic Database for Hadoop
Impala 2.0 - The Best Analytic Database for HadoopImpala 2.0 - The Best Analytic Database for Hadoop
Impala 2.0 - The Best Analytic Database for Hadoop
 
Em13c New Features- Two of Two
Em13c New Features- Two of TwoEm13c New Features- Two of Two
Em13c New Features- Two of Two
 
Strata NY 2014 - Architectural considerations for Hadoop applications tutorial
Strata NY 2014 - Architectural considerations for Hadoop applications tutorialStrata NY 2014 - Architectural considerations for Hadoop applications tutorial
Strata NY 2014 - Architectural considerations for Hadoop applications tutorial
 
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
Keynote: Architecting for Continuous Delivery (Pivotal Cloud Platform Roadshow)
 
Big Data Hadoop Training Course
Big Data Hadoop Training CourseBig Data Hadoop Training Course
Big Data Hadoop Training Course
 
Apex 42-new-features-1867076
Apex 42-new-features-1867076Apex 42-new-features-1867076
Apex 42-new-features-1867076
 
大数据数据治理及数据安全
大数据数据治理及数据安全大数据数据治理及数据安全
大数据数据治理及数据安全
 
Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...
Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...
Cassandra Summit 2014: Internet of Complex Things Analytics with Apache Cassa...
 
Cf summit2014 roadmap
Cf summit2014 roadmapCf summit2014 roadmap
Cf summit2014 roadmap
 
YARN
YARNYARN
YARN
 
Hadoop Application Architectures tutorial - Strata London
Hadoop Application Architectures tutorial - Strata LondonHadoop Application Architectures tutorial - Strata London
Hadoop Application Architectures tutorial - Strata London
 

Mehr von MongoDB

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump StartMongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB
 

Mehr von MongoDB (20)

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
 

Kürzlich hochgeladen

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Kürzlich hochgeladen (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Favorites API Replatforming Case Study

  • 1. | 1 © 2014 XO GROUP INC. ALL RIGHTS RESERVED.
  • 2. | 2 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. XO Group Inc. Membership and Community Team Alexander Copquin - Senior Software Engineer Vladimir Carballo - Senior Software Engineer
  • 3. | 3 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorites API Re-platforming …a case study
  • 4. | 4 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorites API Re-platforming • Architectures SQL .NET / Ruby Mongo • Reasons for migration • Schema design • RoR model design and implementation • Migration strategies and systems • Lessons learned
  • 5. | 5 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Our Favorites Feature
  • 6. | 6 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorites API • Add / Edit / Delete Object. • Manage Boards • Get counts & stats • RESTful API • Rails • JavaScript • Ios • Android Features
  • 7. | 7 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • + 100,000,000 “favorited” objects • + 760,000 boards • Avg. 55,000 new objects per day Stats
  • 8. | 8 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Legacy Architecture
  • 9. | 9 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Database 55 GB and growing… • Avg 45 rpm on peak times • Avg 80 msec response POST • Avg 460 msec response GET Legacy Benchmarks
  • 10. | 10 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Db Reaching max. capacity for setup • Scalability problems • Hard to modify schema • Bad response times • Very complex caching layer • Out of line with company’s strategy Maxed
  • 11. | 11 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. New Architecture
  • 12. | 12 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Easy to scale • Flexible schema • Fast Response • No Cache Layer • Fast Iteration / Deploy • TDD first and foremost • At a glance monitoring of all layers Scalable
  • 13. | 13 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Implementation
  • 14. | 14 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. What we persisted in the legacy schema • UserId (primary key) • UniqueId • Url (unique per user) • ImageUrl • Name • Description • ObjectId (unique per application adding favorites) • Category • Timestamps • Other
  • 15. | 15 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorites DB Legacy Schema
  • 16. | 16 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. select top 10 UserFavoriteId, Name, Description, Url, ImageUrl from userFavorites where userId = '5174181997807393' Sample queries
  • 17. | 17 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. select top 5 grp.groupId, grp.Name as GroupName, fav.userFavoriteId, fav.name, fav.Description, fav.Url, fav.ImageUrl from userFavoritesGroups grp inner join userFavoritesGroupsItems grpItm on grp.GroupId = grpItm.GroupId inner join userFavorites fav on grpItm.userFavoriteId = fav.userFavoriteId where grp.userId = '5174181997807393' Sample queries
  • 18. | 18 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Towards a new Schema and Persistance Layer • Start with a clean slate • Break with the past • Persist only relevant minimum data points • Think and rethink relationships • High Performance • Flexible • Prototype different scenarios
  • 19. | 19 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. First attempt
  • 20. | 20 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. UserFavorites
  • 21. | 21 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Document contains embedded documents which are required to be accessed on its own • Documents would grow without bound • Most queries would be slow • Indexes would be very expensive • Tries too hard to imitate legacy Cons
  • 22. | 22 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Second attempt
  • 23. | 23 © 2014 XO GROUP INC. ALL RIGHTS RESERVED.
  • 24. | 24 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Board document with one recent favorite
  • 25. | 25 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Board document with more recent favorites
  • 26. | 26 © 2014 XO GROUP INC. ALL RIGHTS RESERVED.
  • 27. | 27 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorite document located on different boards
  • 28. | 28 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Document structure matches the data required on the view • A Board document includes the 4 most recent favorites. • A Favorite document includes the list of boards it was added to • Faster queries. • More control on the size of each document • Better implementation of UX intent Pros
  • 29. | 29 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Sample queries db.favorites.find({'member': 'e1606ed5-4ac8-48b4-aee6-bc4203937903'}) .limit(1) db.favorites.find({'boards': '7557acf8-b7b1-4eab-a64d-57449034cfc6'}) .limit(1) db.favorites.find({'application': 'marketplace'}) .limit(1) db.boards.find({'member': 'e1606ed5-4ac8-48b4-aee6-bc4203937903'}) .limit(1) db.boards.find({'member': 'e1606ed5-4ac8-48b4-aee6-bc4203937903', 'default_board': true}) db.boards.find({'name' : 'Simple Reception Decor'}).limit(1)
  • 30. | 30 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. ● Rails web application framework ● We speak RoR and JS ● mongoDB as a data repository (we love NoSQL) ● Two collections, one for Boards and one for Favorites ● No joins, no foreign keys ● Referential integrity is handled in a different fashion. ● MongoId Gem (Pros & Cons) Some implementation details
  • 31. | 31 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorites re-platform
  • 32. | 32 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Board class
  • 33. | 33 © 2014 XO GROUP INC. ALL RIGHTS RESERVED.
  • 34. | 34 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorite class
  • 35. | 35 © 2014 XO GROUP INC. ALL RIGHTS RESERVED.
  • 36. | 36 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Scaling reads with replica sets
  • 37. | 37 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Scaling reads with sharding
  • 38. | 38 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Migration
  • 39. | 39 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Clients switchover New API Legacy API Client Client Client Client ONE WAY
  • 40. | 40 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Migration Timeline new API. Continuous Migr. Implement Monitors Turn on Continuous Data Catch-up Plug ClientsBulk Migr. Development Bulk Migr. Migration
  • 41. | 41 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Bulk Migration ETL
  • 42. | 42 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Bulk Migration FavoritesUserFavorites SQL Tables Mongo Collections BoardsUserFavoritesGroups UserFavoritesGroupsItems
  • 43. | 43 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Favorites Job
  • 44. | 44 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Pentaho Steps
  • 45. | 45 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Auto-increment Id vs. UUID UserFavoriteId GroupId Favorites UUID Groups UUID Continuous Migration
  • 46. | 46 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Get UUID from the Get Go • Add a column to legacy Db (+ 100M recs!!) with new Mongo UUID • Then migrations will take care of inserting into new documents SQL has all new ids xxxxx-xxxx-xxxx xxxxx-xxxx-xxxx xxxxx-xxxx-xxxx Mongo Ids are inserted Migration Systems
  • 47. | 47 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Add UUID Columns in SQL 100 M recs!!!Alter table add UUID uniqueidentifier New Favs TempTable with UUID SELECT *, uuid = NEWID() INTO NewUserFavorites FROM UserFavorites Add Indexes Rename & drop
  • 48. | 48 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • SQL needed some sanitation • SQL prep scripts approx. 4 hs • Pentaho ETL on local Workstation: 8hs • Restore into production Mongo Cluster: 4hs Facts
  • 49. | 49 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. We’ve got data!!
  • 50. | 50 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Continuous Migration Architecture Clients Legacy API New API SQS Queue Messenger ONE WAY SYNC…
  • 51. | 51 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Continuous Migration Favorites Legacy Messenger • Ruby • Consumer of an SQS queue coming from Legacy that generates 1 message per operation • Issues API call to new app per each operation • Runs as a worker in the background Legacy API SQS Legacy Messenge r New API Mongo
  • 52. | 52 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. SQS Queue is not a FIFO Friend Sent by Legacy 1 2 3 4 5 6 7 5 3 1 2 4 6 7 Consumed by Messenger
  • 53. | 53 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Queue is not FIFO • Objects don’t exist • Queue bloats fast • Can get like not-real-time • Data is different Challenges
  • 54. | 54 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Verify if entity exists (API call), otherwise, throw back in queue • Set message expiration • Sanitize data • Get multiple workers to achieve near real-time syncing. Solutions
  • 55. | 55 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Favor a simple document structure • Try different schema paradigms • Bypass native objectId generation in favor of UUID • Break with the past • Queues can be deceiving • Gems can simplify application layer impl. • Manage ref. integrity in app. layer • No cache required Take away
  • 56. | 56 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. • Avg 85 rpm on peak times • Avg 58 msec response POST • Avg 18 msec response GET New Benchmarks
  • 57. | 57 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. New vs. Legacy • Overall Performance Increase • 18 ms vs. 460 ms for GET • 58 ms vs. 80 ms for POST • Easy Schema Changes • Scalable • Simpler architecture • No Cache layer • Fast Code iteration, testing and deployment • In-line with company’s technology strategy Good
  • 58. | 58 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. Acknowledgments • Dmitri Nesterenko • Jason Sherman • Nelly Santoso • Phillip Chiu • Sean Lipkin • George Taveras • Alison Fay • Diana Taykhman • Rajendra Prashad • Josh Keys • Lewis DiFelice
  • 59. | 59 © 2014 XO GROUP INC. ALL RIGHTS RESERVED. contact, questions, inquiries? memcomtech@xogrp.com