DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Data Engineering
  3. Databases
  4. Pokemon Go: Scaling Profile Services With Couchbase NoSQL

Pokemon Go: Scaling Profile Services With Couchbase NoSQL

How did the biggest mobile game of all time scale its Pokemon Trainer Club to support millions of users?

Shane Johnson user avatar by
Shane Johnson
·
Oct. 28, 16 · Opinion
Like (1)
Save
Tweet
Share
3.11K Views

Join the DZone community and get the full member experience.

Join For Free

Couchbase and NoSQL

In a matter of days, with respect to daily active users, Pokémon GO surpassed Twitter. According to Apple, it set a record for the number of downloads within its first week – when it was initially launched in New Zealand, Australia, and the United States. Today, it’s been downloaded more than 500 million times.

Why NoSQL?

One of the points of entry, the Pokémon Trainer Club system, augments a legacy profile management service, enabling users to create an account and sign in – not only for Pokémon GO, but for Pokémon Trading Card Game Online, Play! Pokémon, and more.

The legacy profile management service, built on top of a relational database, was capable of supporting existing users, but it could not scale to support the millions of new users expected after launching Pokémon GO. The Pokémon Company International needed a database capable of scaling.

They chose Couchbase Server Enterprise Edition.

Pokémon GO was released in a few countries at a time – from New Zealand, Australia, and the United States to Japan, Germany, Hong Kong and beyond.

This strategy enabled The Pokémon Company International to manage the growth of its infrastructure – incrementally, on demand, and as needed – ensuring that while some people had to wait to create a new account, everyone would have a chance to play.

Why Couchbase Server?

SQL

Couchbase Server 4.0 introduced N1QL, a SQL-based query language for JSON documents, easing the transition from relational databases. The Pokémon Trainer Club system was developed using N1QL, in less than three months, to minimize changes to how the data is modeled and queried in the legacy profile management service, built on top of a relational database.

By using N1QL, developers can transition from a relational database much faster, and when the time is right, optimize how the data is modeled and accessed – utilizing N1QL for queries and the key-value/sub-document APIs for reads and writes.

Scalability

Couchbase Server 4.0 introduced Multi-Dimensional Scaling (MDS), enabling administrators to isolate and scale discrete services (data, query, and index). The Pokémon Trainer Club system, developed using N1QL, happens to produce a query-intensive workload. In the days following the launch of Pokémon GO, administrators were able to scale the query and index services (more than once) rather than scale the entire database – eliminating the need to rebalance or “move the data around,” a process that degrades performance.

Performance

Couchbase Server 4.5 introduced memory-optimized indexes by utilizing an in-memory skip list and persistent snapshots, removing disk IO from the critical path and reducing the latency of both index updates and index scans. The Pokémon Trainer Club system is not only query intensive (many index scans), it is write-intensive (many index updates) – with everyone from the United States to Japan creating accounts.

By taking advantage of memory-optimized indexes and the read-your-own-writes (RYOW) consistency option, indexes were updated faster and queries returned consistent results.

Support and Professional Service

Couchbase was committed to the success of Pokémon GO, with support engineers available 24x7 – working during the day, late into the evening, and through the weekend to ensure a successful launch. When performance issues were identified, the support and engineering teams resolved them without delay; on one occasion delivering a maintenance patch in a matter of days. In addition, support was joined by professional services and solution engineers to help with everything from application architecture and code to deployment and scaling. It was a team effort.

Database Scaling (geometry) Profile (engineering) Relational database NoSQL Couchbase Server

Published at DZone with permission of , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Distributed SQL: An Alternative to Database Sharding
  • PostgreSQL: Bulk Loading Data With Node.js and Sequelize
  • How To Use Terraform to Provision an AWS EC2 Instance
  • Public Cloud-to-Cloud Repatriation Trend

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: