Real-time vs batch data refresh: tradeoffs for event management dashboards

We’re building dashboards for our event management system in AEC 2021 and debating between real-time and batch data refresh strategies. Our dashboards track attendee registrations, check-ins, session attendance, and engagement metrics during live events. The question is whether we need true real-time refresh or if batch updates every 15-30 minutes would be sufficient.

Real-time refresh would give us up-to-the-minute attendee counts and engagement data, which sounds great for large conferences. But I’m concerned about system resource impact - we have hundreds of users accessing dashboards during events, and I don’t want to overload the database. Batch refresh would be lighter on resources but might not show current attendee engagement metrics when we need to make quick decisions during events.

What have others found works best for event scenarios? How do you balance the need for current data against system performance?

The answer splits cleanly across two axes: data velocity requirement (how stale is too stale?) and decision latency (how fast must action follow insight?). For live event operations, those two axes rarely align the same way across all your metric types.

Metric-Level Refresh Requirements

Not all your dashboard data has the same urgency. Map refresh strategy to data type, not to the dashboard as a whole:

Metric Staleness Tolerance Recommended Strategy
Door/gate check-in counts < 2 min Near-real-time (streaming or micro-batch)
Session capacity warnings < 5 min Micro-batch (5–10 min)
Aggregate registration totals 15–30 min Batch
Engagement scores / NPS 30–60 min Batch
Post-event summary reports Hours Scheduled batch

Forcing a single refresh cadence across all metrics is the root cause of both “we’re overloading the DB” and “the data is too stale” complaints simultaneously.

Core Tradeoffs

Real-time / near-real-time refresh

  • Requires persistent connections or polling loops; with hundreds of concurrent dashboard users, connection pool exhaustion is a genuine risk — verify your Adobe Analytics report suite hit limits and any AEC API rate caps in your version.
  • Typically implemented via streaming ingestion pipelines (e.g., Adobe Experience Platform Edge Network, Kafka-backed sources) rather than direct DB polling — the architecture shift is significant.
  • Operationally expensive: failure modes are harder to debug under load; cache invalidation logic adds complexity.

Batch refresh (15–30 min)

  • Predictable resource footprint; easier to schedule around peak access windows.
  • Supports aggregation-heavy queries that would time out under real-time constraints.
  • Acceptable for most strategic decisions, but inadequate for safety-critical scenarios (fire egress counts, capacity overruns).

Hybrid Architecture Pattern

The practical approach for large conferences:

  • Streaming layer: check-in events → lightweight counter store (Redis or equivalent) → dashboard widget via API poll every 60–90 seconds. Isolates DB from raw event volume.
  • Batch layer: aggregated engagement, registration funnels, session attendance summaries on 15–30 min scheduled jobs against your primary data store.
  • Separation of concerns: real-time widgets read from the counter/cache layer; analytical widgets read from the batch-processed layer. Dashboard users see both without either layer cannibalizing the other.

This avoids direct competition between your hundreds of concurrent users and your ingestion pipeline for the same DB connections.

Considerations Before Deciding

  • What is your current AEC data connector and does it support streaming ingestion natively? (verify in your version)
  • Do your SLAs or event safety procedures formally define a maximum acceptable data lag?
  • Is your team staffed to operate a streaming pipeline long-term, or is batch operationally more sustainable?

Ultimately this depends on context / your requirements — specifically, whether any of your metrics cross a threshold where stale data triggers a real operational decision with time pressure under 10 minutes.


This draft is based on general Adobe Experience Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

From a performance perspective, real-time refresh can be problematic at scale. Every dashboard view triggers database queries, and during a live event with hundreds of concurrent users, that creates serious load. We’ve seen database CPU spike to 90%+ during peak event times with real-time refresh enabled. Consider a hybrid approach: real-time for critical operational metrics (current session attendance for room capacity management) and batch for analytical metrics (overall event trends).

We went through this exact decision process last year. Ended up using 5-minute batch refresh for most dashboards and real-time only for the main event monitor dashboard that ops staff watch. The 5-minute delay is barely noticeable for most use cases, and it reduced our database load by about 70%. For attendee engagement metrics specifically, even a 15-minute delay is usually fine unless you’re doing something that requires immediate response like emergency evacuations.

One thing to consider: real-time refresh in AEC 2021 doesn’t use push notifications or websockets - it’s just polling at very short intervals (typically 30 seconds to 2 minutes). So you’re not actually getting instantaneous updates anyway, just frequent polling. That frequent polling is what kills performance. Batch refresh lets you optimize the queries, use materialized views, and schedule refreshes during lower-load moments. The system resource impact difference is huge.

Think about your actual use cases for the data. For registration tracking before the event, batch refresh every hour is fine. During check-in peak times, maybe 5-10 minute refresh for operational dashboards. For post-event analytics, daily refresh is sufficient. You can configure different refresh rates for different dashboards based on their purpose. Don’t use one-size-fits-all. Also, consider using cached aggregates for high-level metrics and real-time queries only for drill-down details that users request explicitly.

From an operational perspective, we found that perceived real-time is more important than actual real-time. If the dashboard shows “Updated 2 minutes ago” with a countdown timer, users feel like they’re seeing current data even with 5-minute batch refresh. We use this approach for attendee engagement metrics - refresh every 5 minutes during the event, every 30 minutes during setup/teardown, and hourly for post-event analysis. The variable refresh rate based on event phase has worked really well and keeps system load manageable.

Let me provide a comprehensive analysis of real-time versus batch refresh tradeoffs, focusing on system resource impact and attendee engagement metrics for event management scenarios.

For real-time versus batch refresh decision-making, start by categorizing your metrics by urgency and usage pattern. Critical operational metrics that drive immediate decisions - current room capacity, check-in queue length, emergency contact needs - justify real-time or near-real-time refresh (1-2 minutes). Tactical metrics used for event adjustments - session popularity, attendee flow patterns, engagement levels - work well with 5-10 minute batch refresh. Analytical metrics for reporting and post-event analysis - total registrations, demographic breakdowns, overall satisfaction scores - need only 30-60 minute refresh or even daily updates.

System resource impact varies dramatically between approaches. Real-time refresh (configured as continuous polling in AEC 2021) generates one database query per metric per dashboard view per refresh interval. With 200 concurrent dashboard users, 10 metrics per dashboard, and 1-minute refresh, you’re executing 2,000 queries per minute. This creates sustained high load on your database server, increases network traffic, and can cause query queueing during peak times. Batch refresh executes queries once per interval regardless of viewer count, then serves cached results to all users. The same scenario with 5-minute batch refresh generates only 10 queries per 5 minutes (one per metric), reducing database load by 99%.

For attendee engagement metrics specifically, consider what decisions depend on this data. If you’re adjusting session room assignments based on real-time attendance, you need frequent updates during session transitions (every 2-5 minutes). If you’re tracking overall event engagement for post-event reporting, 15-30 minute refresh is completely adequate. If you’re monitoring social media engagement or app usage during the event for marketing purposes, 10-minute refresh provides good balance between currency and performance.

Implement a tiered dashboard strategy with different refresh rates. Create an Operations Dashboard with 2-minute refresh for event staff managing logistics - this shows current check-in status, room capacity, and immediate operational metrics. Build an Executive Dashboard with 15-minute refresh for event leadership monitoring overall progress - this shows registration trends, session popularity, and high-level engagement. Develop an Analytics Dashboard with 60-minute refresh for marketing and planning teams - this focuses on demographic analysis, satisfaction trends, and comparative metrics. This tiered approach concentrates system resources where they provide most value.

To minimize system resource impact with batch refresh, use these optimization techniques. First, create materialized views or summary tables for complex metrics rather than calculating them on every refresh. For example, pre-aggregate attendee counts by session and time period rather than counting individual check-in records. Second, schedule batch refreshes to avoid peak database usage times - if possible, run refreshes during lower-load moments between major event activities. Third, use incremental refresh where supported - update only records that changed since the last refresh rather than recalculating everything.

For real-time scenarios where you genuinely need current data, implement smart refresh strategies. Use conditional refresh that only executes queries when data has actually changed - check a last_updated timestamp before running expensive aggregations. Implement user-triggered refresh with rate limiting - let users manually refresh when they need current data, but limit this to once per minute per user to prevent abuse. Use progressive loading where high-level summaries refresh frequently (every 2 minutes) but detailed drill-downs refresh only when explicitly requested.

Address the perceived latency issue with good UX design. Display the last refresh timestamp prominently on each dashboard with a countdown to next refresh. Use visual indicators (color changes, subtle animations) when new data loads so users know the dashboard is active. Provide a manual refresh button with rate limiting for users who need to check current status immediately. Show trend arrows and change indicators that remain visible between refreshes so users can see momentum even with slightly delayed data.

Monitor system resource impact continuously during events. Set up performance dashboards (separate from your event dashboards) that track database CPU usage, query response times, concurrent user counts, and refresh job completion times. Establish thresholds - for example, if database CPU exceeds 70% for more than 5 minutes, automatically extend refresh intervals to reduce load. This dynamic adjustment prevents system degradation during unexpectedly high usage periods.

For attendee engagement metrics calculation, optimize the queries themselves regardless of refresh strategy. Use database indexes on timestamp and status fields that engagement queries filter on. Limit historical data in real-time queries - for current session attendance, query only today’s check-ins rather than the entire event history. Use query result caching at the database level where supported so repeated queries (common with multiple dashboard viewers) return cached results rather than re-executing.

Finally, document your refresh strategy decisions and performance baselines. Record what refresh intervals you chose for each dashboard, the business justification for those choices, and the observed system impact. After each major event, review whether the refresh rates were appropriate - did operations staff complain about stale data, or did the system struggle with load? Use these insights to refine your strategy for future events. This documentation also helps train new team members and justify infrastructure investments if you determine you need more database capacity to support desired refresh rates.