All organizations are challenged to achieve the highest possible utilization of the resources they deploy and the processes they use to manage those resources. Database operations teams feel this pressure acutely. This is especially true in the face of an evolving environment that is pushing them toward a shared services (or DBaaS) model. In these cases any single workload should not jeopardize the operation of the entire cluster or even a few of its adjacent workloads.
Support for multi-tenancy was a design goal for Fauna from the very beginning. As a distributed transactional ACID compliant database, Fauna addresses the scalability pain typical of RDBMS systems and the transactional deficiencies of NoSQL solutions. To achieve this, Fauna includes strong security features including a row-level access control system. Fauna also includes a policy-based workload resource manager. The demo in this blog post shows this workload management functionality and what it means to database operations.
Fauna implements a policy-based workload resource manager that dynamically allocates resources and enforces quality of service (QoS) at the database or client level. Fauna’s approach to transactions and more specifically the deep level of knowledge Fauna has around the work associated with those transactions allows monitoring and scheduling of both IO and compute resources. This means that a priority context can be attached to workloads in the system. For example, a production database can be given a priority of 100 and we could give an analytics database a priority of 10. With these priorities the production database will receive 10x more resources than the developer database when the overall system became constrained. This scheduling or relative throttling of the developer database only comes into play in cases where the system resources are limited.
So what does this look like in practice? The short demo above is an illustration of QoS on a three datacenter Fauna system. In the demo we will show a primary workload running at high priority and a secondary workload at a lower priority. You can see how Fauna dynamically allocates resource between the two workloads and what happens when the workloads change. Take a look and let us know what you think!
If you enjoyed our blog, and want to work on systems and challenges related to globally distributed systems, serverless databases, GraphQL, and Jamstack, Fauna is hiring!