ip2region: 오프라인 IP 주소 위치 추정 라이브러리 및 데이터 관리 프레임워크
요약
ip2region은 오프라인 환경에서 IP 주소의 위치를 추정할 수 있는 라이브러리 및 데이터 관리 프레임워크입니다. IPv4와 IPv6를 모두 지원하며, xdb 형식 기반으로 10마이크로초 수준의 빠른 질의 응답 속도를 제공합니다. 사용자는 이 도구를 활용하여 자체 비즈니스 요구사항에 맞춰 IP 위치 데이터를 완전히 커스터마이징하고 관리할 수 있습니다.
핵심 포인트
- IPv4/IPv6를 지원하는 오프라인 IP 주소 위치 추정 기능 제공
- xdb 형식 기반으로 10μs 수준의 고속 질의 응답 속도 보장
- 데이터 중복 제거 및 압축 기능을 통해 데이터 관리 용이성 확보
- 사용자 정의 지역 정보 추가가 가능하여 비즈니스 요구사항 반영에 최적화
:globe_with_meridians: 중국어 간체 | English
ip2region
ip2region은 오프라인 IP 주소 위치 추정 라이브러리이자 IP 위치 추정 데이터 관리 프레임워크입니다. IPv4와 IPv6를 모두 지원하며, 10마이크로초 수준의 빠른 질의 효율성을 제공합니다. 또한 여러 주요 프로그래밍 언어를 위한 xdb 데이터 생성 및 질의 클라이언트 구현체를 제공합니다.
기능 (Features)
1. 오프라인 위치 추정 라이브러리 (Offline Localization Library)
이 프로젝트 자체는 IPv4(data/ipv4_source.txt)와 IPv6(data/ipv6_source.txt)에 대한 원시 데이터와, 도시 수준의 질의 위치 추정을 달성하기 위한 해당 xdb 파일(data/ip2region_v4.xdb 및 data/ip2region_v6.xdb)을 제공합니다. 필드 형식은 다음과 같습니다: Country|Province|City|ISP|iso-alpha2-code. 중국의 위치 추정 정보는 전적으로 중국어로 되어 있으며, 비(非)중국 지역의 영역 정보는 전적으로 영어로 되어 있습니다.
2. 데이터 관리 프레임워크 (Data Management Framework)
xdb는 수억 개의 IP 데이터 세그먼트 행을 지원합니다. 지역 정보는 완전한 사용자 정의가 가능합니다. 내장된 데이터의 지역 정보는 Country|Province|City|ISP|iso-alpha2-Code 형식으로 고정되어 있습니다. 사용자는 GPS 정보/국제 표준 지역 코드/우편번호 등 특정 비즈니스 요구 사항에 맞춰 지역에 데이터를 추가할 수 있습니다. 다시 말해, ip2region을 사용하여 자체 IP 위치 추정 데이터를 완전히 관리할 수 있습니다.
3. 데이터 중복 제거 및 압축 (Data Deduplication and Compression)
xdb 형식 생성 프로그램은 입력된 원시 데이터를 자동으로 처리하고, 인접한 IP 세그먼트의 병합 여부를 확인하고 완료하며, 동일한 지역 정보에 대한 중복 제거와 압축을 수행합니다.
4. 고속 질의 응답 (High-Speed Query Response)
xdb 파일만을 기반으로 하는 질의의 경우에도 단일 질의 응답 시간은 10마이크로초 수준입니다. 메모리 가속화된 질의는 다음 두 가지 방법을 통해 활성화할 수 있습니다:
vIndex인덱스 캐싱(Index Caching): 고정된 512KiB의 메모리를 사용하여 벡터 인덱스 데이터를 캐시함으로써 디스크 I/O 작업을 줄이고 평균 쿼리 효율성을 100 마이크로초 이내로 유지합니다.- 전체
xdb파일 캐싱(Entire xdb File Caching): 전체xdb파일을 메모리에 로드합니다. 메모리 사용량은xdb파일 크기와 동일하며, 디스크 I/O 작업이 없어 10 마이크로초 수준의 쿼리 효율성을 유지합니다.
5. 통합 쿼리 인터페이스 (Unified Query Interface)
xdb는 버전 호환성 쿼리 구현을 제공합니다. 단일화된 API를 통해 IPv4와 IPv6 데이터를 동시에 쿼리하고 통일된 데이터를 반환할 수 있습니다.
xdb 쿼리(Query)
API 소개, 사용 문서 및 테스트 프로그램은 해당 searcher 쿼리 클라이언트 아래의 README 소개 문서를 참조하십시오. 모든 쿼리 바인딩 구현은 다음과 같습니다:
| 언어 | 설명 | IPv4 지원 | IPv6 지원 |
|---|---|---|---|
| Golang | golang 쿼리 클라이언트 | :white_check_mark: | :white_check_mark: |
| ... | Erlang | erlang 쿼리 클라이언트 | |
| Nginx | nginx 확장 쿼리 클라이언트 | :white_check_mark: | :white_check_mark: |
| C++ | C++ 쿼리 클라이언트 | :white_check_mark: | :white_check_mark: |
| Cangjie | Cangjie 쿼리 클라이언트 | :white_check_mark: | :white_check_mark: |
다음 도구 체인 구현은 커뮤니티 개발자가 타사 저장소를 통해 기여한 것입니다:
| 언어 | 설명 |
|---|---|
| ip2region-composer | php composer 관리 클라이언트 |
| ... |
xdb 생성(Generation)
API 소개, 사용 문서 및 테스트 프로그램은 다음 maker 생성 프로그램 아래의 README 문서를 참조하십시오:
Language Description IPv4 Support IPv6 Support
| --- | --- | --- | ---
| Golang | golang xdb 생성 프로그램 | ✅ | ✅ |
... |
xdb 업데이트
ip2region 프로젝트의 핵심은 IP 데이터 저장 및 빠른 쿼리(querying)를 위한 설계 및 구현 연구에 있습니다. 프로젝트에 포함된 원시 데이터인 ./data/ipv4_source.txt와 ./data/ipv6_source.txt는 불규칙하게 업데이트됩니다. 데이터 정확도와 업데이트 빈도에 대한 요구 사항이 높은 시나리오의 경우, Ip2Region Community 또는 타사 공급업체에서 상용 오프라인 데이터를 구매하는 것을 권장합니다. 다음 방법을 사용하여 직접 데이터를 업데이트해 볼 수 있습니다:
수동 편집 및 업데이트
ip2region이 제공하는 원시 IP 데이터인 ./data/ipv4_source.txt와 ./data/ipv6_source.txt를 사용하여 ip2region에서 제공하는 편집 도구를 기반으로 직접 데이터를 수정할 수 있습니다. 현재 데이터 소스는 다음과 같습니다:
- ip2region 커뮤니티가 제공한 데이터 (커뮤니티 공지는 하단 공식 계정을 참조해 주십시오)
[Data_Updates]태그가 지정된 프로젝트 이슈(Issues)- 기타 사용자 정의 데이터: 예: 고객이 제공한 데이터, GPS 및 WIFI 위치 파악을 통해 얻은 데이터, 또는 다른 플랫폼의 법적이고 준수 가능한 데이터.
원시 IP 데이터 편집 도구 사용 방법에 대한 지침은 다음 maker 생성 프로그램 아래의 README 문서를 참조해 주십시오:
자동 감지 업데이트
자체 API 또는 데이터 소스를 통해 데이터를 업데이트하려면, 다음 비디오에서 공유된 "탐지 알고리즘(Detection Algorithm)"을 기반으로 업데이트 알고리즘을 참고하여 자체 업데이트 프로그램을 작성할 수 있습니다:
공식 커뮤니티
Ip2Region의 공식 커뮤니티는 2025/06/12에 공식적으로 시작되었습니다. 한편으로는 안정적인 상업용 오프라인 데이터 서비스를 제공하며, 다른 한편으로는 사용 설명서, 쿼리 테스트, 데이터 수정 등 코어 코드 외부의 IP 툴체인 및 데이터 서비스 강화에 기여합니다. 커뮤니티와 관련된 더 많은 정보 및 서비스를 원하시면 Ip2Region 공식 커뮤니티를 방문해 주십시오.
관련 참고 사항
1. xdb 기술 문서:
- xdb 데이터 구조 분석: [
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Go (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기