I have come to see data as the durable asset behind most software work. Code changes often; the facts, relationships, signals, and decisions captured in data tend to outlive the implementation around them.
Why it matters now
When I talk about "Why it matters now", I am checking whether Everything Data can be traced back, trusted, and used by someone making a decision.
The current shift toward AI, automation, personalization, and real time operations has made data more important than any single application. A recommendation engine needs behavior data. A fraud model needs transaction history. A support agent needs clean product, policy, and customer context. A site reliability team needs logs, metrics, traces, and events to explain what happened.
That is why data is often the most important asset right now: it can be reused across product, operations, risk, compliance, customer experience, and AI, while one application usually serves one narrower workflow.
The quiet truth is that data compounds. A good service can use yesterday's orders to improve inventory, last month's incidents to improve reliability, and years of account history to detect risk. Bad data compounds too. If ownership, quality, privacy, and lineage are ignored, the same data becomes expensive confusion.
Data moves from simple facts to connected context
The harder data gets, the more the system needs context: owner, meaning, quality checks, retention, lineage, access rules, and a clear reason to keep it.
The practical map of data types
| Data type | What it means | Real world example |
|---|---|---|
| Scalar data | Single values such as number, text, boolean, date, amount, or status. | A payment service stores amount, currency, payment status, and captured time. |
| Structured data | Rows and columns with a known schema. | An orders table stores order id, customer id, total, tax, and fulfillment state. |
| Relational data | Data connected through keys and rules. | Order, payment, shipment, refund, and invoice records connect through order id. |
| Semi structured data | Flexible data with shape, usually JSON, XML, or event payloads. | A mobile checkout request includes device type, coupon, experiments, and optional delivery instructions. |
| Unstructured text | Text without a fixed schema. | Support tickets reveal that customers do not understand why a refund is delayed. |
| Image data | Photos, screenshots, scans, diagrams, and visual evidence. | An insurance workflow uses claim photos and adjuster notes to verify damage. |
| Audio data | Recorded speech, sound, music, machine noise, and voice notes. | A contact center reviews call recordings to find why customers abandon an account verification flow. |
| Video data | Moving image data with time, frames, objects, scenes, and often audio. | A warehouse system uses camera footage to investigate whether a package was packed, dropped, or left at the wrong station. |
| Document data | PDFs, Word files, spreadsheets, slides, forms, contracts, policies, and invoices. | A finance workflow extracts vendor name, invoice number, tax amount, and payment terms from PDF invoices and contract documents. |
| Time series data | Measurements ordered by time. | A platform team watches CPU, memory, request latency, and error rate every minute. |
| Event data | Facts that something happened. | An ecommerce system publishes order placed, payment captured, item packed, and shipment created. |
| Geospatial data | Coordinates, shapes, routes, regions, and distance. | A delivery system decides whether an address is inside a service zone and which driver is closest. |
| Graph data | Entities and relationships. | A fraud system links accounts, devices, cards, addresses, and suspicious login paths. |
| Master data | Core business entities that many systems depend on. | A product catalog owns the official product id, name, category, size, and active status. |
| Reference data | Small controlled lists used for consistency. | Country codes, tax categories, currency codes, and account status values. |
| Metadata and lineage | Data that explains other data: owner, source, freshness, meaning, and path. | A dashboard field shows that revenue came from the billing service, was refreshed at 6 AM, and excludes refunds. |
| Derived data | Data calculated from other data. | A daily revenue metric, customer lifetime value, or inventory forecast. |
| Vector data | Numbers that represent meaning for search, similarity, or AI retrieval. | A help center article is embedded so a search can find a refund policy even when the customer uses different words. |
Retail data estate example
Take one checkout platform. The order row is structured data. The customer, payment, and shipment links are relational data. The checkout request is semi structured JSON. The customer complaint is unstructured text. Product photos are image data. Support calls are audio data. Delivery proof recordings are video data. Return labels, invoices, and policy PDFs are document data. Service metrics are time series data. Order events are stream data. The delivery promise uses geospatial data. Fraud checks use graph data. Product catalog is master data. Tax codes are reference data. Dashboard freshness is metadata. Revenue by day is derived data. Support search may use vector data.
That is why data architecture matters. The checkout team cannot manage all of these with one mental model. Each type has a different access pattern, quality risk, storage shape, privacy concern, and cost profile.
Data quality gate example
I use "Data quality gate example" to keep Everything Data grounded in a real system, because abstract patterns are too easy to agree with and too hard to operate.
A useful habit is to classify data assets at the boundary, then attach the controls the shape needs. This sketch keeps the idea small enough to fit into a service catalog or data catalog workflow.
import java.util.List;
enum DataShape {
STRUCTURED,
RELATIONAL,
SEMI_STRUCTURED,
UNSTRUCTURED_TEXT,
IMAGE,
AUDIO,
VIDEO,
DOCUMENT,
TIME_SERIES,
EVENT_STREAM,
GEOSPATIAL,
GRAPH,
MASTER,
REFERENCE,
METADATA,
DERIVED,
VECTOR
}
record DataAsset(
String name,
DataShape shape,
String owner,
String primaryKey,
boolean containsCustomerData) {}
class DataControls {
static List<String> controlsFor(DataAsset asset) {
return switch (asset.shape()) {
case TIME_SERIES -> List.of("retention policy", "rollup rule", "clock source");
case GEOSPATIAL -> List.of("coordinate system", "precision rule", "region boundary owner");
case GRAPH -> List.of("relationship direction", "traversal limit", "abuse review");
case VECTOR -> List.of("model version", "source document id", "refresh policy");
case AUDIO, VIDEO -> List.of("consent rule", "retention policy", "transcript owner");
case DOCUMENT -> List.of("document type", "extraction confidence", "version owner");
case MASTER -> List.of("single owner", "change approval", "downstream contract");
case EVENT_STREAM -> List.of("event id", "schema version", "replay rule");
default -> List.of("owner", "quality check", "lineage", "access policy");
};
}
}
The switch ties each data shape to the controls it needs. The point is that governance should follow the risk and behavior of the data, not one generic checklist.
How to treat data like an asset
- Name the owner. Valuable data without ownership decays.
- Write the meaning. A column called status is not enough; define every valid state.
- Keep lineage. People should know where data came from and what changed it.
- Measure quality. Freshness, completeness, uniqueness, and accuracy need checks.
- Protect access. Data is an asset only when the right people can use it and the wrong people cannot.
- Delete deliberately. Retention is an architecture decision, not a storage accident.