Skip to main content

PostgreSQL in LibreApps Desktop

The reliable foundation for your application data.

Overview​

PostgreSQL is the primary database for LibreApps Desktop's microservices. It provides a robust, feature-rich, and highly performant relational storage solution that ensures data integrity and consistency.

Usage in Microservices​

Each microservice that requires relational storage has its own dedicated PostgreSQL database (or schema). For example:

  • user_db: Stores user profiles, roles, and permissions.
  • account_db: Stores organization details and subscription info.
  • notification_db: Stores notification history and templates.

Configuration​

Microservices connect to PostgreSQL using Spring Data JPA and Hibernate. Connection details are typically provided in the application.yml:

spring:
datasource:
url: jdbc:postgresql://localhost:5432/user_db
username: user
password: password
jpa:
hibernate:
ddl-auto: validate
show-sql: true

Performance Tuning​

  • Indexing: Ensure that all columns used in WHERE clauses or JOIN operations are properly indexed.
  • Connection Pooling: Use a connection pool like HikariCP (default in Spring Boot) to manage database connections efficiently.
  • Query Optimization: Use tools like EXPLAIN ANALYZE to identify and optimize slow-running queries.

Backup and Recovery​

In a production environment, it is critical to have a robust backup and recovery strategy for your PostgreSQL databases. This typically involves:

  • Daily Backups: Automated full backups of all databases.
  • Point-in-Time Recovery (PITR): Using Write-Ahead Logging (WAL) to recover the database to a specific moment in time.

Best Practices​

  • ✅ Do this: Use meaningful names for your tables and columns.
  • ✅ Do this: Implement foreign key constraints to ensure data integrity.
  • ❌ Don't do this: Use SELECT * in your application code; always specify the columns you need.