IT Japan

Solr + RDB 연계 - MySQL과 PostgreSQL 본문

MySQL

Solr + RDB 연계 - MySQL과 PostgreSQL

swhwang 2016. 7. 29. 18:15
반응형

Solr의 DIH (DataImportHandler)에서 RDB와 연계시키고 싶은 경우. MySQL은 공개 사례가 많아 비교적 원활하게 보이지만 PostgreSQL는 사례가 상당히 적고, 초조. 것으로, 양자의 공통점 / 차이점에 초점을 맞춘 메모. 할일은 다른 참조 사이트에 따라 주면 OK이므로, 절차 및 구성 세부 사항은 여기에서 터치 (미안이 여력이 ...).

참고 (Solr는 MySQL 사례)
Apache Solr에서 데이터 가져 오기 핸들러를 사용하여 MySQL과 동기화한다.
Apahce Solr 4.6.0 입문편

가정은 커뮤니티 버전 Solr의 설치 디렉토리를 $ SOLR하며, $ SOLR / example을 복사하여 이름을 변경하고 고뇨고뇨한다.

둘 다 기본 할 일은 동일 편집 할 설정 파일은 다음이다.

    
schema.xml
    
solrconfig.xml
    
dataconfig.xml (새 파일 이름은 바꿔도 좋다)

다음 포인트.

    
JDBC 드라이버를 입수 해, 각각의 경로 ($ SOLR / dirname] / lib)에 배치한다. solrconfig.xml에서 드라이버 경로 설명.
    
dataconfig.xml에서 driver, url 등 드라이버의 정의.
    
테이블을 만들 때 SQL이 조금 달라진다. PostgreSQL 분은 트리거가 필요합니다. ※ 업데이트를 가져올 때 필요합니다.

2. 차이. MySQL 분은 setFetchSize의 Exception 해결을 위해 dataSource 태그에서 batchSize = "-1"을 기술한다. 반대로 PostgreSQL 분은 기술하지 않는다. 쓰면, 역시 Exception이 발생한다.

    
"Fetch size must bi a value greater to or equal to 0"
    
( "페치 크기는 0과 같거나 더 큰 값이 아니면 안됩니다")

그것은 의외로은 기본 동일한 설정으로 움직인다.

모두의 공통점. timestamp를 취급하는 경우 convertType = "true"로한다. true는 자동으로 Solr 형식으로 데이터를 변환하고 싶지 않은 경우에 사용한다. 그러나 timestamp 내용은 Solr가 DB 레코드의 timestamp를 よしなに 변환 해주는 곳이되지 않는 것이기 때문에 Exception이 나온다. 기본값은 false이므로 아무것도 쓰지 않아도된다.

dataconfig.xml의 예



MySQL


<dataConfig>
  <dataSource name="ratings"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/mydatabase"
              user="solruser"
              password="solrpassword"
              batchSize = "-1" />


PostgreSQL


<dataConfig>
  <dataSource name="ratings"
              driver="org.postgresql.Driver"
              url="jdbc.postgresql://localhost:5432/postdatabase"
              user="solruser"
              password="solrpassword" />


모두 이후 entitiy 태그 기술한다.

solrconfig.xml 드라이버 라이브러리 경로 설명했다. $ SOLR_HOME (주 1) 기점으로 한 상대 경로 기술하면 좋겠지 만, 여기는 빠져 커녕이므로 귀찮 으면 절대 경로 적어 놓으면된다.



MySQL


<lib dir="/path/to/lib/" regex="mysql-connector-java-\d.*\.jar" />
<lib dir="/path/to/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />
<lib dir="/path/to/contrib/dataimporthandler/lib/" regex=".*\.jar" />


PostgreSQL


<lib dir="/path/to/lib/" regex="postgresql-\d.*\.jar" />
(나중은 같음)


DB 테이블 만들기 쿼리 .


MySQL


create table comment_tbl (
id serial primary key,
name varchar(32),
body varchar(1024),
updated timestamp(0) not null default current_timestamp);


PostgreSQL


create table comment_tbl (
id serial primary key,
name varchar(32),
body varchar(1024),
updated timestamp(0) not null default current_timestamp);


PostgreSQL 분은 이대로라면 데이터 업데이트에 timestamp 업데이트되지 않기 때문에 트리거 별도로 준비 할 필요가있다. 트리거에 대해서는 지난 기사 참조.

주 1
$ SOLR $ SOLR_HOME. 이것이 귀찮다. 알아 버리면 간단한 것이지만.

     $ SOLR : Solr 설치 디렉토리
     $ SOLR_HOME : 기본적으로 Solr 시작 디렉토리 바로 아래 Solr 디렉토리 $ SOLR_HOME된다. example 말해서, $ SOLR_HOME = $ SOLR / example / solr. -Dsolr.solr.home = / path / to / dir 으로 시작할 때 지정할 수도 있습니다.

반응형
Comments