Data Sources
Connect to external databases, data warehouses, and cloud storage services. Once configured, these connections are available in your applications, workflows, and workspaces via the STRONGLY_SERVICES environment variable.
Supported Data Source Types
Choose from 14 supported data source types across multiple categories:
| Category | Providers | Use Cases |
|---|---|---|
| Relational | MySQL, PostgreSQL, Oracle, Redshift | Transactional data, structured queries, OLTP systems |
| NoSQL | MongoDB, Redis, Neo4j | Document storage, caching, graph relationships |
| Data Warehouses | Snowflake, BigQuery | Analytics, large-scale queries, business intelligence |
| Vector Databases | Milvus | AI embeddings, semantic search, RAG systems |
| Object Storage | Amazon S3 | File storage, data lakes, backups |
| Generic | JDBC, ODBC | Any JDBC/ODBC-compatible database |
Quick Links
- How to Connect Data Sources
- PostgreSQL Configuration
- MySQL Configuration
- MongoDB Configuration
- Snowflake Configuration
- BigQuery Configuration
- Amazon S3 Configuration
- Redis Configuration
Using Data Sources in Applications
When you connect a data source to your app during deployment, credentials are automatically injected via STRONGLY_SERVICES:
Python Example - PostgreSQL
import os, json
import psycopg2
# Parse STRONGLY_SERVICES environment variable
services = json.loads(os.getenv('STRONGLY_SERVICES', '{}'))
datasources = services.get('datasources', {})
# Get your data source by ID or name
pg_config = datasources['datasource-id-1']
# Connect using credentials
conn = psycopg2.connect(
host=pg_config['credentials']['host'],
port=pg_config['credentials']['port'],
database=pg_config['credentials']['database'],
user=pg_config['credentials']['username'],
password=pg_config['credentials']['password'],
sslmode='require' if pg_config['credentials'].get('ssl') else 'prefer'
)
# Execute queries
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE active = true")
users = cursor.fetchall()
Node.js Example - MongoDB
// Node.js Example - MongoDB
const services = JSON.parse(process.env.STRONGLY_SERVICES || '{}');
const datasources = services.datasources || {};
// Get MongoDB data source
const mongoConfig = datasources['datasource-id-2'];
// Build connection string
const { MongoClient } = require('mongodb');
const url = `mongodb://${mongoConfig.credentials.username}:${mongoConfig.credentials.password}@${mongoConfig.credentials.host}:${mongoConfig.credentials.port}/${mongoConfig.credentials.database}`;
// Connect
const client = new MongoClient(url);
await client.connect();
const db = client.db(mongoConfig.credentials.database);
// Query
const users = await db.collection('users').find({ active: true }).toArray();
Managing Data Sources
View Connection Details
- Click data source name to view details page
- See connection string (passwords masked)
- View metadata: tables, schemas, databases
- Check last tested time and status
Update Credentials
- Click Edit button
- Update host, port, password, or other fields
- Test connection again
- Click Save to apply changes
Usage Tracking
- View usage count and last used timestamp
- See which apps and workflows use this source
- Monitor connection health
Delete Data Source
- Click Delete button
- Confirm deletion (irreversible)
- Apps using this source will lose connection
- Remove from apps before deleting
Security
All credentials are encrypted at rest using AES-256 and encrypted in transit using TLS. Passwords are never displayed in plaintext after initial entry.