[백업][가리사니] 솔라 루신에서 대량 dataimport가 제대로 작동하지 않는 경우. + 검색엔진 교체기
lucene, solr

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

서론

지인이 스핑크스를 쓰는데 인덱스 사이즈가 4기가가 넘어가는 바람에 검색엔진이 더 이상 작동하지 않는 상황에 이르렀습니다. (현버전 오류) 이 패치는 3.0에서 된다고하니.. (글쓴 시점에서 배타버전도 2.3.1버전) 사이트의 검색엔진 수집이 더 이상 동작하지 않는 상태에서 마냥 기다릴 수 없는 상황 솔라로 갈아타기로 합니다.

문제

리눅스에 솔라를 설치하고 dataimport 를 하는데... 동작하질 않아.!! 왜!!!! (정확히 말하면 완료되었다고 뜨고 적용이 0개입니다....) 데이터가 작은것들은 잘 되는 바람에 DB서버나 타임아웃을 의심하고 조사를해봤는데 원인은 다른곳에 있었네요. db-data-config.xml 문서에서 batchSize="-1" 을 다음과 같이 넣어줍니다.

<dataSource name="gs" driver="org.postgresql.Driver" url="jdbc:드라이버url" user="계정" password="암호" batchSize="-1" />

이 코드가 들어가면 1억개 이상의 데이터를 import 하더라도 갑자기 녹색화면이 뜨면서 완료되었습니다. 라는 페이크는 주지않습니다...;;; 또 하나 이렇게 수천만개 수억개씩 입력할 때에는 메모리도 많이 필요한데 솔라의 기본 메모리값은 512mb 입니다. 솔라를 실행할 구문에 다음과 같이 -m을 넣어줍니다. (10g = 10GB 서버자원에 맞춰서 넣어주세요.) solr start -m 10g -k solr.... (지인 서버는 메모리가 넘치기에 50gb를 할당했지만... 사실 12gb 를 넘어가지 않는것 같네요. 진행이 되다보니 20gb 까진 올라갑니다.) (진짜 시퀀스를 bigint를 고려해야하는 상황을 보니... 가리사니... bigint인데.... 글이 400개가 안됩니다. 하하하하하핳)

기타 - 사용기

  • 초대량 import 이부분은 스핑크스가 훨씬 빠른거같습니다. (5배이상) : 같은 서버로 한시간 이내 솔라로는 메모리 10~20기가(설정은 50gb)에 CPU점유율 2100%(코어 21개정도가 100%정도로 가동됬다고 보시면됨...)정도로 5시간 걸린거 같네요..
  • 인터페이스 GUI 인터페이스는 기본적으로 솔라만 지원됩니다. (필자는 개인적으로 데이터베이스류에는 GUI가 중요하다고 생각합니다. DBMS의 실행계획이 눈으로 보이면 좋잖아요. 글자로도 실행계획이 보이긴하지만.. 화살표의 굵기와 각종 %와 각 플랜의 아이콘들로 땋 하고 보이면! 바로바로 눈에 들어오죠!)
  • 검색 [테스트중] 이부분은 솔라가 훨씬 더 빠르다고합니다. 스코어 소트(기본값)가 아닌 경우 처음 소트가 느리긴하지만 처음에만 느리고 그 뒤로는 소트가 빨라집니다.
  • 검색 [실서버 적용] 스핑크스에 대비해 속도가 빠르지만 스핑크스는 기본적으로 like 문과 비슷한 검색을 보여줌으로써 "녕하세요" 라고 검색하면 "안녕하세요"가 검색되는 반면 솔라는 이를 * 같은 쿼리를 따로 써줘야하는 불편함이 있다는 점이 있습니다.