GoProject team
Warum GoProject keine Schaltfläche zum Neuindizieren hat
Jeder Jira-Administrator hat seine Reindex-Geschichte. Wir haben entschieden: der beste Weg, diese Schaltfläche zuverlässig zu machen, ist, sie überflüssig zu machen.
Die Schaltfläche und die Schlachtgeschichten
Die Suche in Jira läuft über einen Lucene-Index neben der Datenbank. Wenn die beiden nicht übereinstimmen, und das tun sie, hilft nur ein vollständiges Neuindizieren. Auf einer großen Instanz sind das Stunden, manchmal ein Wochenende, und dazu die Warteschlange, die sich dahinter aufstaut.
Eine andere Wette
GoProject fragt PostgreSQL direkt ab. Arbeitselemente, Werte benutzerdefinierter Felder in JSONB, Kommentare und Verknüpfungen liegen an einer Stelle, und jede Suchklausel wird zu einer indizierten SQL-Bedingung. Es gibt keine zweite Kopie der Daten, die aus dem Tritt geraten könnte.
Was das kostet
Es kostet Disziplin im Schema. Zähler, die früher beim Lesen berechnet wurden, sind denormalisiert und werden beim Schreiben gepflegt. Die Seitenweiterschaltung arbeitet mit Keyset, nie mit Offset. Jeder API-Aufruf hat ein Budget von 300 Millisekunden im 95. Perzentil, und die Testsuite schlägt fehl, sobald ein Abfrageplan seinen Index nicht mehr nutzt.
Was Sie bekommen
- Kein Neuindizieren, nie, in keinem Betriebshandbuch
- Suchergebnisse, die den Schreibvorgang widerspiegeln, der gerade passiert ist
- Eine Datenbank zum Sichern, Wiederherstellen und Verstehen
Das Board, auf das Sie schauen, ist die Datenbank. Das ist die ganze Idee.