Back to Blog

Vyso Blog

DAM scalability: managing large asset libraries

Updated October 4, 2026
Technical Deep Dives

A digital asset library can have enough storage and still fall behind on processing. It can accept uploads while newly added images are missing from search. Or retrieval can work while duplicate review consumes more staff time each month. These are different capacity problems.

DAM scalability means keeping the library usable as its workload grows. Source bytes, asset records, metadata, indexing, search requests, cleanup and delivery each need to be evaluated. The number of files is only the starting point.

Storage capacity and asset count measure different things

Consider two hypothetical libraries: one million small JPEGs and 10,000 large video masters. The image library creates more logical asset records and individual items to index. The video library can consume more bytes and require longer transfers. Either can be difficult to operate for reasons that total storage alone does not explain.

Each asset also brings context: filenames, generated descriptions, user metadata, collection relationships, timestamps and processing information. The size and usefulness of that metadata corpus matter alongside the source files.

Large deployments exist in the category. An AWS case study about Bynder reports more than 175 million assets and 18 PB of customer data across its customers. Those are aggregate deployment figures, not a benchmark for one workspace or evidence of another DAM's capacity.

For your own library, record both asset count and stored bytes. Include the file-size distribution, media types and metadata volume. A demonstration with a few large files does not test the pressures of millions of asset records.

Ingestion velocity changes the workload

Five million assets already stored and a burst of 100,000 imports in one day are hypothetical examples of different workloads. A stable archive may require relatively little new processing. A smaller library receiving a migration can create sustained work for upload handling, metadata extraction and indexing.

Distinguish total volume from ingestion rate and concurrency. Rate measures how much arrives over time; concurrency measures how many operations run together. File size affects transfer time, while the work triggered by each file affects how quickly it becomes useful.

Plan ordinary uploads and historical imports separately. Confirm upload size limits, storage allowance and supported ingestion methods before designing a migration. A single-file upload endpoint does not by itself establish a supported high-volume import service.

Processing backlogs need their own capacity plan

Depending on the DAM, ingestion may trigger previews, AI descriptions, tags, semantic representations, search indexing and duplicate analysis. Those tasks need processing capacity even after the original file has been stored.

incoming processing work > 
completed processing work
→ backlog grows

An asset count alone cannot describe that backlog. A batch requiring expensive processing creates more work than the same number of files requiring little processing. Measure completion rate and the age of unfinished items as well as the number waiting.

Ask when an asset becomes visible, when descriptive metadata is ready and when search incorporates it. Stored, enriched and indexed are separate states. An upload acknowledgment should not be treated as proof that every downstream task has completed.

Also test recovery after a burst stops. If routine uploads consume all available processing capacity, the backlog has no spare capacity with which to drain. Adding workers can help only where the rest of the processing path and its dependencies support the extra throughput.

Search must scale with the corpus and the query mix

Search performance depends on the index, query implementation, ranking, filters and workload. Library growth does not imply an inevitable slowdown, and a particular architecture does not prove constant latency.

Test several retrieval tasks: finding an exact product identifier, describing a scene, narrowing to a collection and browsing a large result set. Where semantic matching is supported, test it separately from simple text filtering. These operations can use different retrieval paths.

Measure relevance alongside response time. Returning a page quickly is little help if the intended asset is buried among unrelated results. As the library grows, metadata and ranking need to distinguish useful candidates from a larger pool of plausible matches.

Index freshness is another measure. During a large import, search may respond normally while recently uploaded assets are not yet indexed. Record both query latency and the delay before new or changed context becomes retrievable.

API traffic and result size need limits

More users and integrations can generate more asset-list requests, metadata reads, searches and updates without adding many new files. A busy integration therefore creates a different load from storage growth.

Large-library interfaces should request bounded result sets. Loading the entire corpus into one response increases network transfer, client memory and rendering work. Pagination controls the amount returned at once; it does not, by itself, guarantee that every underlying query is efficient.

Test later pages and restrictive filters as well as the first page. Ask whether result counts are exact, how pagination behaves while records change and which limits apply to each endpoint. A paginated asset list does not establish that every search or export endpoint uses the same contract.

Integrations should respect documented rate limits and avoid tight polling loops. Repeatedly requesting unchanged metadata can consume capacity without improving the application. For mutations, verify whether a failed request actually completed before retrying it.

Metadata quality has a maintenance cost

At small scale, a colleague can explain that summer-launch, summer_launch and SL27 refer to the same project. Repeating that inconsistency across a large library creates more search noise and reconciliation work.

Keep a small vocabulary for business identifiers that people actually use. Generated descriptions can provide a baseline for observable content, while supplied context identifies products, projects or selected creative. The guide to AI tagging in DAM explains how that descriptive context enters retrieval.

Do not respond to library growth by making every asset require an exhaustive manual review. Prioritize errors that affect retrieval, identification or downstream use. A process that depends on someone correcting every filename and tag needs a realistic staffing plan.

Scale multiplies maintenance mistakes. Inconsistent terms, orphaned references and redundant exports can become recurring operational work. Evaluate how much human effort each new batch adds, not only how much storage it consumes.

Technical exports can multiply the library

One source image might produce three resized JPEGs, a WebP and a thumbnail. If the source and all five exports become independent library assets, the team has six files to store and distinguish.

100,000 sources
× 6 files per source, including five stored exports
= 600,000 files

This is illustrative arithmetic, not a product benchmark. It shows how storing every technical output can inflate asset count, metadata work and cleanup before any new creative is added.

Where a delivery system can reproduce a representation from a preserved source, a resized or converted output may not need its own permanent asset record. Stable transformation recipes provide another way to manage those outputs. The guide to image effects and adjustments with delivery URLs covers that model.

A manually art-directed mobile composition or retouched campaign image can have independent creative meaning and deserve preservation. Classify those variants before deciding which files are reproducible.

Repeated uploads, exports and migrations also introduce opportunities for duplicate copies. Review exact duplicates and near-identical candidates after identifying authoritative files and meaningful variants. Similar-looking files can still serve different purposes.

Library growth and delivery traffic are separate dimensions

An archive can contain many assets with little public traffic. A small set of product images can receive frequent requests from a busy storefront. The first workload emphasizes library operations; the second emphasizes delivery throughput and transferred bytes.

Delivery testing should distinguish repeated requests for stable representations from requests for new transformation combinations. Cache reuse can reduce repeated work, but a test consisting entirely of already cached outputs does not describe the cost of generating new representations.

Keep a finite set of useful delivery recipes where the application can. Arbitrary widths and adjustment values create more requested representations to process and maintain. The application still chooses appropriate sizes, formats and presentation rules.

Ask for delivery evidence independently of library benchmarks. A large stored asset count says nothing about tested request concurrency or performance during a traffic burst.

Test bulk work alongside ordinary users

An import, metadata update or cleanup batch can affect the same resources used by interactive users. Test whether people can still search, inspect assets and make routine changes while that work runs.

Bulk testing should include interrupted runs and recovery. Determine how the system identifies completed items, reports partial failures and prevents an indiscriminate retry from creating duplicate uploads or repeating a mutation.

Request a demonstration of the largest supported batch, with the limits stated. Distinguish a supported bulk operation from an application script that loops over a single-resource endpoint. Both may be useful, but their failure handling and throughput can differ.

Make incomplete work and failures visible

One failed upload can be noticed manually. In a large migration, accepted files can be overlooked if enrichment or indexing later fails. Reconciliation needs to distinguish transferred files from assets that are ready for retrieval.

Evaluate whether operators can identify incomplete processing, failed items and indexing delays. Ask which failures can be retried, who can trigger the retry and how the system avoids repeating work that succeeded.

Useful operational visibility includes storage growth, request errors, processing completion rate and the age of unfinished work. These are evaluation requirements; each DAM should demonstrate which measurements it actually exposes.

Track end-to-end outcomes too. A healthy upload endpoint does not establish that a newly uploaded asset can be found and used. Test that complete path during sustained ingestion.

Ask for a benchmark with test conditions

A claim such as “handles millions of files” is incomplete without the workload and environment. AWS's load-testing guidance recommends realistic conditions and a production-like environment, and identifies testing isolated components as an inadequate substitute for testing the whole workload.

A useful DAM benchmark should state:

  • Asset count, total bytes, file-size distribution and media types.

  • Metadata volume and whether enrichment and indexing were complete.

  • Query mix, filters, result sizes and pagination depth.

  • Concurrent users and integrations, ingestion rate and batch sizes.

  • Cache state, test duration, infrastructure configuration and software version.

  • Response times, throughput, error rates and time taken for processing to catch up.

Ask for latency distributions as well as averages. A 95th-percentile response time describes the boundary within which 95% of measured responses fall; it helps expose slow requests that an average can conceal. Microsoft's performance-target guidance recommends percentiles when evaluating response time.

Also establish what was tested: one large customer workspace, many smaller workspaces or only object storage. A short demonstration with a warm cache and no ingestion traffic does not represent every production workload.

Where Vyso fits today

Vyso preserves uploaded source assets and adds descriptive context to supported images in the background. Search indexing and semantic-context updates are separate from upload completion. These workflow boundaries allow storage and retrieval readiness to be considered separately.

The asset-list API supports pagination with limit, offset and a cursor, and returns page information including count, total and nextCursor. The documented full-text/hybrid search path is a separate retrieval operation. Those contracts should be tested for the workload an integration will use.

Library Health surfaces duplicate and near-identical candidates for review. Image delivery uses explicit transformation recipes to generate representations from a source, with stable URLs allowing generated variants to be reused. These capabilities address specific library and delivery tasks; they do not establish a tested maximum asset count or constant performance.

For import planning, check the current upload documentation, rate-limit documentation and plan storage allowance. Upload and request limits are deployment-configurable. The API documents 429 responses with Retry-After; integrations should respect that response instead of treating a documented default as available throughput.

Evaluate growth before committing to the rollout

Start with your expected workload and define acceptable outcomes for upload completion, search readiness, interactive retrieval and recovery. Then ask the vendor for evidence:

  • What is the largest single-library workload tested, and can we see the methodology and a relevant production reference?

  • How do search response time and relevance behave while a large import or metadata batch runs?

  • How are backlogs, partial failures and retryable items identified, and how long does recovery take in the tested scenario?

  • Which storage, upload, pagination, request and bulk-operation limits apply? Which are hard limits, configurable settings or operational recommendations?

  • How are generated representations counted and retained, and what delivery workload has been tested separately?

Use a representative pilot to check those answers against ordinary work. Include difficult retrieval tasks, a controlled ingestion burst and failure recovery. Revisit the test when file types, import patterns or integration traffic change, even if asset count grows slowly.

Keep going

Make the media library less work.

See how Vyso brings search, enrichment, cleanup, and delivery into one product.

Start free