PlanetScale is a company founded by the co-creators of Vitess in early 2018.
While working to help companies like Square, Slack, HubSpot and JD.com use Vitess to meet their scaling needs, we decided to build a company that would expand upon the work we had spent the past decade doing: a company that would build upon Vitess and that would help companies scale, scale and scale their data across clouds and across continents.
At PlanetScale, we are building the operational scaffolding that makes it easy to deploy and operate Vitess clusters at scale. We offer the following paid products and services:
Take a closer look here at what we do.
Vitess is an open-source, industry standard MySQL sharding solution that was first adopted by YouTube. The scale at which YouTube needed to serve its videos was the perfect environment for Vitess to grow into one of the world's foremost open-source database projects.
Now, companies like Square, Slack, HubSpot, GitHub, JD.com, and many of the world’s largest technology companies use and trust Vitess.
PlanetScale’s mission is to help companies scale their relational data using Vitess, and its co-founders are the original creators of Vitess.
PlanetScale is committed to Vitess as an Open Source Project. Our CTO, Sugu, is the chief developer and community leader for Vitess and he will continue in this role. PlanetScale engineers do and will continue to contribute to the Vitess Project.
At PlanetScale, we are building the operational scaffolding that makes it easy to deploy and operate Vitess clusters at scale. We offer our customers the tools and support they need to build horizontally-scalable data systems on premise and in the cloud.
We are committed to keeping the query serving path (based on Vitess and MySQL) open-source so that our customers will never have to fear vendor lock-in.
PlanetScale is a relational database platform that helps companies horizontally scale data in the cloud.
PlanetScale is the perfect solution for companies that:
Let the co-creators and maintainers of Vitess help you get the most out of Vitess.
Traditionally, key-value databases are heralded for having greater scalability than relational databases. In services and applications where data explodes exponentially with popularity (i.e. Facebook, LinkedIn), this scalability is essential.
However, what key-value stores have in scalability they lack in a number of other important features, including SQL protocol compatibility, secondary indexes, joins, and transactions.
PlanetScale’s novel offering, built on Vitess, uses a relational database and offers even greater scalability than key-value stores. At the same time, because of its relational backbone, PlanetScale does not sacrifice the key features that would normally be lost when working with a key-value store.
Essentially, PlanetScale allows you to scale your relational data like a NoSQL database. PlanetScale is a functional superset of a key-value store and also scales horizontally like a key-value store. The PlanetScale solution supports out-of-the-box globally scalable, multi-datacenter deployments.
PlanetScale uses horizontal sharding for scaling write operations. A key feature of Vitess is the vtgate proxy, which allows the application to perceive the horizontally sharded database cluster as if it were just one monolithic database. So while your application continues to run as if you were using just one database, the data can be spread across numerous database clusters.
Sharding is a type of database partitioning that separates very large databases into smaller, faster, more manageable parts called data shards.
There are numerous advantages to this approach:
If you are writing a new application, you can start using PlanetScale Database-as-a-Service right away, as though you are writing to a MySQL database. If you want to migrate from an existing database, we can help through our professional services offering.
PlanetScale uses MySQL as the storage engine and provides MySQL protocol compatibility, so migration can happen quickly and easily without changes to your application.
While each NewSQL vendor has their own API, which makes migration difficult, migration into the PlanetScale platform from MySQL is easy. Your application code remains simple, unaware of sharding complexities, and you can still operate at scale.
If you are migrating from a key-value store or another relational database, you will need to make application changes to support MySQL protocol.
For PlanetScale DBaaS, PlanetScale uses MySQL Community Edition 5.7 with the InnoDB Engine as underlying storage for each shard.
If you are licensing the PlanetScale Cluster Manager Software, you can run it on top of MySQL (Communty/Enterprise/Percona), MariaDB, RDS on AWS, or CloudSQL on GCP.
We configure MySQL to use semi-sync replication. We use anti-affinity to schedule replicas in multiple availability zones. Slack has been running their Vitess cluster in this configuration and is happy with the results.
PlanetScale supports full ACID within a shard. Across shards we support Atomicity and Durability. For cross-shard transactions we allow users to choose between two consistency models: best effort and 2PC. We do not support cross-shard Isolation. Most of our customers, including those in financial industries, find these tradeoffs acceptable.
PlanetScale ensures high availability by quickly promoting a replica to a master, if a master goes down. The replica is guaranteed to have all the data from old master because we run all replicas in the semi-sync mode.
MySQL and PostgreSQL do not scale beyond a single node. The PlanetScale platform, however, can scale indefinitely using horizontal sharding. The platform is built on top of Vitess.io, which is a sharding middleware layer that sits on top of MySQL.
We do not support Postgres protocol or the Postgres database as the underlying storage at the moment, but it is on the medium-term roadmap.
PlanetScale supports the MySQL protocol. As far as your application is concerned, the PlanetScale DBaaS, based on Vitess, acts like a monolithic MySQL database. You can continue to use the tools or libraries that you currently use to access your MySQL databases.
Well, get in touch then.