Limitations
While pg_mooncake is powerful, it currently has some limitations. We are actively working on improvements. Community feedback and contributions are welcome! Check our GitHub Issues for more details.
1. Partitioned Tables
Partitioned table support is not yet implemented. Check GitHub Issue #17 for updates.
For columnstore tables, partitioned table is usually not required to get good performance. Since data are naturally 'segmented' into data files and file skipping is performed automatically at query time.
2. DML Triggers
Support for DML (Data Manipulation Language) triggers is currently limited. Trigger on postgres Heap table that writes to ColumnStore table is supported, but not vice versus. Track progress on GitHub Issue #18.
3. Indexes and Keys
Primary and Foreign Keys are not fully supported on ColumnStore tables. This is an area of active development.
4. Small Write Workloads
Current implementation creates a new Parquet file for each small write, which can be inefficient. Specific challenges include:
- Each small write generates a separate Parquet file
- No built-in mechanism for file optimization
Workaround, run a no-op update query: UPDATE T set a=a, this will set your table to optimal state;
5. Storage Backend Support
Currently limited to specific storage providers. Support for Google Cloud Storage (GCS) and Azure Storage is pending.
Want to help? Check our GitHub Issues to:
- Create feature requests
- Report bugs
- Track ongoing improvements