Our architecture maintains two separate databases for better modularity, security, and maintainability:
balloon_sim.db
Core simulation engine and technical operations
Technology: SQLite
logistics.db
Business operations and inventory management
Technology: PostgreSQL with SQLAlchemy
Adding balloons to simulation requires:
Adding balloons to logistics only requires:
-- Balloon Types
CREATE TABLE balloon_types (
id SERIAL PRIMARY KEY,
manufacturer VARCHAR(100),
model VARCHAR(100),
mass_grams INTEGER,
burst_altitude_m INTEGER,
unit_cost_usd DECIMAL(10,2),
vendor_id INTEGER REFERENCES vendors(id)
);
-- Gas Types
CREATE TABLE gas_types (
id SERIAL PRIMARY KEY,
gas_type VARCHAR(50),
purity_percent DECIMAL(5,2),
cost_per_m3_usd DECIMAL(10,2),
vendor_id INTEGER REFERENCES vendors(id)
);
-- Campaigns
CREATE TABLE campaigns (
id SERIAL PRIMARY KEY,
name VARCHAR(200),
status VARCHAR(50),
start_date DATE,
end_date DATE
);
-- Missions
CREATE TABLE missions (
id SERIAL PRIMARY KEY,
campaign_id INTEGER REFERENCES campaigns(id),
launch_lat DECIMAL(10,6),
launch_lon DECIMAL(10,6),
balloon_type_id INTEGER REFERENCES balloon_types(id)
);
# Simulation Results Table
class SimulationResult:
id: int
timestamp: datetime
config: JSON # Simulation configuration
trajectory: JSON # Flight path data
max_altitude: float
flight_duration: float
landing_location: JSON
status: str
User Creates
Campaign
Logistics
Database
Simulation
Engine
Simulation
Database
Results &
Analysis
/api/simulate
- Bridges logistics mission to simulation/api/results/<id>
- Retrieves simulation results/logistics/api/missions/<id>/simulate
- Triggers simulation/campaign/api/campaigns/<id>/results
- Aggregates results# Simulation Database
python scripts/init_db.py
# Logistics Database
python scripts/init_logistics_db.py
# Logistics (Alembic)
flask db upgrade
# Simulation (Manual)
python scripts/migrate_sim_db.py
# Development
SIMULATION_DB_PATH=./balloon_sim.db
DATABASE_URL=postgresql://user:pass@localhost/logistics_dev
# Production
SIMULATION_DB_URL=postgresql://user:pass@sim-db.example.com/simulations
DATABASE_URL=postgresql://user:pass@logistics-db.example.com/logistics
Aspect | Simulation DB | Logistics DB |
---|---|---|
Access Pattern | Read-heavy, write restricted | Full CRUD operations |
Data Sensitivity | Public/scientific data | Confidential pricing/vendor info |
Compliance | Data integrity focus | SOC2/ISO compliance required |
/api/health
/logistics/api/health
/campaign/api/health