일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring boot
- API
- 프레임워크
- ES
- Java
- mongoDB
- 자바
- Spring
- 코드
- 그리디알고리즘
- database
- 애자일기법
- 데이터베이스
- 그리디
- 백준
- Elasticsearch
- 엘라스틱서치
- Baekjoon
- JPA
- 코딩테스트
- 개발
- 스프링
- cleancode
- 코딩
- 알고리즘
- 애자일프로그래밍
- 읽기쉬운코드
- framework
- 개발자
- 클린코드
- Today
- Total
목록전체 글 (182)
튼튼발자 개발 성장기🏋️
영속성은 데이터베이스에 커밋된 쓰기 작업이 영구적으로 유지되도록 보장하는 데이터베이스 시스템의 속성이다. MongoDB에서는 클러스터 또는 복제 셋 수준에서 영속성을 고려해야한다. 저널링을 통한 멤버 수준의 영속성MongoDB는 데이터의 일관성과 복구 기능을 향상시키기 위해 Write-Ahead Logging(WAL) 방식의 저널링을 사용한다. 이는 데이터 손실을 방지하고 장애 발생 시 복구할 수 있도록 설계된 기능이다. 특히 WiredTiger 스토리지 엔진을 사용하는 경우 저널링을 통해 데이터 무결성을 유지할 수 있다.MongoDB 6.1 버전부터는 저널링이 기본적으로 활성화되며, 별도의 설정 없이 자동으로 적용된다. 이를 통해 데이터 충돌 방지 및 장애 복구 시간 단축과 같은 이점을 얻을 수 있다...
트랜잭션(Transaction)이란?트랜잭션은 읽기나 쓰기 작업이 가능한 데이터베이스 작업을 하나 이상 포함하는 데이터베이스의 논리적 처리 단위이며 각 그룹과 트랜잭션은 여러 도큐먼트에 대한 읽기, 쓰기와 같은 작업을 하나 이상 포함할 수 있다. MongoDB의 경우에는 여러 작업, 컬렉션, 데이터베이스, 도큐먼트 및 샤드에서 ACID 호환 트랜잭션을 지원한다.트랜잭션의 주요 특징원자성 (Atomicity): 트랜잭션 내 모든 작업이 성공해야만 최종적으로 커밋된다.일관성 (Consistency): 데이터가 트랜잭션 시작 전후로 일관성을 유지한다.고립성 (Isolation): 트랜잭션이 완료되기 전까지 다른 작업에서 변경된 데이터를 볼 수 없다.영속성 (Durability): 트랜잭션이 완료되면 데이터가 ..
MongoDB에서 제한 컬렉션은 고정된 크기를 가지며, 저장 공간이 초과되면 가장 오래된 데이터가 자동으로 삭제되는 특성을 가진 컬렉션이다. 제한 컬렉션은 주로 로그 데이터, 센서 데이터, 실시간 데이터 스트림과 같이 일정량의 최신 데이터만 유지해야 하는 경우에 사용된다.제한 컬렉션 특징고정된 크기: 설정된 크기를 초과하면 가장 오래된 문서가 자동으로 삭제됨쓰기 성능 최적화: 미리 할당된 공간을 사용하여 성능이 우수함자동 삭제: 별도의 삭제 연산 없이 오래된 데이터가 자동으로 사라짐정렬 보장: _id 필드 기준으로 입력 순서가 보장됨// 제한 컬렉션 생성db.createCollection("capped_logs",{ "capped":true, "size":1048576, "max":1000})..
공간 정보 인덱스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. insertOne(): 하나의 도큐먼트 삽입하나의 도큐먼트를 컬렉션에 삽입할 때 사용된다.db.movies.insertOne({"title": "Stand by Me", "year": 1986});위 예제는 movies 컬렉션에 title이 "Stand by Me"이고 year가 1986인 도큐먼트를 삽입한다. 2. insertMany(): 여러 도큐먼트 삽입여러 개의 도큐먼트를 한 번에 삽입할 때 사용된다.db.movies.insertMany([ {"title": "Stand by Me", "year": 1986}, {"title": "The Shawshank Redemption", "year": 1994}, {"title": "Forrest Gump", "year": 1994} ])..
도큐먼트(Documents) MongoDB의 핵심은 정렬된 키와 연결된 값의 집합으로 이루어진 도큐먼트라는 것이다. 도큐먼트는 데이터를 저장하는 기본 단위이며, JSON(JavaScript Object Notation)과 유사한 BSON(Binary JSON) 형식으로 저장된다. RDB의 `행`에 해당하는 개념이다. 도큐먼트는 데이터형과 대소문자를 구분한다. 예를들어 { "count": 5 }와 { "count": "5" } 는 서로 다른 도큐먼트로 구분된다. 당연히 키는 중복될 수 없다.도큐먼트의 특징1. 키-값(Key-Value)도큐먼트는 아래와 같이 { "key": value } 형태의 필드로 구성된다.{ "name": "dotori", "age": 33, "email": "dotori@exa..