2014-06-16 5 views
2

나는 GeoLite 도시 데이터베이스를 다운로드 나는 다음과 같은 방법으로 IP 주소의 해당 위치 정보를 얻기 위해 자바와 데이터베이스에 액세스 할 수 있어요 :Java 및 GeoLite 데이터베이스 : 생산 방식으로 GeoLiteCity.dat를 사용하는 방법은 무엇입니까?

File file = new File("C:\\GeoLiteCity.dat"); 
LookupService lookup = new LookupService(file, LookupService.GEOIP_MEMORY_CACHE); 
Location location = lookup.getLocation("123.123.12.34"); 

내 질문 : 각 IP 주소에 대한 파일을 여는 위의 방법으로 생산 환경에서 분명 바람직하지 않습니다. 어떻게이 데이터베이스를 제작 방식으로 사용할 수 있습니까? (GeoLiteCity.dat를 사용한다고 가정 할 때)?

모든 입력 또는 포인터는 정말 감사하겠습니다.

감사합니다.

답변

1

두 가지 제안 : 데이터베이스 그냥 메모리에로드 된 서비스를 유지하고 그것에서 검색 대 크게 충분한 성능을 개선 할 경우

1. Make the LookupService static (lookup) and available in the memory (Singleton) 
2. Load this file (or CSV file version) into a database (New tables, columns etc...) 

잘 모르겠어요. 이러한 GeoLite 주간 파일 릴리즈를 사용하면 데이터베이스 정리 /로드/인덱싱의 추가 오버 헤드가 발생합니다.

+1

MySql [링크] http://stackoverflow.com/questions/22282218/strange-slow-queries-with-mysql – Brian

+0

Bri, thanks soooo much !!! – curious1

+1

1)의 경우 구성 요소를 정적으로로드하기 전에 스레드로부터 안전해야합니다. 2)의 경우 http://lite.ip2location.com에서 원시 데이터베이스를 우편 번호로 다운로드 할 수 있습니다. –