일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- 자바
- 스프링
- 코딩
- 애자일기법
- 클린코드
- Elasticsearch
- 코드
- 개발
- database
- 애자일프로그래밍
- 읽기쉬운코드
- 엘라스틱서치
- 코딩테스트
- JPA
- 개발자
- 그리디알고리즘
- 그리디
- 알고리즘
- 프레임워크
- spring boot
- 데이터베이스
- mongoDB
- ES
- cleancode
- API
- framework
- Baekjoon
- Spring
- 백준
- Today
- Total
목록인덱스 (5)
튼튼발자 개발 성장기🏋️
공간 정보 인덱스MongoDB는 공간 데이터를 효율적으로 검색하기 위해 2dsphere 인덱스를 지원한다. 이는 지구상의 좌표(경도 및 위도)를 저장하고 검색할 때 사용된다. 공간 정보를 저장할 때는 GeoJSON 형식을 사용하며, 주요 기하 구조는 다음과 같다.점(Point) { type: "Point", coordinates: [경도, 위도] }선(LineString){ type: "LineString", coordinates: [[경도1, 위도1], [경도2, 위도2], ...] }다각형(Polygon){ type: "Polygon", coordinates: [[[경도1, 위도1], [경도2, 위도2], ..., [경도1, 위도1]]] }참고로 내장객체 내 필드(type과 coordinates)는 ..
explain 출력MongoDB에서 explain 메서드는 쿼리 실행 계획을 분석하는 데 사용된다.쿼리를 최적화하고 성능을 향상시키기 위해 반드시 확인해야 할 주요 필드들은 다음과 같다. 1. queryPlannerplannerVersion: 실행 계획을 생성한 쿼리 플래너의 버전.namespace: 쿼리가 실행된 컬렉션 정보 (DB명.컬렉션명).indexFilterSet: 특정 인덱스를 강제하는 hint()를 사용했는지 여부.parsedQuery: MongoDB가 내부적으로 해석한 쿼리 조건.winningPlan: 실제로 선택된 실행 계획.rejectedPlans: 평가되었으나 선택되지 않은 실행 계획들.2. winningPlan (선택된 실행 계획)stage: 실행된 주요 연산 단계 (e.g., CO..

인덱싱 소개MongoDB에서 인덱스는 데이터 검색 성능을 향상시키는 핵심 요소다. 인덱스가 없는 경우, MongoDB는 컬렉션의 모든 문서를 순차적으로 검색하는 컬렉션 스캔을 수행해야 한다. 이는 데이터 양이 많아질수록 성능 저하시킨다는 점에 유의해야한다.인덱스를 생성하면 MongoDB는 특정 필드에 대한 값을 정렬된 형태로 저장하고, 해당 필드의 값을 기반으로 문서를 빠르게 찾을 수 있다. 이는 RDB의 인덱스와 유사하며, 효율적인 데이터 검색을 가능하게 한다.인덱스 생성MongoDB에서 인덱스를 생성하는 기본적인 방법은 createIndex() 메서드를 사용하는 것이다.// 단일 필드 인덱스 생성 db.collection.createIndex({ fieldName: 1 }); // 오름차순 인덱스 d..

엘라스틱서치의 기본 용어 엘라스틱서치의 데이터는 [그림 1]과 같이 인덱스, 타입, 문서, 필드 구조로 구성된다. 인덱스 인덱스는 데이터를 저장하는 공간이다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 엘라스틱서치는 인덱스 생성 시 기본적으로 5개의 프라이머리 샤드와 1개의 레플리카 샤드 세트를 생성한다. 각각의 샤드 수는 인덱스를 생성할 때 옵션을 이용해 변경할 수 있다. 인덱스의 이름은 모두 소문자여야한다. 만약 인덱스가 없는 상태에서 데이터가 추가된다면 데이터를 이용해 인덱스가 자동으로 생성된다. 샤드 색인된 문서는 하나의 인덱스에 담긴다. 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티..

앞서 언급한 분산의 포인트는 OS 캐시 활용과 인덱스(색인) 사용 그리고 확장을 고려하여 시스템을 설계하는 것이다. (MySQL은 물론이고 RDBMS는 인덱스를 생성하고 그로 인해 빠르게 데이터를 검색할 수 있는 구조가 마련되어 있다.) 보통 신규 프로젝트를 개발하게 될 때면 테이블 스키마를 그려하고 create table 쿼리로 테이블을 생성할 수 있다. 이 부분이 큰 규모일 수록 중요한 부분이 생기는데, 스키마를 얼마나 고려했는지, 분산과 확장성을 얼마나 고려했는지에 따라서 데이터가 큰 차이로 증감할 수 있다는 것을 이전 포스팅을 통해 알게되었다. 따라서 대량의 데이터가 저장되는 테이블일 수록 래코드가 최대한 작아지도록 컴팩트하게 설계되어야 한다. MySQL의 인덱스 경우에는 빠른 탐색을 위해 B트리..