일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 13460 구슬탈출 2
- Kotlin in action 10장
- 싱글톤 컨테이너
- Python
- 스프링 핵심 원리 - 기본편
- spring
- 스프링 컨테이너와 스프링 빈
- 객체 지향 설계와 스프링
- 자바 ORM 표준 JPA 프로그래밍 7장
- 7장 고급매핑
- KotlinInAction
- 백준
- Kotlin in action 3장
- 코틸린인액션
- 백준 13460 Python
- 기능개발 python
- 코틀린
- 20055 컨베이어 벨트 위의 로봇
- 스프링 핵심 원리
- 스프링 핵심 원리 이해
- 20055
- Kotlin in action 5장
- 코틀린인액션
- 컨베이어 벨트 위의 로봇 Python
- 고급매핑
- Kotlin
- Kotlin In Action
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin in action 6장
- kotlin in action 정리
- Today
- Total
기록하는 습관
검색 - Netflix GraphQL Search Indexing 정리 본문
분산 된 데이터 검색의 과제
문제: 느슨하게 결한 된 여러 독립 서비스에서 데이터를 검색하려고 함.
해결법
1. 모든 정보가 포함 된 단일 데이터베이스가 있다면 검색이 쉬울 것.
a. 문제점: 단일 데이터베이스에는 팀이 독립적으로 작업할 수 있는 유연성이 제한, 대규모 성능이 제한됨.
2. 데이터 자체 색인을 작성하는 사용자 지정 집계 서비스를 사용하는 것.
데이터 인덱싱
GraphQL을 사용하여 데이터를 인덱싱 하려면?
- GraphQL 쿼리를 업데이트 하여 관련 데이터를 검색한 다음 데이터베이스에 해당 쿼리를 한 번씩 호출해 결과를 ES에 색인화 할 수 있음
ES에는 데이터를 인덱싱 할 때 많은 사용자 정의 옵션이 있지만 대부분 기본 설정이 좋은 결과를 제공함.
GraphQL 쿼리를 사용해 스키마를 생성 할 때 좋은 점
1. 데이터에 의존하는 기존 클라이언트가 GraphQL 서버에서 가져온 것인지, 검색 인덱스에서 직접 가져온 것인지 관계 없이 동일한 모양의 데이터를 얻게 됨.
데이터를 최신 상태로 유지
- Kafka에 데이터가 변경될 때마다 발생하는 이벤트가 있음.
- GraphQL의 엔티티 관계를 사용해 재 인덱싱 해야하는 항목을 정확히 찾을 수 있음.
- GraphQL에 대한 쿼리를 자동으로 생성해 변경된 데이터를 찾는 방식. -> 장점: GraphQL 스키마와 리졸버를 한 번 정의한 후에는 추가 작업이 없다는 것.
역 그래프 인덱스
검색 인덱서가 수행하는 3단계
1. Fan out
2. Search
3. Indexing
'개발' 카테고리의 다른 글
[장애차단] MSA 회복성 패턴 (0) | 2022.11.09 |
---|---|
[Error] RDB 백업 관련 에러 발생 (0) | 2022.07.13 |
[crawling] request와 Beautifulsoup4을 이용한 웹크롤링 (0) | 2020.02.22 |