Playbook
Why ERP (Enterprise Resource Planning) MySQL Is Not an Analytics Store (Why Erp Mysql Is Not An Analytics Store)
MySQL written by an internal ERP is operational truth — geographic analysis and wait hotspots need a cleansed analytics store.
Logistics Polyglot Data Platform
Part 1 of 10
Cleansing ERP MySQL into PostGIS, MongoDB for telemetry, and Elasticsearch for search across a polyglot logistics data platform.
Write truth ≠ read truth
In logistics, vehicles, expeditions, and warehouse rows often land in MySQL via an internal ERP. That store is right for invoices and stock — wrong for PostGIS queries, wait heatmaps, and MFE reads.
Internal ERP
↓ writes
MySQL (operational)
↓ cleanse / ETL
PostgreSQL + PostGIS (analytics)
↓ read APIs
Map UI / Wait Geofence / MFEs
This series builds the ABC Logistics polyglot data platform and its clean read contracts for frontends.
Concepts, defined where they first appear
📦 Operational Store
MySQL written by the ERP — right for daily ops, dirty for analytics.
📦 Analytics Store
Cleansed PostgreSQL/PostGIS for geo queries and reporting.
📦 Telemetry Store
Document store (MongoDB) for high-frequency location events.
📦 Search Index
Elasticsearch cluster for cross-entity ops search.
You can teach the pattern without leaking ERP product names or schemas.
Why not query MySQL directly
If the ops map runs analytics queries, ERP locks stretch and reporting becomes a side effect.
Cleansing is mandatory
Null geography, duplicate plates, timezone drift — ETL cuts these before PostGIS.
Frontend contract
Wait geofence and expedition maps only see clean read APIs.
Frontend ↛ MySQL
Frontend → Analysis API → PostGIS/Mongo/ES
The mappings that get confused most often
❌ ERP DB = BI DB
✓ ERP is a write store; BI/GIS are separate
❌ Let the map JDBC into MySQL
✓ Browsers/SPAs never see the operational DB
❌ Cleansing is optional
✓ Dirty geometry breaks geofences
A checklist for auditing your own system
- Which tables are still joined ‘for reports’ on MySQL?
- Where are geo fields mandatory?
- What is the first API layer the frontend sees?
- How is ETL lag shown to operators?
- Where is PII masked?
What to take away from this part
- Separate operational MySQL from analytics PostGIS.
- Frontends consume clean read models only.
- Geofence and heatmaps cannot rest on dirty ERP rows.
Treating the ERP as analytics is mistaking a cash register for a microscope.
FAQ
Frequently asked questions
What is Operational Store?
MySQL written by the ERP — right for daily ops, dirty for analytics.
What is Analytics Store?
Cleansed PostgreSQL/PostGIS for geo queries and reporting.
Is it true that "ERP DB = BI DB"?
ERP is a write store; BI/GIS are separate
What does this part lock in?
This series builds the ABC Logistics polyglot data platform and its clean read contracts for frontends. In logistics, vehicles, expeditions, and warehouse rows often land in MySQL via an internal ERP. That store is right for invoices and stock — wrong for PostGIS queries, wait heatmaps, and MFE reads.
Engineering Principles Learned
- ERP MySQL is write truth, not analytics truth.
- Geographic analysis needs PostGIS (or equivalent).
- SPA/MFE never bind to the operational database.
Continue reading
Continue reading
Next in series
Cleansing Operational Data into PostgreSQL
Cleansing Operational Data into PostgreSQL — a production lesson from an ABC Logistics backend/data platform.
Same series
PostGIS for Fleet and Yard Truth
PostGIS for Fleet and Yard Truth — a production lesson from an ABC Logistics backend/data platform.
Same series
MongoDB for High-Frequency Telemetry
MongoDB for High-Frequency Telemetry — a production lesson from an ABC Logistics backend/data platform.