Sobre el proyecto

Tile38 es un almacén de datos geoespaciales en memoria, índice espacial y servidor de geocercas en tiempo real, de código abierto (con licencia MIT). Admite una variedad de tipos de objetos, incluidos puntos de latitud/longitud, cajas delimitadoras, teselas XYZ, Geohashes, QuadKeys y GeoJSON. Las características clave incluyen: - Índice espacial con métodos de búsqueda como Nearby, Within e Intersects - Geocercas en tiempo real mediante webhooks o canales pub/sub - Soporte para múltiples protocolos: HTTP, websockets, telnet y Redis RESP - Respuestas del servidor en formato RESP o JSON - Interfaz de línea de comandos completa (tile38-cli) - Replicación líder/seguidor - Base de datos en memoria con persistencia en disco - Exportación de métricas de Prometheus El sistema consta de tres componentes: tile38-server (el servidor), tile38-cli (interfaz de línea de comandos) y tile38-benchmark (herramienta de referencia del servidor). Tile38 se puede implementar mediante binarios precompilados para OSX, Linux, FreeBSD y Windows, Docker o Homebrew en macOS. El código base está escrito completamente en Go y admite sistemas de 32 y 64 bits. Las capacidades de búsqueda incluyen filtrado por valores de campos (WHERE), coincidencia de ID de objeto (MATCH), iteración basada en cursores, exclusión de campos (NOFIELDS) y limitación de resultados (LIMIT). Las expresiones WHERE admiten coincidencia de expresiones regulares utilizando el motor re2 de Go. Las geocercas permiten convertir cualquier búsqueda estándar en un monitor de geocerca agregando la palabra clave FENCE. El servidor notifica a los clientes en tiempo real cuando los objetos entran, salen o cruzan límites, con tipos de detección que incluyen dentro, fuera, entrar, salir y cruzar. Las notificaciones de geocerca se pueden entregar mediante webhooks o canales pub/sub. Los campos son datos adicionales adjuntos a los objetos, almacenados como valores de punto flotante de doble precisión, sin límite en el número de campos por objeto. Tile38 tiene bibliotecas de cliente dedicadas para Go, Node.js, Python, TypeScript, Rust, Swift y Java, así como compatibilidad con la mayoría de las bibliotecas de cliente de Redis debido a su soporte nativo del protocolo RESP.