Azure Database for PostgreSQL - Hyperscale (Citus) now generally available
Published Nov 19 2019 08:26 AM 13.8K Views

Azure Database for PostgreSQL Hyperscale (Citus) transforms your Postgres database into a database that you can not only scale up and down, but also scale out horizontally. Powered by the Citus extension, you have all the native capabilities of Postgres including rich JSON support, powerful indexing, an array of datatypesfull text search, geospatial support, and much more. Because Citus is an extension to Postgres and doesn't fork away from the main project this means you can stay current with your Postgres versions without worry about your infrastructure gradually fading into legacy mode. 


With general availability we're announcing support for the following regions: 


  • Americas: 
    • Canada Central 
    • East US 
    • East US 2 
    • North Central US  
    • West US 2 
  • Asia Pacific: 
    • Australia East 
    • Southeast Asia 
  • Europe: 
    • North Europe 
    • UK South 
    • West Europe 


General availability brings the ability to add nodes to your cluster, and then rebalance in a fully online manner. Now scaling out for your data means no down time to reads or writes. 


If you don't see the region you're looking drop us an email to let us know which region you're looking for: 


How it works 


Hyperscale (Citus) allows you to scale out seamlessly by sharding your data under the covers. When sharded, data is spread across multiple physical nodes, each node with its own local storage, memory, and compute. This means you are not sharing state across nodes, everything is fully transactional to each individual node. And for transactions across nodes, Citus allows you to perform those without getting into a bad state due to its distributed deadlock detector. When you shard your data Citus automatically creates co-location groups that allow you to enforce foreign keys, constraints, and easily join your data on your worker nodes without costly repartitioning of data.  


When you issue a query Citus detects whether your query needs to be run across all nodes or target a specific worker node. For example if you're computing an average across all data in your cluster Hyperscale (Citus) would get a set of sums from each node as well as a set of counts from each node. It would pull back those aggregates to the coordinator to do the final calculation there. All this is parallelized across your cluster providing significant performance improvements over single node databases. To get an idea of how this works: 




In contrast, when your operation applies to a single node Citus will rewrite the query plan on the fly to automatically target the single node then execute the query. These types of queries are capable of providing millisecond latencies, making Hyperscale (Citus) for large scale transactional workloads in addition to needing real-time analytics provided across large data sets. You can get an idea of how Citus works for a transactional workload: 




Getting started 


To get started you can head over to the Azure portal and begin by creating a new resource. Once you’ve selected to create a new resource: 


  1. Select Databases from the New page, and select Azure Database for PostgreSQL from the Databases page. 
  2. For the deployment option, click the Create button under Hyperscale (Citus) server group. 
  3. Enter the appropriate details for your cluster, then click configure. 
  4. Here you can configure your number of nodes as well as size of nodes. Then provision. 




With Hyperscale (Citus), we’re giving you a cloud database that you enjoy working with, not one you’re afraid to touch. We know that scaling out relational databases has historically been hard, but we’ve made it so much simpler to scale out. If you have questions about how Hyperscale (Citus) could help you stop worrying about your database and help you scale, then just let us know–we’d be happy to chat and answer any questions you have @AzureDBPostgres.

Version history
Last update:
‎Nov 20 2019 08:17 AM
Updated by: