database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9300 게시물 읽기
No. 9300
대용량 데이터 search 방안은??
작성자
권이가
작성일
2013-06-20 17:30
조회수
10,168

 안녕하세요. 대용량 데이터 검색방안 때문에 문의 드립니다.

 

현재 테스트 데이터로 3백만건 정도 insert가 되어있으며 

body라는 varchar2 (4000)에서 단어 검색을 합니다. 여기 Full text search를 위해 body_vector 라는 tsvector 라는 형으로 별도의 필드도 생성하여 저장합니다

당연히 처리비용이 많이 들거라고 생각은 들지만요.. 

테스트 테이블은

 

 

 

create table test_table

(

  row_id character varying(45) NOT NULL,

  attrib_1 character varying(300),

  attrib_2 character varying(360),

  attrib_3 character varying(150),

  attrib_4 character varying(150),

  attrib_5 character varying(150),  

  body character varying(4000),

  body_vector tsvector ,

  reg_time timestamp ,

  CONSTRAINT test_table_pkey PRIMARY KEY (row_id)

그리고 index로 gin 인덱스를 사용하여

CREATE INDEX ix_test_table_body_vector ON test_table USING gin(body_vector);

를 합니다.

 

쿼리는 

select attrib_1 , attrib_2 , attrib_3 , attrib_4 , attrib_5  , count(row_id) from test_Table
where reg_time between '2013-06-01 00:00:00.000000'::timestamp and '2013-06-30 00:00:00.000000'::timestamp
and body_vector @@ to_tsquery('불량:*')
group by attrib_1 , attrib_2 , attrib_3 , attrib_4 , attrib_5
 
인데요
 
이렇게 대용량일 경우 빠르게 쿼리할 방안이 또 있을까요?
물론 파티셔닝도 생각해 보고 있지만..일별로 파티셔닝하지 않는한은 용량이 커집니다.
 
이 글에 대한 댓글이 총 1건 있습니다.

현재, PostgreSQL에서 full text search 관련해서 가장 바람직한 구현 방법은 

tsvector 자료형과 그 인덱스 그리고 그 검색 연산자를 사용하는 것입니다. 

문제는 한국어인 경우 형태소분석 엔진이 없어 tsearch 기능을 모두 사용하기는 힘들지만, 

어플리케이션 쪽에서 구문분석을 하고, 직접 tsvector 자료형에 자료를 넣는다면, 

충분히 나름대로 사용할 수 있을 것 같습니다. 

 

비용 문제를 고민하셨는데, 당연히

인덱스를 사용할 수 없어 자료 전체를 뒤지는 비용보다, 

자료를 입력할 때, 이런 일련의 작업 때문에 드는 비용이 훨씬 저렴할 것입니다. 

 

김상기(ioseph)님이 2013-06-21 13:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9303쿼리 로그에 관한 질문입니다. [2]
김문수
2013-06-25
9650
9302PostgreSQL 에서 증분백업은 지원하지않나요 ? [2]
아지랑이
2013-06-24
9563
9301dblink 설치 문제 [1]
이성필
2013-06-21
10207
9300대용량 데이터 search 방안은?? [1]
권이가
2013-06-20
10168
9298insert 내부 에 select 쿼리시 에러 [도와주세요] [2]
권지성
2013-06-19
10112
9297postgresql 9.2 에서 dbms_output....? [1]
최종호
2013-06-19
10450
92969.2 설치 후 환경설정 문의 [2]
초보
2013-06-17
8945
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다