프로젝트 소개
Tile38는 오픈소스(MIT 라이선스) 인메모리 지리위치 데이터 스토어, 공간 인덱스, 실시간 지오펜싱 서버입니다. 위도/경도 포인트, 경계 상자, XYZ 타일, 지오해시, QuadKey, GeoJSON을 포함한 다양한 객체 유형을 지원합니다.
주요 기능은 다음과 같습니다:
- Nearby, Within, Intersects와 같은 검색 방법을 갖춘 공간 인덱스
- 웹훅 또는 pub/sub 채널을 통한 실시간 지오펜싱
- HTTP, 웹소켓, 텔넷, Redis RESP를 포함한 다중 프로토콜 지원
- RESP 또는 JSON 형식의 서버 응답
- 전체 명령줄 인터페이스(tile38-cli)
- 리더/팔로워 복제
- 디스크 영속성을 갖춘 인메모리 데이터베이스
- Prometheus 메트릭 내보내기
시스템은 세 가지 구성 요소로 이루어져 있습니다: tile38-server(서버), tile38-cli(명령줄 인터페이스), tile38-benchmark(서버 벤치마크 도구).
Tile38는 OSX, Linux, FreeBSD, Windows용 사전 빌드 바이너리, Docker, 또는 macOS의 Homebrew를 통해 배포할 수 있습니다. 코드베이스는 전적으로 Go로 작성되었으며 32비트 및 64비트 시스템을 모두 지원합니다.
검색 기능에는 필드 값 필터링(WHERE), 객체 ID 일치(MATCH), 커서 기반 반복, 필드 제외(NOFIELDS), 결과 제한(LIMIT)이 포함됩니다. WHERE 표현식은 Go의 re2 엔진을 사용한 정규식 일치를 지원합니다.
지오펜싱을 사용하면 FENCE 키워드를 추가하여 모든 표준 검색을 지오펜스 모니터로 변환할 수 있습니다. 서버는 객체가 경계에 들어오거나, 나가거나, 교차할 때 실시간으로 클라이언트에 알리며, 감지 유형에는 inside, outside, enter, exit, cross가 포함됩니다. 지오펜스 알림은 웹훅 또는 pub/sub 채널을 통해 전달될 수 있습니다.
필드는 객체에 첨부된 추가 데이터로, 객체당 필드 수에 제한 없이 배정밀도 부동 소수점 값으로 저장됩니다.
Tile38는 Go, Node.js, Python, TypeScript, Rust, Swift, Java용 전용 클라이언트 라이브러리를 보유하고 있으며, 기본 RESP 프로토콜 지원 덕분에 대부분의 Redis 클라이언트 라이브러리와도 호환됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.