Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

How it compares

FerroTERM serves the same FHIR terminology API as the established servers. The difference is the runtime footprint, the stack it needs to operate, and how far along the feature set is. This page sets FerroTERM beside Snowstorm, Ontoserver, and Hermes.

Note

The numbers for the other servers come from their own documentation and published work, cited in docs/architecture.md. FerroTERM’s own figures are measurements over the licensed Dutch SNOMED CT edition on a laptop, and each one links the record that produced it, naming the release it was measured on; see Benchmarks and Hardware sizing.

The servers

  • Snowstorm (SNOMED International): Java on Elasticsearch. The reference server and FerroTERM’s behavioural oracle. Full-featured, and a full International edition deployment wants 16 to 32 GB of RAM plus a search cluster.
  • Snowstorm Lite (SNOMED International): drops Elasticsearch for a single Lucene index and runs the International edition in about 500 MB.
  • Ontoserver (CSIRO): Postgres plus Lucene. A production FHIR terminology server, index-materialized rather than a graph database; the Dutch national terminology server runs it.
  • Hermes (Mark Wardle): Clojure, a memory-mapped store plus Lucene. It serves subsumption in tens of microseconds from a materialized structure, the design point FerroTERM follows in pure Rust.

Side by side

ServerLanguage / runtimeStoreEdition footprintDeploys as
SnowstormJava (JVM)Elasticsearch16 to 32 GB RAMJVM plus a search cluster
Snowstorm LiteJava (JVM)Luceneabout 500 MBJVM service
OntoserverJava (JVM)Postgres plus Luceneserver plus databaseJVM plus Postgres
HermesClojure (JVM)memory-mapped store plus LucenemodestJVM service
FerroTERM 0.1.8Rustredb plus roaring and fst artifacts, read at startup559 to 864 MB on disk, 943 MB to 1.14 GB resident, per SNOMED editionone binary (statically linked on the musl targets) or a distroless image

What FerroTERM trades

FerroTERM is younger. Hierarchical expansion, persisted client resources, Bundle batch, $closure, the SNOMED implicit value sets and implicit concept maps, ECL, the R4, R4B, R5, and R6 endpoints, and XML are served; the persisted resources and the closure tables need a deployment that names a database in FERROTERM_RESOURCES. FerroTERM serves an index built from a finished release, so it authors no SNOMED content and has no syndication client to download one, and MRCM validation of postcoordinated expressions is unscheduled. What it serves, it serves from one binary with signed provenance, over more code systems than the SNOMED-only servers, and with its conformance measured by the HL7 terminology ecosystem suite on every change.

Every production server in this list converges on a materialized index rather than live graph traversal. FerroTERM takes the same shape in pure Rust, with a machine-generated FHIR layer across four versions.