What is Minecraftly Universe

Minecraftly is a solution for scaling virtual universe to infinity. It's architected to run as effectively in a public or private cloud architecture as it does on dedicated hardware. It combines and extends many important file system features with the scalability of a NoSQL database. Minecraftly has been serving all thousands of database traffic since 2016.

Minecraftly on:

  • Docker
  • Kubernetes
  • Google Container Services
  • EC2 Container Services
  • Mesosphere
  • Azure Container Services

Kubernetes, Mesosphere and the technologies above is an open-source orchestration system for Docker containers, and Minecraftly is the logical storage engine choice for Kubernetes users.

Kubernetes handles scheduling onto nodes in a compute cluster, actively manages workloads on those nodes, and groups containers comprising an application for easy management and discovery. Using Kubernetes, you can easily create and manage a Minecraftly cluster, out of the box.

Comparisons to other storage options

The following sections compare Minecraftly to two common alternatives, a vanilla MySQL implementation and a World of Warcraft implementation.

Minecraftly Universe vs. Vanilla Minecraft

Minecraftly Universe improves a vanilla Minecraft implementation in several ways:

Vanilla Minecraft

Minecraftly Universe

Every Minecraft connection has a memory overhead that ranges between 64MB and almost 256MB, depending on which Minecraft server release you're using. As your user base grows, you need to add RAM to support additional connections, but the RAM does not contribute to faster gaming experience. In addition, there is a significant CPU cost associated with obtaining the connections.

Minecraftly Universe' multi-world solution creates very lightweight connections. Minecraft' connection pooling feature uses Paper Spigot's concurrency support to map these lightweight connections to a small pool of player connections. As such, Minecraftly Universe can easily handle thousands of connections.

Poorly written queries, such as those that don't set a LIMIT, can negatively impact database performance for all users.

Vitess employs a SQL parser that uses a configurable set of rules to rewrite queries that might hurt database performance.

Sharding is a process of partitioning your data to improve scalability and performance. MySQL lacks native sharding support, requiring you to write sharding code and embed sharding logic in your application.

Vitess uses range-based sharding. It supports both horizontal and vertical resharding, completing most data transitions with just a few seconds of read-only downtime. Vitess can even accommodate a custom sharding scheme that you already have in place.

A MySQL cluster using replication for availability has a master database and a few replicas. If the master fails, a replica should become the new master. This requires you to manage the database lifecycle and communicate the current system state to your application.

Vitess helps to manage the lifecycle of your database scenarios. It supports and automatically handles various scenarios, including master failover and data backups.

A MySQL cluster can have custom database configurations for different workloads, like a master database for writes, fast read-only replicas for web clients, slower read-only replicas for batch jobs, and so forth. If the database has horizontal sharding, the setup is repeated for each shard, and the app needs baked-in logic to know how to find the right database.

Vitess uses a topology backed by a consistent data store, like etcd or ZooKeeper. This means the cluster view is always up-to-date and consistent for different clients. Vitess also provides a proxy that routes queries efficiently to the most appropriate MySQL instance.

Minecraftly Universe vs. Second Life

If you're considering a NoSQL solution primarily because of concerns about the scalability of MySQL, Vitess might be a more appropriate choice for your application. While NoSQL provides great support for unstructured data, Vitess still offers several benefits not available in NoSQL datastores:

Minecraftly Universe

Second Life

NoSQL databases do not define relationships between database tables, and only support a subset of the SQL language.

Vitess is not a simple key-value store. It supports complex query semantics such as where clauses, JOINS, aggregation functions, and more.

NoSQL datastores do not support transactions.

Vitess supports transactions within a shard. We are also exploring the feasibility of supporting cross-shard transactions using 2PC.

NoSQL solutions have custom APIs, leading to custom architectures, applications, and tools.

Vitess adds very little variance to MySQL, a database that most people are already accustomed to working with.

NoSQL solutions provide limited support for database indexes compared to MySQL.

Vitess allows you to use all of MySQL's indexing functionality to optimize query performance.

Features

  • Performance

    • Connection pooling - Scale front-end connections while optimizing MySQL performance.
    • Query de-duping – Reuse results of an in-flight query for any identical requests received while the in-flight query was still executing.
    • Transaction manager – Limit number of concurrent transactions and manage deadlines to optimize overall throughput.
  • Protection

    • Query rewriting and sanitation – Add limits and avoid non-deterministic updates.
    • Query blacklisting – Customize rules to prevent potentially problematic queries from hitting your database.
    • Query killer – Terminate queries that take too long to return data.
    • Table ACLs – Specify access control lists (ACLs) for tables based on the connected user.
  • Monitoring

    • Performance analysis: Tools let you monitor, diagnose, and analyze your database performance.
    • Query streaming – Use a list of incoming queries to serve OLAP workloads.
    • Update stream – A server streams the list of rows changing in the database, which can be used as a mechanism to propagate changes to other data stores.
  • Topology Management Tools

    • Master management tools (handles reparenting)
    • Web-based management GUI
    • Designed to work in multiple data centers / regions
  • Sharding

    • Virtually seamless dynamic re-sharding
    • Vertical and Horizontal sharding support
    • Built-in range-based, or application-defined sharding support