일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 애자일기법
- Elasticsearch
- 읽기쉬운코드
- Baekjoon
- 알고리즘
- 코딩테스트
- 자바
- 애자일프로그래밍
- 프레임워크
- Java
- mongoDB
- spring boot
- Spring
- 코드
- 코딩
- 백준
- 클린코드
- 그리디알고리즘
- 개발자
- database
- 데이터베이스
- 엘라스틱서치
- JPA
- 스프링
- 개발
- ES
- framework
- cleancode
- 그리디
- API
- Today
- Total
목록database (20)
튼튼발자 개발 성장기🏋️
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는 MariaDB와 같은 RDB와는 다르게 도큐먼트 지향 데이터베이스로써 행 개념 대신 문서(document)라는 유연한 모델을 사용하여 손쉬운 사용을 할 수 있다. 왜 손쉽게 사용할 수 있을까? 손쉬운 사용 유연한 데이터 모델링앞서 이야기한 것 처럼 MongoDB는 스키마가 유연한 데이터베이스다. 즉, 테이블의 구조를 사전에 정의할 필요 없이, 각 문서가 다른 필드를 가질 수 있다. 이를 통해 개발자는 더 빠르게 프로토타입을 만들거나, 변동성이 큰 데이터 구조에 맞게 데이터를 저장할 수 있다.예를들어, 사용자마다 다른 데이터 필드를 가..

1. 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아닐 것이다. 지금 내가 리딩하고 있는 토이프로젝트만 봐도 유저 엔티티에 피드 엔티티, 댓글 엔티티 등 많은 엔티티와 연관관계를 갖는데 항상 사용되지는 않는다. 유저의 정보를 조회할 때 이 사용되지 않는 엔티티까지 조회하는 것은 굉장한 부담이 되고 비효율적일 것이다.JPA는 이런 문제를 해결하고자 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라고 한다. 이 지연 로딩을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이 것을 프록시 객체라 부른다.1.1. 프록시 기초 프록시는 JPA가 엔티티의 연관관계를 처리하는 핵심적인 기법 중 하나로, 실제 ..
1. 상속 관계 매핑객체 지향 프로그래밍에서 상속은 중요한 개념인 것은 누구나 알고 있는 사실이다. JPA에서는 이러한 상속 관계를 데이터베이스 테이블에 매핑하는 여러 가지 전략을 제공한다.1.1. 조인 전략 (Joined Strategy)조인 전략은 부모 클래스와 자식 클래스 각각에 대한 테이블을 생성하고, 자식 클래스의 테이블은 부모 클래스의 기본 키를 외래 키로 참조하는 방식이다.@Entity@Inheritance(strategy = InheritanceType.JOINED)public abstract class Item { @Id @GeneratedValue private Long id; private String name;}@Entitypublic class Book extend..
단방향 연관관계순수한 객체 연관관계순수한 객체 모델에서는 클래스 간의 연관관계를 필드를 통해 나타낸다. 예를 들어, Member 객체가 Team 객체와 연관관계를 가질 때, Member 클래스는 Team 객체를 참조하는 필드를 가질 수 있다.public class Member { private Long id; private String name; private Team team;}public class Team { private Long id; private String name;}테이블 연관관계관계형 데이터베이스에서는 이러한 연관관계를 외래 키(Foreign Key)를 통해 관리한다. 위의 객체 모델을 데이터베이스에 매핑하면, MEMBER 테이블에는 TEAM_ID라는 외래 키..

엘라스틱 서치 검색엔진은 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램이다. 검색 결과로 제공되는 데이터의 특성에 따라 구현 형태가 달라진다. 검색 시스템은 대용량 데이터의 검색 결과를 제공하기 위해 검색엔진을 기반으로 구축된 시스템이다. 수집기를 이용해 데이터를 수집하고 이를 다수의 검색엔진을 이용해 색인하여 UI로 검색 결과를 제공한다. 엘라스틱서치는 이와 같은 검색엔진이며 이를 사용하여 검색 시스템을 구축할 수 있다. 검색 시스템 검색 시스템의 구성 요소 검색 시스템은 데이터를 수집하는 수집기, 데이터를 저장하는 스토리지, 데이터를 검색에 적절한 형태로 변환하는 색인기, 색인된 데이터에서 일치하는 문서를 찾는 검색기로 구성된다. 수집기 수집기는 웹에서 필요한 정보를 수집하는 프로그램이다. 웹상..