Endliche Automaten als Datenstrukturen: Indizierung von Milliarden von URLs

2025-08-14

Dieser Artikel untersucht die Verwendung von endlichen Automaten (FSMs) als Datenstrukturen zur Darstellung geordneter Mengen und Abbildungen und zeigt die Effizienz des Rust-Crates fst für den Aufbau von Indizes. Er geht tief in die Konstruktion von FSMs ein, behandelt die Konstruktion von Tries und FSAs und demonstriert die Indizierung von über 1,6 Milliarden URLs aus dem Common Crawl-Archiv vom Juli 2015. Techniken wie Memory Mapping, Automaten-Schnittmengen mit regulären Ausdrücken, Fuzzy-Suche mit Levenshtein-Distanz und Streaming-Mengenoperationen werden ebenfalls diskutiert. Der Autor baut FSTs und vergleicht deren Performance mit anderen Kompressionsverfahren (gzip, xz) an verschiedenen Datensätzen mit unterschiedlichen Größen und Eigenschaften.

Mehr lesen
Entwicklung Indizierung

Panic und unwrap() in Rust: Wann und wie man sie verwendet

2025-05-21

Dieser Artikel befasst sich eingehend mit der Verwendung von `panic` und `unwrap()` in der Programmiersprache Rust. Der Autor argumentiert, dass `panic` nicht für die allgemeine Fehlerbehandlung verwendet werden sollte, sondern als Signal für Fehler im Programm. `unwrap()` ist in Tests, Beispielcode und Prototypen akzeptabel, sollte aber im produktiven Einsatz vorsichtig verwendet werden, da es zu Programmabstürzen führen kann. Der Autor erklärt ausführlich Laufzeitinvarianten und warum es manchmal nicht möglich oder wünschenswert ist, alle Invarianten in Kompilierzeitinvarianten zu verschieben. Schließlich empfiehlt der Autor, nach Möglichkeit `expect()` anstelle von `unwrap()` zu verwenden, und diskutiert, ob es sinnvoll ist, `unwrap()` zu linten.

Mehr lesen
Entwicklung