Skip to main content

Performance

This page summarizes the tuning decisions that most affect the Ed-Fi OneRoster® service's response times and ODS load. Measured latency and throughput numbers, the reference dataset, and the Vegeta input files used to reproduce a run are maintained with the service code at tests/README.md. They rot quickly as the service, the ODS schema, and the Data Standard evolve, so this page intentionally does not restate them.

What tends to dominate response time

Two endpoints do most of the work at refresh time and at read time:

  • /enrollments spans every staff-section and student-section association in the ODS and grows with enrolled population.
  • /users joins across students, staff, contacts, and their school and education-organization associations.

Plan refresh budgets and collection-read SLAs around these two. The remaining endpoints are comparatively cheap.

Operational guidance

  • Refresh cadence. The 15-minute default (PGBOSS_CRON on PostgreSQL, SQL Server Agent on SQL Server) balances ODS load against consumer freshness expectations. Dropping below 5 minutes is possible on dedicated database hardware but increases ODS-side CPU.
  • Client access pattern. Full-collection reads of /enrollments and /users are the most expensive. Where possible, consumers should read /orgs once, then request only the slices they need via filter and fields. See Query parameters.
  • Sizing. Published numbers are from a laptop-class reference run. A statewide deployment should re-measure on its target hardware and data profile before committing to cadence or an SLA.