Skip to content

[YSQL] Geo-partitioned tables #1958

@ndeodhar

Description

@ndeodhar

Jira Link: DB-1590
Add support for PostgreSQL-style partitions and row-level geo-partitioned tables. Note that table partitioning support is a pre-requisite for row-level geo-partitioning. With this feature, we can control the placement of rows into partitions as well as the physical placement of partitions (into different geographic regions for example). This can help with the following:

  • Reduce latencies by keeping data closer to users
  • Simplify implementing regulatory compliance such as GDPR
  • Tier data (hot / cold, old / new) to appropriate tiers

Prerequisites

Status Feature
Design doc for YSQL table partitioning
⬜️ Design doc for geo-partitioned tables

Phase 1 - Table Partitions

Status Feature
Support creating LIST partitions and basic operations (INSERT, UPDATE, SELECT, DELETE)
Support RANGE and HASH partitions (note these are different from range and hash shards)
Other operations and options on partitions (attach and detaching partitions, sub-partitions)
Support cross-partition UPDATE operations
Port over PostgreSQL unit tests to ensure most features are covered and work as expected

Phase 2 - Geo-partitioning support

Status Feature GitHub Issue Comments
Ability to override placement policy at a per-partition (per-table) level in DocDB - PR #5368
YSQL syntax (Tablespaces) to query/specify placement info for a table #6497, #6638 -

Phase 3 - Further Enhancements

Status Feature GitHub Issue Comments
⬜️ Support a way to read from local partitions first #10477 Main task complete, enhancements in progress
Geo-partitioning support for the transaction status table #9980 Complete
⬜️ Support per-region backup #8732 Backend changes complete, UI changes pending
⬜️ Remove dependency on WHERE clause #11688 -
⬜️ Support unique key constraint across partitions -
⬜️ Support colocation of geo-partitioned tables #5823 -

Analytics

Metadata

Metadata

Assignees

Labels

area/ysqlYugabyte SQL (YSQL)kind/enhancementThis is an enhancement of an existing featurepriority/mediumMedium priority issueroadmap-tracking-issueThis issue tracks a major roadmap item, and usually appears in the roadmap list.

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions