엘라스틱서치 바이블 - 2장 기본동작과 구조
·
DataPipeline/Elasticsearch
[ 구조 개괄 ]기본적인 용어문서 : 엘라스틱서치가 저장하고 색인을 생성하는 JSON 문서인덱스 : 문서를 모아 놓은 단위, 인덱스 단위로 검색을 요청샤드 : 인덱스는 그 내용을 여러 샤드로 분리하여 분산 저장하여 고가용성을 제공_id : 인덱스 내 문서에 부여되는 고유한 구분자노드 : 엘라스틱서치 프로세스 하나가 노드 하나를 구성노드의 역할 : 데이터노드, 마스터노드, 조정노드 등 하나의 역할을 맡아 수행클러스터를 관리하는 역할을 마스터노드에서 진행샤드를 보유하고 샤드에 읽기 쓰기 작업을 수행하는 노드는 데이터노드클라이언트의 요청을 받아서 노드에 요청을 분배하는 노드는 조정노드 엘라스틱 클러스터 [ 내부 구조와 루씬 ]루씬 flush문서 색인 요청이 들어오면 루씬은 문서를 분석해서 역색인을 생성한다...
AWS - DynamoDB GSI
·
Platform/AWS
[ GSI 개념 ]DyanmoDB는 기본키(PK) 기준으로 데이터를 조회하며 다양한 쿼리 패턴을 위해서는 추가적으로 인덱스가 필요합니다.  예를 들어 PK = user_id 로 지정했는데 age로 조회하고 싶을 경우,작은 테이블에선 조회가 가능할지 모르지만 저장된 데이터가 클 경우 에러 혹은 검색이 되지 않습니다.이럴 때 GSI나 LSI를 사용하면 데이터 복제 없이도 새로운 쿼리 경로를 생성할 수 있습니다. 아래는 DynamoDB에서 지원하는 인덱스 2가지 입니다. Global Secondary Index : 기본 키와 관계없이 다른 파키션 키와 정렬 키를 사용하는 인덱스Local Secondary Index : 기본 파키션 키는 유지하고 다른 정렬 키를 사용하는 인덱스 [ PK와 SK의 역할 ]Dyna..
AWS - DynamoDB Pagination과 Where절
·
Platform/AWS
DynamoDB Pagination 기본 개념DynamoDB는 Scan 또는 Query 작업을 수행할 때 모든 데이터를 한 번에 반환하지 않고, 페이지 단위로 나누어 데이터를 반환합니다.주요 개념Limit : 한 번의 요청에서 반환할 최대 항목 수LastEvaluatedKey 현재 페이지의 마지막 항목 (다음 페이지 조회 시 사용)ExclusiveStartKey 다음 페이지의 조회 시작점 (이전 LastEvaluatedKey 값) 전체 데이터 조회 예제따라서 일반적인 RDBMS의 "Select * From Users"와 같은 query로는 모든 데이터를 조회할 수 가 없습니다.아래는 DynamoDB에서 1만개의 데이터를 페이지네이션으로 전체 데이터를 조회하는 예제입니다.import boto3# Dynam..
AWS - Athena 날짜관련 함수
·
Platform/AWS
DATE_TRUNC()[ 설명 ]- 특정 날짜를 연, 월, 주, 일 단위로 "절단(Truncate)"하는 함수- 주어진 날짜의 해당 단위 시작일을 반환- 결과는 TIMESTAMP 타입- DATE_TRUNC()는 특정 기간(주, 월, 연도)의 시작점을 구할 때 유용! [ 기본 문법 ]DATE_TRUNC('단위', date_column) 단위year 해당 연도의 시작일 2025-01-01 00:00:00.000month 해당 월의 시작일 2025-03-01 00:00:00.000week 해당 주의 시작일 (월요일) 2025-03-10 00:00:00.000day 해당 날짜의 시작시간 2025-03-17 00:00:00.000hour 해당 시간의 시작시간 2025-03-17 14:00:00.000[ 예제 ]S..
[이코테] [7] 투포인터
·
Programming/CodingTest
투 포인터 알고리즘은 리스트에 순차적으로 접근해야 할 때두 개의 점의 위치를 기록하면서 처리하는 알고리즘. [ 문제 ]특정한 합을 가지는 부분 연속 수열 찾기 - N개의 자연수로 구성된 수열 : [1, 2, 3, 2, 5]- 합이 M인 부분 연속 수열의 개수를 구하세요.- 수행 시간 제한은 O(N)입니다. [ 풀이 ]1) left와 right 두 개의 포인터 사용:left: 부분 수열의 시작 인덱스.right: 부분 수열의 끝 인덱스 (확장하면서 합을 계산).2) 슬라이딩 윈도우 방식으로 합을 조절:합(current_sum)이 M보다 작으면 right 증가 (부분 수열 확장).합이 M보다 크면 left 증가 (부분 수열 축소).합이 M이면 카운트 증가하고 left 이동.3) 모든 요소를 한 번씩만 탐색하..
kafka - connector 구성요소
·
DataPipeline/Kafka
구성 요소 ( Connector, Converter, Transform )Kafka Connect는 여러 컴포넌트로 구성된 플러그형 아키텍처를 바탕으로 유연한 데이터 통합 파이프라인을 제공합니다. 주요 컴포넌트로는 데이터 소스 및 싱크와 상호작용하는 커넥터(Connectors), 데이터 직렬화/역직렬화를 담당하는 컨버터(Converters), 데이터 변환을 수행하는 변환기(Transforms)가 있습니다. ConnectorKafka Connect 파이프라인의 주요 구성 요소는데이터가 어디에서 복사되어야 하는지를 정의하는 커넥터 인스턴스입니다. 커넥터 인스턴스에 의해 구현되거나 사용되는 모든 클래스는 해당 커넥터 플러그인에 정의되어 있고,이러한 플러그인은 코드 작성을 하지 않고 다운로드, 설치 및 사용할 ..
Python - Counter
·
Programming/Python
생성 및 확인from collections import Counter# 리스트 요소 개수 세기nums = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]counter = Counter(nums)print(counter) # Counter({4: 4, 3: 3, 2: 2, 1: 1})# 문자열 문자 개수 세기text = "hello world"counter = Counter(text)print(counter) # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})# 키인덱스counter['l'] # 2counter.values()# dict_values([1, 1, 3, 2, 1, 1, 1, 1]) Counter 직..
Redis - 동기 vs 비동기 명령어
·
Storage/Redis
Redis 주요 동기(Synchronous) 명령어명령어 실행시 Redis 메인 스레드가 차단, 블로킹(Blocking)명령어 처리 완료 후 클라이언트에 응답데이터 일관성 보장, 데이터 처리 완료 후 다음 명령어 처리Redis 비동기(Asynchronous) 명령어메인 스레드에서 키 참조를 즉시 해제하지만, 실제 메모리 해제는 백그라운드 스레드에서 처리대규모 데이터 삭제, 백업 작업 시 사용Redis 메인 스레드의 차단을 최소화하여 서비스 성능에 미치는 영향을 줄임 동기 / 비동기 사용 케이스 비교동기비동기작고 빠른 작업에 적합큰 데이터 삭제, 백그라운드 작업 시 적합메모리 부족 상황에서 즉시 메모리 회수메인 스레드 차단을 최소화데이터 일관성 보장서비스 중단 없이 대량 데이터 처리   동기 / 비동기 명..
wave35
아그거뭐였지?