Search for a command to run...
이 시리즈는 궁극적으로 PostgreSQL만 사용하여 강력한 검색 시스템을 구축하는 방법을 다룹니다.
ElasticSearch와 같은 외부 검색엔진을 사용하지 않고, 단순한 방법으로 PostgreSQL 내에서 문제를 해결하는 것을 목표로 합니다.
ElasticSearch는 대규모 데이터를 빠르게 검색할 수 있는 강력한 검색엔진이며, 수평 확장, 비정형 문서 검색 등 다양한 기능을 제공합니다. 하지만 ElasticSearch는 별도의 시스템으로 운영 및 관리가 필요하며, RDB와의 데이터 동기화 과정이 복잡할 수 있습니다. 또한, 설정과 튜닝의 높은 러닝커브로 인해 초보자에게는 진입 장벽이 높습니다.
반면, PGroonga는 PostgreSQL의 확장 기능으로, Groonga를 인덱스 엔진으로 통합하여 PostgreSQL 내에서 강력한 다국어 Full Text Search를 지원하도록 해줍니다. 덕분에 별도의 검색엔진을 운영할 필요가 없으며, 데이터 동기화 문제도 발생하지 않습니다. 또한, 설정이 비교적 간단합니다. :)
Groonga는 역색인 기반의 Full Text Search 엔진으로, 문서를 등록하자마자 검색 결과에 바로 반영되며 읽기 락 없이 업데이트가 가능해 실시간 애플리케이션에 적합합니다. 또한 열-지향 DBMS로서 집계 쿼리에 강해 MySQL/PostgreSQL 같은 행-지향 시스템의 약점을 보완할 수 있습니다. 자세한 내용은 Characteristics of Groonga를 참고해주세요.
물론, ElasticSearch를 사용하는 것이 더 나은 경우도 있습니다:
만약, 구현하고자 하는 검색 시스템이 단순한 구조라면, PGroonga는 개발자에게 행복한 선택이 될 수 있습니다.
PGroonga 인덱스를 통한 Full Text Search 과정은 다음과 같습니다:
Mecab"postgresql 검색" -> ["po", "os", "st", "tg", ... , "검색"]