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.

Logistics polyglot data platform diagram

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

  1. Which tables are still joined ‘for reports’ on MySQL?
  2. Where are geo fields mandatory?
  3. What is the first API layer the frontend sees?
  4. How is ETL lag shown to operators?
  5. Where is PII masked?

What to take away from this part

  1. Separate operational MySQL from analytics PostGIS.
  2. Frontends consume clean read models only.
  3. 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

Same series

Same series

Paylaş