When I work with image data, I keep the original image separate from thumbnails, labels, embeddings, and moderation output. I recommend making each derived artifact traceable back to the source image and model version.
Visual evidence with context
Image data becomes operational only when the picture is connected to ownership, labels, and review state.
How photos become reviewable evidence
Image data becomes operational only when the picture is connected to ownership, labels, and review state.
Storage patterns I would expect
When I talk about "Storage patterns I would expect", I am checking whether Image Data Architecture can be traced back, trusted, and used by someone making a decision.
S3 or Blob or Cloud Storage, PostgreSQL, DynamoDB, MongoDB, OpenSearch, Elasticsearch, vector databases, data lake tables for analytics.
Useful cloud services
| Provider | Typical services |
|---|---|
| AWS | S3, Lambda, Rekognition, SageMaker, OpenSearch, Athena. |
| Azure | Blob Storage, Azure AI Vision, Functions, AI Search, Synapse. |
| Google Cloud | Cloud Storage, Cloud Vision, Dataflow, Vertex AI, BigQuery. |
Public example worth knowing
I use "Public example worth knowing" to keep Image Data Architecture grounded in a real system, because abstract patterns are too easy to agree with and too hard to operate.
Facebook Haystack is the classic public example: Facebook described a storage system designed for billions of photos where object storage, metadata, and retrieval efficiency mattered more than ordinary file system thinking.
A business example
I use "A business example" to keep Image Data Architecture grounded in a real system, because abstract patterns are too easy to agree with and too hard to operate.
An insurance claim app uploads photos. The pipeline keeps the original image, creates a review thumbnail, extracts EXIF time and location when allowed, runs damage detection, and indexes claim id, vehicle id, and detected damage type.
Operational code example
When I show "Operational code example", I want the code in Image Data Architecture to reveal the production decision, not just the syntax.
ClaimRoute routeImage(ImageAsset image) {
if (!image.consentRecorded()) return ClaimRoute.PRIVACY_HOLD;
if (image.moderationScore() > 0.80) return ClaimRoute.MANUAL_REVIEW;
if (image.labelConfidence("damage") < 0.85) return ClaimRoute.NEED_BETTER_PHOTO;
return ClaimRoute.AUTO_ESTIMATE;
}
The routing logic blocks privacy risk first, sends unsafe or uncertain images to review, and only allows automation when the damage label is confident enough.
What I would check first
- Do not put images directly in relational rows.
- Store rights, consent, and retention with the object metadata.
- Separate human review metadata from model generated labels.