Máquinas de Estado Finito como Estructuras de Datos: Indexando miles de millones de URLs

2025-08-14

Este artículo explora el uso de máquinas de estado finito (FSM) como estructuras de datos para representar conjuntos y mapas ordenados, mostrando la eficiencia del crate fst de Rust para construir índices. Se profundiza en la construcción de FSM, cubriendo la construcción de Trie y FSA, y se demuestra la indexación de más de 1.600 millones de URL del archivo Common Crawl de julio de 2015. También se discuten técnicas como el mapeo de memoria, la intersección de autómatas con expresiones regulares, la búsqueda difusa con la distancia de Levenshtein y las operaciones de conjuntos en streaming. El autor construye y compara benchmarks de FST contra otros esquemas de compresión (gzip, xz) en varios conjuntos de datos de diferentes tamaños y características.

Leer más
Desarrollo Indexación

Panic y unwrap() en Rust: ¿Cuándo y cómo usarlos?

2025-05-21

Este artículo profundiza en el uso de `panic` y `unwrap()` en el lenguaje de programación Rust. El autor argumenta que `panic` no debe usarse para el manejo de errores generales, sino como una señal de errores en el programa. `unwrap()` es aceptable en pruebas, código de ejemplo y prototipado, pero debe usarse con precaución en producción, ya que puede provocar bloqueos del programa. El autor explica detalladamente los invariantes de tiempo de ejecución y por qué a veces no es posible o deseable trasladar todos los invariantes a invariantes de tiempo de compilación. Finalmente, el autor recomienda usar `expect()` en lugar de `unwrap()` cuando sea posible y debate si debería haber una advertencia (lint) contra el uso de `unwrap()`.

Leer más
Desarrollo