Database Backends¶
Platzky supports multiple database backends for storing your application data. You can choose the backend that best fits your deployment environment and requirements.
Configuring the Database¶
The database backend is configured in your config.yml file using the DB key:
DB:
TYPE: backend_type
# backend-specific configuration
Available Backends¶
JSON File¶
A simple file-based backend that stores data in a JSON file on the local filesystem.
Use case: Development, testing, or small single-server deployments.
Configuration:
DB:
TYPE: json_file
PATH: data.json
Options:
TYPE: Must bejson_filePATH: Path to the JSON file (relative or absolute)
Advantages:
Simple setup, no external dependencies
Easy to inspect and backup (just a JSON file)
Good for development and testing
Limitations:
Not suitable for high-traffic applications
No concurrent write support
Single point of failure
Google Cloud Storage¶
Stores data as a JSON file in Google Cloud Storage bucket.
Use case: Google App Engine or other Google Cloud deployments where you want simple storage without running a database server.
Configuration:
DB:
TYPE: google_hosted_json_file
BUCKET_NAME: my-bucket
SOURCE_BLOB_NAME: data.json
Options:
TYPE: Must begoogle_hosted_json_fileBUCKET_NAME: Name of the GCS bucketSOURCE_BLOB_NAME: Name of the JSON file in the bucket
Prerequisites:
Application must have Google Cloud credentials configured
Service account must have read/write permissions on the bucket
Advantages:
Automatic backups and versioning (when enabled on bucket)
No database server to manage
Integrates well with Google Cloud Platform
Limitations:
Higher latency than local storage
Costs associated with GCS operations
Not suitable for high-frequency writes
MongoDB¶
A production-ready NoSQL database backend.
Use case: Production deployments requiring scalability, concurrent access, and advanced database features.
Configuration:
DB:
TYPE: mongodb
CONNECTION_STRING: mongodb://localhost:27017/
DATABASE_NAME: platzky
Options:
TYPE: Must bemongodbCONNECTION_STRING: MongoDB connection stringDATABASE_NAME: Name of the database to use
Connection String Examples:
Local MongoDB:
CONNECTION_STRING: mongodb://localhost:27017/
MongoDB Atlas:
CONNECTION_STRING: mongodb+srv://user:pass@cluster.mongodb.net/?retryWrites=true&w=majority
With authentication:
CONNECTION_STRING: mongodb://username:password@localhost:27017/
Advantages:
Production-ready with high availability options
Supports concurrent reads and writes
Automatic indexing and query optimization
Rich query capabilities
Horizontal scaling with sharding
Prerequisites:
MongoDB server (local, Docker, or managed service like Atlas)
pymongopackage (included with Platzky)
Choosing a Backend¶
Development¶
For local development, use the JSON file backend:
DB:
TYPE: json_file
PATH: data-dev.json
This requires no additional setup and is easy to reset.
Google App Engine¶
For Google App Engine, you have two options:
Google Cloud Storage (simpler, good for low-traffic apps):
DB: TYPE: google_hosted_json_file BUCKET_NAME: my-app-data SOURCE_BLOB_NAME: data.json
MongoDB Atlas (better for production):
DB: TYPE: mongodb CONNECTION_STRING: mongodb+srv://user:pass@cluster.mongodb.net/ DATABASE_NAME: myapp
Kubernetes¶
For Kubernetes deployments, use MongoDB:
DB:
TYPE: mongodb
CONNECTION_STRING: mongodb://mongodb-service:27017/
DATABASE_NAME: platzky
Deploy MongoDB in your cluster or use a managed service.
Other Cloud Platforms¶
For AWS, Azure, or other platforms:
Use MongoDB (self-hosted or managed like Atlas)
Or use the JSON file backend with persistent volumes (for small applications)
Database Migrations¶
Currently, Platzky does not include automatic migration tools when switching between database backends. If you need to migrate:
Export data from your current backend
Update configuration to new backend
Import data to new backend
This is an area of active development.
Health Checks¶
All database backends implement health checks that are automatically included in the
/health/readiness endpoint. This allows your orchestration platform (Kubernetes,
App Engine, etc.) to verify database connectivity before routing traffic.