Engineering Kiosk

← Engineering Kiosk23 Jun · 59 min

#273 Bäume, Hashes, Bitmaps: Performance ist kein Zufall

#273 Bäume, Hashes, Bitmaps: Performance ist kein Zufall23 Jun59 min

Warum werden Systeme langsam, obwohl die Hardware doch immer schneller wird? Und warum endet die vermeintlich einfache Lösung so oft in einem Stack-Wechsel, der neue Probleme schafft statt alte zu lösen? Genau da setzen wir in dieser Episode an. Wir schauen auf Indexstrukturen, Datenstrukturen und die oft übersehene Frage, wie Workload, Hardware, Lese- und Schreibzugriffe und Algorithmen zusammenhängen. Denn häufig ist nicht die Datenbank schuld, sondern die falsche Struktur für den falschen Job.

In dieser Episode sprechen wir über Red Black Trees, B-Bäume, B-Plus-Bäume, Hash-Indizes, Trie, Radix Tree, Bitmap Index und Bloomfilter. Wir machen das nicht abstrakt, sondern mit konkreten Beispielen aus der Praxis. Etwa mit Nginx und Timeout-Management im Event-Loop, mit HTTP-Routern und Prefix-Suche, mit Git und Bloom Filtern für schnellere Dateipfad-Abfragen oder mit Alerting-Systemen und Hashmaps. Dabei geht es auch um Big O, Cache Lines, Range Queries, Rehashing, Performance-Basics und die Frage, wann Optimierung sinnvoll ist und wann sie nur Overengineering produziert.

Wenn du besser verstehen willst, warum manche Software unter Last einknickt und wie du mit dem richtigen Datenmodell, sauberen Metriken und etwas Architekturverständnis deutlich weiter kommst, ist diese Folge für dich. Und vielleicht ist die wichtigste Erkenntnis am Ende gar nicht, welche Indexstruktur die beste ist, sondern dass du sie in deiner eigenen Codebase vermutlich längst benutzt, oft nur ohne es zu merken.

Bonus: Blumenfilter sind keine Blumen und streng genommen nicht mal ein richtiger Index.

Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners

Das schnelle Feedback zur Episode:

👍 (top) 👎 (geht so)

Anregungen, Gedanken, Themen und WünscheDein Feedback zählt! Erreiche uns über einen der folgenden Kanäle …

EngKiosk Community: https://engineeringkiosk.dev/join-discord LinkedIn: https://www.linkedin.com/company/engineering-kiosk/Email: stehtisch@engineeringkiosk.devMastodon: https://podcasts.social/@engkioskBluesky: https://bsky.app/profile/engineeringkiosk.bsky.socialInstagram: https://www.instagram.com/engineeringkiosk/

Unterstütze den Engineering KioskWenn du uns etwas Gutes tun möchtest … Kaffee schmeckt uns immer

Buy us a coffee: https://engineeringkiosk.dev/kaffee

LinksEngineering Kiosk Episode #146 Warum ist Doom so faszinierend für die Software-Entwicklung?: https://engineeringkiosk.dev/podcast/episode/146-warum-ist-doom-so-faszinierend-f%C3%BCr-die-software-entwicklung/Engineering Kiosk Episode #28 O(1), O(log n), O(n^2) - Ist die Komplexität von Algorithmen im Entwickler-Alltag relevant?: https://engineeringkiosk.dev/podcast/episode/28-o1-olog-n-on2-ist-die-komplexit%C3%A4t-von-algorithmen-im-entwickler-alltag-relevant/Engineering Kiosk Episode #269 Performance-Basics: Indexstrukturen, Cache-Lokalität & Zugriffsmuster: https://engineeringkiosk.dev/podcast/episode/269-performance-basics-indexstrukturen-cache-lokalit%C3%A4t-zugriffsmuster/Engineering Kiosk Episode #73 Cache-freundliches Programmieren, CPU-Caches, Ersetzungsstrategien und Cache-Invalidierung: https://engineeringkiosk.dev/podcast/episode/73-cache-freundliches-programmieren-cpu-caches-ersetzungsstrategien-und-cache-invalidierung/Engineering Kiosk Episode #265 One Billion Row Challenge: Java mit mmap, Unsafe & richtig vielen Bit-Tricks: https://engineeringkiosk.dev/podcast/episode/265-one-billion-row-challenge-java-mit-mmap-unsafe-richtig-vielen-bit-tricks/julienschmidt/httprouter - A high performance HTTP request router that scales well: https://github.com/julienschmidt/httprouterEngineering Kiosk Episode #151 Räumliche Indexstrukturen: Grundpfeiler in Geo-Systemen, Games und Machine Learning: https://engineeringkiosk.dev/podcast/episode/151-r%C3%A4umliche-indexstrukturen-grundpfeiler-in-geo-systemen-games-und-machine-learning/Alertmanager: https://github.com/prometheus/alertmanagerNGinx Source Code: https://github.com/nginx/nginxRedis Bloom Filt