피드로 돌아가기
Dev.toDatabase
원문 읽기
데이터 규모별 Two-Tier 검색 전략으로 100개 이상 데이터 대응 및 300ms 지연 최적화
Adding Search UI to a Flutter Notes List — SearchBar + Supabase Full-Text Search
AI 요약
Context
노트 아이템 50개 초과 시 발생하는 스크롤 탐색 비용 증가로 인한 사용자 경험 저하 문제 발생. 단순 리스트 렌더링 구조에서 데이터 규모 확장에 따른 검색 성능 저하 및 네트워크 오버헤드 해결 필요.
Technical Solution
- 100개 이하 데이터의 Zero Latency 구현을 위한 Client-side filter 적용
- 100개 초과 데이터 처리를 위한 Supabase Full-Text Search 기반 Server-side 쿼리 전환
- DB 부하 감소 및 불필요한 API 호출 방지를 위한 300ms Debounce 로직 도입
- PostgreSQL GIN Index 및 tsvector 컬럼 설계를 통한 검색 쿼리 최적화
- 데이터 정합성 유지를 위해 INSERT/UPDATE 시점에 작동하는 자동 업데이트 Trigger 구성
- RegExp 기반의 TextSpan 분리 로직을 통한 검색 결과 하이라이팅 UI 구현
실천 포인트
- 데이터 셋 규모에 따른 검색 전략 임계값(예: 100건) 설정 검토 - 검색 UI 구현 시 API 비용 절감을 위한 Debounce 타임아웃 설정 적용 - PostgreSQL 사용 시 단순 LIKE 검색 대신 GIN Index와 tsvector를 활용한 Full-Text Search 고려