Warum der Ausgangspunkt wichtig ist
Bevor wir FHIR-Server unter Last vergleichen, benötigen wir einen sauberen Ausgangspunkt. Der Baseline zeigt uns, wie sich die Systeme bei einer leeren (oder nahezu leeren) Datenbank verhalten, und liefert uns eine Referenz fĂŒr alles, was spĂ€ter folgt â wenn Datenvolumen und Traffic zunehmend eine Rolle spielen.
Wie in unserem vorherigen Beitrag erlĂ€utert, konzentrieren wir uns auf die grundlegenden FHIR-Workloads: CRUD, Bundle-Verarbeitung und Suche. Der gesamte Benchmark ist Open Source â der Quellcode, das Test-Framework und die Ergebnisse befinden sich alle in github.com/HealthSamurai/fhir-server-performance-benchmark, und der Lauf wird tĂ€glich neu ausgefĂŒhrt, sodass der interaktive Bericht (jedes Diagramm plus die Rohdaten) stets die aktuellen Zahlen widerspiegelt. Die in diesem Beitrag zitierten Zahlen stammen aus dem Lauf vom 28. Juni 2026; der Live-Bericht ist die maĂgebliche Quelle.
Wir testen vier FHIR-Server: Aidbox, HAPI FHIR, Medplum und den Microsoft FHIR Server. Sie umspannen drei verschiedene Laufzeitumgebungen und zwei verschiedene Datenbanken. Aidbox und HAPI laufen beide auf der JVM mit PostgreSQL; Medplum lĂ€uft auf Node.js, ebenfalls mit PostgreSQL; und der Microsoft FHIR Server lĂ€uft auf .NET und ist beim Speicher die Ausnahme â er unterstĂŒtzt kein PostgreSQL, weshalb wir die neueste Version des Microsoft FHIR Servers auf SQL Server betreiben.
| Server | Code-Basis | Laufzeit | Datenbank |
|---|---|---|---|
| Aidbox | Closed Source | JVM (Clojure) | PostgreSQL |
| HAPI FHIR | Open Source | JVM (Java) | PostgreSQL |
| Medplum | Open Source | Node.js | PostgreSQL |
| Microsoft FHIR Server | Open Source | .NET (C#) | SQL Server |
Der Microsoft FHIR Server ist die neueste ErgĂ€nzung des Benchmarks, und die nachfolgenden Ergebnisse schlieĂen ihn nun gemeinsam mit den drei PostgreSQL-basierten Servern ein.
Testumgebung
Unsere Tests laufen auf einem einzigen Bare-Metal-Rechner mit 64 CPU-Kernen und 500 GB RAM. Der gesamte Stack wird mit Docker Compose orchestriert, und Ressourcen sind pro Container fixiert, damit der Vergleich fair bleibt:
| Server | Image | CPU / RAM | Topologie |
|---|---|---|---|
| Aidbox | healthsamurai/aidboxone:edge | 8 vCPU / 24 GB | Einzelinstanz (JVM) |
| HAPI FHIR | hapiproject/hapi:latest | 8 vCPU / 24 GB | Einzelinstanz (JVM) |
| Medplum | medplum/medplum-server:latest | 1 vCPU / 3 GB je Instanz | 8 Replikate (Node.js) |
| Microsoft FHIR Server | mcr.microsoft.com/healthcareapis/r4-fhir-server:latest | 8 vCPU / 24 GB | Einzelinstanz (.NET) |
Jeder Anwendungsserver erhĂ€lt dasselbe Budget: 8 vCPU und 24 GB RAM. Medplum erreicht dies auf anderem Weg â seine Node.js-Laufzeitumgebung ist single-threaded, sodass ein einzelner Prozess keine 8 Kerne nutzen kann; der Server wird daher als 8 Replikate mit je 1 vCPU / 3 GB skaliert (insgesamt 8 vCPU und 24 GB), um unter gleichen Bedingungen anzutreten. Medplum benötigt zusĂ€tzlich Redis fĂŒr Sitzungen und Caching, was die anderen Server nicht erfordern.
FĂŒr die drei PostgreSQL-basierten Server bildet PostgreSQL 18 (8 vCPU / 30 GB) die Datenbankschicht, die ĂŒber den gesamten Stack gemeinsam genutzt, jedoch durch ein Datenbankmodell pro Server isoliert wird, sodass der Speicher oder die Abfragelast eines Servers die anderen nicht beeinflusst. Der Microsoft FHIR Server kann nicht auf PostgreSQL betrieben werden und erhĂ€lt daher seinen eigenen dedizierten SQL Server 2022 (Developer Edition) mit demselben Budget von 8 vCPU / 30 GB â das SQL-Server-Pendant zum gemeinsam genutzten Postgres. Da die Suiten sequenziell ausgefĂŒhrt werden, ist jeweils nur ein Anwendungsserver und seine Datenbank aktiv. Alles lĂ€uft auf lokalem NVMe-SSD-Speicher, um Netzwerklatenz aus den Ergebnissen zu eliminieren und den Datensatz nahe am Server zu halten.
FĂŒr die Lastgenerierung verwenden wir Grafana k6, das die Szenarien sequenziell ausfĂŒhrt (VorwĂ€rmphase â CRUD â Import â Suche). FĂŒr synthetische Daten setzen wir Synthea ein, da es realistische Muster von Gesundheitsdaten erzeugt. CPU-, Speicher- und I/O-Daten pro Container werden mit cAdvisor erfasst, wĂ€hrend Datenbank-Interna von postgres-exporter (fĂŒr die PostgreSQL-Server) und mssql-exporter (fĂŒr den SQL Server des Microsoft FHIR Servers) stammen. All diese Daten werden von Prometheus aggregiert und in Grafana visualisiert â dieselben Metriken, die den nachfolgenden Diagrammen zugrunde liegen. VollstĂ€ndige Details finden sich auf der Infrastrukturseite des Berichts.
Ein Hinweis zur Fairness. Wir entwickeln Aidbox und kennen ihn daher naturgemÀà am besten. Wir sind keine Experten fĂŒr HAPI FHIR, Medplum oder den Microsoft FHIR Server, und es ist durchaus möglich, dass unsere Konfiguration fĂŒr diese Server nicht optimal ist. Unser Ziel war das Gegenteil von selektiver Auswahl: die Hardware-Auslastung maximieren und jedem Server möglichst gleiche Ressourcen zur VerfĂŒgung stellen. Das gesamte Setup ist aus genau diesem Grund Open Source â wenn Sie wissen, wie einer dieser Server besser konfiguriert werden kann, wĂŒrden wir das gerne erfahren. Eröffnen Sie ein Issue oder einen Pull Request im Benchmark-Repository, und der tĂ€gliche Lauf wird Ihre Ănderungen ĂŒbernehmen.
Test-Suiten und Szenarien
Performance-Tests sind entscheidend, um das Systemverhalten unter Last zu verstehen. FĂŒr diesen Baseline-Test fĂŒhren wir drei Suiten in dieser Reihenfolge aus:
- CRUD auf einer leeren Datenbank
- Messung der Create-, Read-, Update- und Delete-Performance bei einer frischen Installation
- Batch-Import (1.000 Patienten)
- DurchfĂŒhrung eines Batch-Imports von 1.000 synthetischen (Synthea) PatientendatensĂ€tzen sowie Messung von Durchsatz und Speicherbedarf
- Suche
- Bewertung der Such-Performance gegen den importierten Datensatz
Dies liefert uns einen sauberen Referenzpunkt. GröĂere DatensĂ€tze und inkrementelle Last â bei denen Schreibdegradierung und komplexe Abfragen zunehmend relevant werden â sind Gegenstand der nĂ€chsten BeitrĂ€ge in dieser Serie.
Baseline-CRUD-Performance
Die CRUD-Suite enthĂ€lt sequenzielle Create-, Read-, Update- und Delete-Operationen ĂŒber neun verschiedene FHIR-Ressourcen: Patient, Location, Practitioner, Organization, Encounter, MedicationRequest, Observation, Claim und ExplanationOfBenefit. Die Suite lĂ€uft mit konstant 300 parallelen Threads fĂŒr bis zu 5 Minuten.
Wir ermitteln Baseline-Metriken anhand des durchschnittlichen RPS ĂŒber alle Iterationen.
Durchschnittlicher Durchsatz (RPS) ĂŒber alle CRUD-Operationen (höher ist besser)
| Server | Gesamter CRUD-Durchsatz (RPS) |
|---|---|
| Aidbox | 5.212 |
| HAPI | 3.058 |
| Medplum | 1.420 |
| Microsoft FHIR Server | 440 |
Durchschnittliche Latenz (99. Perzentil) nach Operation (niedriger ist besser)
| Operation | Aidbox | HAPI | Medplum | Microsoft |
|---|---|---|---|---|
| Create | 106 ms | 276 ms | 758 ms | 1.180 ms |
| Read | 91 ms | 225 ms | 404 ms | 379 ms |
| Update | 110 ms | 271 ms | 626 ms | 1.233 ms |
| Delete | 93 ms | 239 ms | 647 ms | 1.064 ms |
Auf Basis dieser Ergebnisse liefert Aidbox etwa 70 % mehr Durchsatz als HAPI und rund 3,7-mal mehr als Medplum. Der Microsoft FHIR Server liegt in dieser Suite weit zurĂŒck bei 440 RPS â mehr als eine GröĂenordnung unterhalb von Aidbox. Bei der Latenz ist Aidbox beim 99. Perzentil etwa 2,5-mal schneller als HAPI und 6-mal schneller als Medplum. Der Microsoft FHIR Server ist ein interessanter Fall: Seine LesevorgĂ€nge sind schnell (379 ms p99, sogar vor Medplum), aber seine SchreibvorgĂ€nge sind die langsamsten der Gruppe (~1,2 s p99 bei Create und Update), was seinen Gesamtdurchsatz nach unten zieht.
Ein wichtiger Hinweis beim Lesen dieser Zahlen: Die Durchsatz-Differenz (â70 % gegenĂŒber HAPI) ist geringer als die Latenz-Differenz (â2,5-fach). Unter hoher ParallelitĂ€t kann ein Server den Gesamtdurchsatz aufrechterhalten, indem er viele Anfragen gleichzeitig verarbeitet, auch wenn jede einzelne Anfrage langsamer ist. Daher bewegen sich Tail-Latenz und Gesamt-RPS nicht zwingend parallel â ein Einzelzahlvergleich kann verbergen, welcher Aspekt fĂŒr eine bestimmte Arbeitslast tatsĂ€chlich entscheidend ist.
Durchschnittliche Latenz ĂŒber alle Operationen (99. Perzentil) nach RessourcengröĂe (niedriger ist besser)
Das Diagramm zeigt, dass Aidbox eine leichte Korrelation zwischen Latenz und RessourcengröĂe aufweist, die am deutlichsten bei der Verarbeitung von Encounter-, Patient- und ExplanationOfBenefit-Ressourcen erkennbar ist. HAPI zeigt ĂŒber verschiedene RessourcengröĂen eine gleichmĂ€Ăigere Latenz, wĂ€hrend Medplum und der Microsoft FHIR Server bei SchreibvorgĂ€ngen einheitlich hohe Werte aufweisen. Wir beobachten zudem einen interessanten AusreiĂer bei der Patient-Verarbeitung durch Medplum (sein Create-p99 springt auf ~1,16 s, gegenĂŒber ~560â830 ms bei anderen Ressourcen), was darauf hindeutet, dass fĂŒr die Patient-Ressource spezifisch zusĂ€tzliche Verarbeitungsschritte stattfinden.
Batch-Verarbeitung
Zur PrĂŒfung der Batch-VerarbeitungskapazitĂ€ten verwendeten wir einen Datensatz von 1.000 synthetischen PatientendatensĂ€tzen, die mit Synthea generiert wurden (insgesamt rund 2 Millionen Ressourcen). Die generierten FHIR-Bundles variieren in der GröĂe, von kleinen Bundles mit etwa 150 KB bis hin zu groĂen mit bis zu 120 MB und bis zu 50.000 Ressourcen in einem einzelnen Bundle. Jedes Bundle hat den Typ transaction. Um den Test realistischer und praxisnĂ€her zu gestalten, haben wir 20 parallele Threads zur Verarbeitung dieser Bundles eingesetzt.
Durchschnittlicher Durchsatz (Ressourcen pro Sekunde) nach Server (höher ist besser)
| Server | Import-Durchsatz (Ressourcen/Sek.) |
|---|---|
| Aidbox | 2.678 |
| HAPI | 2.214 |
| Medplum | 764 |
| Microsoft FHIR Server | 448 |
Bei der Batch-Verarbeitung fĂŒhren Aidbox und HAPI und wechseln sich zwischen den LĂ€ufen an der Spitze ab â in diesem Lauf liegt Aidbox vorne und verarbeitet 2.678 Ressourcen pro Sekunde gegenĂŒber HAPIs 2.214 (etwa 21 % schneller). Medplum liegt mit 764 Ressourcen pro Sekunde deutlich hinter beiden, und der Microsoft FHIR Server ist mit 448 Ressourcen pro Sekunde der langsamste â ungefĂ€hr 5â6-mal langsamer als die beiden JVM-Server.
DatenbankgröĂe nach Server (niedriger ist besser)
Beim Speicherbedarf spreizen sich die vier Server am stĂ€rksten auf, in zwei grobe Lager. Der Microsoft FHIR Server (4,24 GB) und Aidbox (6,83 GB) bleiben kompakt; Medplum (11,8 GB) und HAPI (22,6 GB) sind deutlich gröĂer â HAPIs Footprint ist etwa 3,3-mal so groĂ wie der von Aidbox. Die zwei kompakten Server erreichen dies auf unterschiedliche Weise: Aidbox dadurch, dass keine Indizes vorab aufgebaut werden, der Microsoft FHIR Server durch seinen SQL-Server-Datenspeicher â allerdings zahlt der Microsoft-Server dafĂŒr, wie oben gesehen, anderswo seinen Preis, nĂ€mlich bei langsamen SchreibvorgĂ€ngen und Suchen. Auf den Index-Kompromiss gehen wir im Fazit noch einmal ein.
Such-Suite
Das umfassende Benchmarking der SuchfunktionalitĂ€t in einem FHIR-Server ist aus mehreren GrĂŒnden eine komplexe Aufgabe:
- FHIR verfĂŒgt ĂŒber eine umfangreiche Menge an Suchparametern, was einen vollstĂ€ndigen Benchmark zeitaufwendig macht.
- Es gibt viele Kombinationen aus Suchparametertyp und Wertetyp.
- Auf Suchen können verschiedene Modifier und PrÀfixe angewendet werden.
- Es gibt komplexe Operationen wie Joins (
_include,_revinclude,_has, verkettete Suchen) und Sortierung. - Die Anzahl möglicher Suchparameter-Kombinationen ist enorm.
Da das Testen jeder möglichen Suchparameter-Kombination unpraktikabel ist, konzentrieren wir uns auf die am hĂ€ufigsten verwendeten Suchparameter. Dies liefert uns ein solides BasisverstĂ€ndnis davon, wie effizient jeder Server seine Suchlogik implementiert. Wir konzentrieren uns auf Standard-FHIR-R4-Suchparameter, die in der Praxis hĂ€ufig verwendet werden und fĂŒr die entsprechende Daten in unserem synthetischen Datensatz vorhanden sind â und decken dabei sechs Familien ab: String, Datum, Referenz, Quantity, Token und FHIR-Composite-Parameter.
Wir fĂŒhren die Suite mit 30 parallelen Threads (k6-VUs) fĂŒr 2 Minuten aus und verwenden eine feste SeitengröĂe von 20 Ergebnissen (_count=20). Da Suchoperationen groĂe Ergebnismengen zurĂŒckgeben können, schlieĂen wir die Ăbertragungszeit und das Parsing der Antwort von den Messungen aus, indem wir die k6-Einstellung discardResponseBodies: true aktivieren â wir konzentrieren uns ausschlieĂlich auf die Server-Antwortzeit, nicht auf FHIR-KonformitĂ€t. Alle Suchfamilien laufen gemischt in einer einzigen Iteration statt sequenziell, was dem realen Einsatz nĂ€herkommt. Jede Familie sendet zudem einen absichtlich nicht treffenden Wert (eine nicht existierende ID, einen Code oder einen Namen), um den Pfad bei leeren Ergebnissen zu prĂŒfen, und Referenzwerte werden unmittelbar vor dem Lauf live von jedem Server (echte Ressourcen-IDs) abgerufen.
Ein Vorbehalt ergibt sich aus dem Verwerfen der Antwort-Bodies: Wir messen die Antwortzeit, nicht die Korrektheit. Ein Server, der einen Anfragetyp fehlerhaft behandelt â indem er schnell einen Fehler oder ein ungefiltertes Ergebnis zurĂŒckgibt â kann kĂŒnstlich schnell wirken. Wir kennzeichnen den einen Fall, den wir gefunden haben (Medplums Composite-Suche, siehe unten), aber dieselbe Skepsis gilt generell: Behandeln Sie jede ungewöhnlich niedrige Latenz fĂŒr einen bestimmten Server und Typ als etwas, das anhand der Live-Ergebnisse ĂŒberprĂŒft werden sollte, anstatt es fĂŒr bare MĂŒnze zu nehmen.
Die von uns geprĂŒften Parameter:
| Suchtyp | Ressource | Parameter |
|---|---|---|
| String | Patient | name, address (mit :contains) |
| String | Organization | name (mit :contains) |
| Datum | Patient | birthdate |
| Datum | Observation | date |
| Datum | Encounter | date |
| Referenz | Observation | subject, encounter, performer |
| Referenz | Encounter | subject, participant |
| Referenz | MedicationRequest | subject, encounter, requester |
| Quantity | Observation | value-quantity, component-value-quantity, combo-value-quantity |
| Token | Observation | category, code |
| Token | Encounter | status, class |
| Composite | Observation | code-value-quantity, component-code-value-quantity, combo-code-value-quantity |
Datums- und Quantity-Suchen wechseln durch PrÀfixe (eq, lt, gt, ge, le; Datumssuchen ergÀnzen zusÀtzlich sa und eb). String-Suchen verwenden den :contains-Modifier. Token-Suchen umfassen einfaches [code], vollqualifiziertes [system]|[code] sowie kommagetrennte ODER-Listen. Composite-Suchen verwenden FHIR-Composite-Parameter mit dem $-Separator (zum Beispiel code-value-quantity=8867-4$gt100).
Suchergebnisse
Gesamter Such-Durchsatz (RPS, höher ist besser)
| Server | Such-Durchsatz (RPS) |
|---|---|
| Aidbox | 3.404 |
| Medplum | 1.796 |
| HAPI | 1.005 |
| Microsoft FHIR Server | 261 |
P99-Latenz nach Suchtyp (ms, niedriger ist besser)
| Suchtyp | Aidbox | Medplum | HAPI | Microsoft |
|---|---|---|---|---|
| String | 24 | 81 | 77 | 188 |
| Datum | 26 | 82 | 121 | 271 |
| Referenz | 24 | 83 | 96 | 167 |
| Token | 32 | 82 | 97 | 197 |
| Quantity | 55 | 91 | 101 | 1.191 |
| Composite | 47 | â | 125 | 1.897 |
Das Diagramm zeigt alle vier Server. Die p99-Werte des Microsoft FHIR Servers bei Quantity (~1,2 s) und Composite (~1,9 s) sprengen die Skala und drĂŒcken die drei PostgreSQL-Server zu kurzen Balken nahe der Basislinie zusammen â die genauen Werte finden sich in der Tabelle oben. Medplum fehlt in der Composite-Gruppe, da dieser Suchtyp nicht unterstĂŒtzt wird (siehe unten).
Die Reihenfolge Ă€ndert sich im Vergleich zu CRUD. Bei der Suche fĂŒhrt Aidbox den Durchsatz mit 3.404 RPS an â etwa 90 % mehr als Medplum (1.796 RPS) und rund 3,4-mal mehr als HAPI (1.005 RPS). Der Microsoft FHIR Server liegt mit 261 RPS weit zurĂŒck. Bemerkenswert ist, dass HAPI â der bei CRUD noch auf dem zweiten Platz lag â bei der Suche der langsamste der drei PostgreSQL-Server ist, sowohl beim Durchsatz als auch bei der Tail-Latenz.
Bei der Latenz erzielt Aidbox bei jeder Suchfamilie den niedrigsten p99-Wert. Medplum liegt durchgehend im Mittelfeld â mit Ausnahme der Composite-Suche, die nicht unterstĂŒtzt wird (siehe den Hinweis unten). Unter den Postgres-Servern ist HAPIs Latenz die höchste und bewegt sich ĂŒber die Familien hinweg zwischen etwa 95 und 125 ms. Der Microsoft FHIR Server befindet sich in einer völlig anderen GröĂenordnung: Bei String-, Datums-, Referenz- und Token-Suchen tolerierbar (~170â270 ms), aber extrem langsam bei Quantity- (~1,2 s) und Composite-Suchen (~1,9 s) â genau das ist es, was seinen Such-Durchsatz so niedrig hĂ€lt.
Medplum unterstĂŒtzt keine Composite-Suche. Medplums Dokumentation zur Sucharchitektur listet den FHIR-
composite-Parametertyp als nicht unterstĂŒtzt auf. Im Benchmark kehren diese Anfragen zurĂŒck, ohne dass die Suche ausgefĂŒhrt wird; daher ist jede dabei gemessene Latenz oder jeder Durchsatz ein Artefakt und keine echte Messung â weshalb Medplum in frĂŒheren EntwĂŒrfen bei Composite-Suchen scheinbar âalle ĂŒbertraf". Wir lassen daher Medplums Composite-Zelle leer und schlieĂen ihn aus dem Diagramm aus. Die Quantity-Suche hingegen wird von Medplum unterstĂŒtzt, sodass diese Zahlen gĂŒltig sind.
Ein Hinweis zum Umfang: Dieser Baseline-Test schlieĂt keine Sortierung (_sort) oder Join-Operationen (_include, _revinclude, _has, verkettete Suchen) ein. Diese sind erst bei zunehmendem Datenvolumen besonders aussagekrĂ€ftig â bei einem Datensatz mit 1.000 Patienten passt fast alles in den Speicher â, weshalb wir sie bei gröĂeren DatensĂ€tzen in einem spĂ€teren Beitrag ergĂ€nzen.
Fazit
Auf einem sauberen, gröĂtenteils im Speicher gehaltenen Baseline sieht die Rangfolge wie folgt aus â sie verschiebt sich leicht zwischen den tĂ€glichen LĂ€ufen, daher sind diese Ergebnisse als Momentaufnahme zu verstehen, nicht als endgĂŒltiges Urteil:
- CRUD â Aidbox fĂŒhrt beim Durchsatz (5.212 RPS) vor HAPI (3.058) und Medplum (1.420) und weist bei jeder Operation die beste p99-Latenz auf (~100 ms gegenĂŒber ~250 ms fĂŒr HAPI und ~610 ms fĂŒr Medplum). Der Microsoft FHIR Server liegt mit 440 RPS zurĂŒck, mit schnellen LesevorgĂ€ngen, aber ~1,2 s Schreiblatenz.
- Batch-Import â Aidbox fĂŒhrt die Ingestion in diesem Lauf an (2.678 gegenĂŒber HAPIs 2.214 Ressourcen/Sek.); Medplum liegt deutlich dahinter (764), und der Microsoft FHIR Server ist am langsamsten (448).
- Suche â Aidbox fĂŒhrt sowohl beim Durchsatz (3.404 RPS) als auch bei der Latenz pro Abfrage; HAPI fĂ€llt unter den Postgres-Servern auf den letzten Platz, und der Microsoft FHIR Server liegt beim Durchsatz (261 RPS) weit zurĂŒck, bedingt durch sehr langsame Quantity- und Composite-Abfragen.
- Speicher â Zwei Lager: Der Microsoft FHIR Server (4,24 GB) und Aidbox (6,83 GB) sind kompakt, wĂ€hrend Medplum (11,8 GB) und HAPI (22,6 GB) gröĂer sind â HAPIs Footprint ist etwa 3,3-mal so groĂ wie der von Aidbox.
Indexierungsstrategie: ein Kompromiss, den dieser Baseline nur halb misst
Die Speicher- und Import-Zahlen folgen direkt daraus, wie jeder Server Daten speichert und indiziert â und diese Entscheidung ist ein Kompromiss, kein Urteil.
HAPI, Medplum und der Microsoft FHIR Server bauen beim Schreiben von Daten vorab Indizes auf durchsuchbaren Feldern auf. Das kostet Schreibdurchsatz, und bei HAPI und Medplum auch Speicherplatz (die oben genannten 12â23 GB). Der Microsoft FHIR Server zeigt, dass die Speicherkosten nicht unvermeidlich sind â er baut Indizes vorab auf und bleibt trotzdem bei 4,24 GB â, zahlt dafĂŒr aber stark bei der Schreiblatenz.
Aidbox wĂ€hlt den entgegengesetzten Standard, was beide Seiten hat. Es werden standardmĂ€Ăig keinerlei Suchindizes ausgeliefert â das macht seine Imports schnell und seinen Footprint klein, bedeutet aber auch, dass eine unindizierte Abfrage auf einen Sequential Scan zurĂŒckfĂ€llt und die Verantwortung fĂŒr die Indizierung auf Sie ĂŒbergeht. Das ist keine triviale Aufgabe: Sie mĂŒssen wissen, welche Suchparameter Ihre Arbeitslast tatsĂ€chlich nutzt, und eine ĂŒbermĂ€Ăige Indizierung bringt genau die Schreib- und Speicherkosten zurĂŒck, die wir gerade beschrieben haben. Was Aidbox anstelle vorgebauter Indizes bietet, ist das Werkzeug, dies gezielt umzusetzen â Query-Analysen, Statistiken dazu, welche Suchparameter tatsĂ€chlich verwendet werden, und Index-Empfehlungen, die aus dem realen Traffic abgeleitet werden. Richtig eingesetzt ermöglicht dies eine prĂ€zise Indizierung fĂŒr Ihre Arbeitslast mit sowohl schnellen Operationen als auch einem sehr kompakten, effizient gespeicherten Datensatz; bei sorglosem Einsatz erhalten Sie einen Server ohne Indizes. Das ist ein leistungsfĂ€higerer Standard in erfahrenen HĂ€nden und eine schĂ€rfere Kante in unerfahrenen.
Der wichtige Vorbehalt â und der Grund, die obigen Such-Zahlen aufmerksam zu lesen â ist, dass das Voraufbauen von Indizes etwas bietet: vorhersehbare Abfrage-Performance beim Datenwachstum. Ein Datensatz mit 1.000 Patienten, der problemlos in den Speicher passt, ist genau der Fall, in dem sich dieser Vorteil nicht zeigt; dieser Baseline begĂŒnstigt daher strukturell den No-Index-Standard bei der Suche. Ob dieser Vorteil mit wachsenden Daten anhĂ€lt â und ob die Schreibzeit-Degradierung, nicht nur die reine Geschwindigkeit, zunehmend dominiert â ist genau das, was der nĂ€chste Beitrag messen soll.
NĂ€chstes in der Serie
Dies ist der Ausgangspunkt. In den nĂ€chsten BeitrĂ€gen wechseln wir vom Baseline zu schwereren Workloads â gröĂere DatensĂ€tze und inkrementelle Last â, um zu messen, wie die Import-Geschwindigkeit mit zunehmenden Datenmengen abnimmt, wie CRUD und komplexe Suchen (Sortierung und Joins) auf einer vollen Datenbank standhalten und wie sich der Speicherunterschied bei realistischen Datenvolumina projiziert.
Folgen Sie uns auf LinkedIn fĂŒr das nĂ€chste Benchmark-Update.






