Об этом проекте
Tile38 — это открытая (лицензия MIT) in-memory база данных геолокаций, пространственный индекс и сервер геозон в реальном времени. Он поддерживает различные типы объектов, включая точки широты/долготы, ограничивающие прямоугольники, XYZ-тайлы, геохеши, QuadKeys и GeoJSON.
Ключевые функции включают:
- Пространственный индекс с методами поиска, такими как Nearby, Within и Intersects
- Геозоны в реальном времени через вебхуки или pub/sub-каналы
- Поддержка нескольких протоколов: HTTP, websockets, telnet и Redis RESP
- Ответы сервера в формате RESP или JSON
- Полный интерфейс командной строки (tile38-cli)
- Репликация ведущий/ведомый
- In-memory база данных с сохранением на диск
- Экспорт метрик Prometheus
Система состоит из трех компонентов: tile38-server (сервер), tile38-cli (интерфейс командной строки) и tile38-benchmark (инструмент для бенчмаркинга сервера).
Tile38 может быть развернут с помощью предварительно собранных бинарных файлов для OSX, Linux, FreeBSD и Windows, Docker или Homebrew на macOS. Код полностью написан на Go и поддерживает как 32-битные, так и 64-битные системы.
Возможности поиска включают фильтрацию по значениям полей (WHERE), сопоставление ID объектов (MATCH), итерацию на основе курсора, исключение полей (NOFIELDS) и ограничение результатов (LIMIT). Выражения WHERE поддерживают сопоставление с регулярными выражениями с использованием движка re2 от Go.
Геозоны позволяют преобразовать любой стандартный поиск в монитор геозоны, добавив ключевое слово FENCE. Сервер уведомляет клиентов в реальном времени, когда объекты входят, выходят или пересекают границы, с типами обнаружения, включая inside, outside, enter, exit и cross. Уведомления о геозонах могут доставляться через вебхуки или pub/sub-каналы.
Поля — это дополнительные данные, прикрепленные к объектам, хранящиеся как значения с плавающей точкой двойной точности, без ограничения на количество полей на объект.
Tile38 имеет специализированные клиентские библиотеки для Go, Node.js, Python, TypeScript, Rust, Swift и Java, а также совместим с большинством клиентских библиотек Redis благодаря нативной поддержке протокола RESP.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.