728x90
반응형
- Elasticsearch에 대하여2024-03-21 15:48:46Elasticsearch는 Apache Lucene 기반의 Java 오픈 소스 분산 검색 엔진이다. Elasticsearch를 통해 방대한 양의 데이터를 신속하게(≒ 실시간) 저장, 검색, 분석을 수행할 수 있다. Elasticsearch는 검색 엔진으로 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstash / Kibana) 스택으로 사용되기도 한다. 이러한 Elasticsearch는 대규모 로그 파일 관리나 실시간 검색 서비스 등과 같이 대용량 데이터를 빠르게 처리해야 하는 경우 유용하게 사용될 수 있다. 데이터 저장 방법(RDBMS와 차이점) RDB는 정규화된 스키마에 따라 데이터를 구조화하지만, Elasticsearch는 JSON 문서 형태로 비정형 데이터도 저장하고 인덱싱..
- DB Soft Delete VS Hard Delete2024-03-20 08:52:03Soft Delete 와 Hard Delete 란? 데이터베이스에서 데이터를 삭제하는 방법은 크게 두 가지로 나뉩니다. Hard Delete 우리가 잘 아는 Delete 문을 사용하여 실제 row를 삭제하는 방법 Soft Delete 삭제 표시(deleted_at 필드에 현재 시간을 넣어주는 방법 등)를 해줌으로써 삭제된 필드라는 의미를 부여하는 방법 이 글을 쓴 이유 데이터간 관계있는 경우, join을 계속해서 해야하는 경우 Soft Delete를 이용하는 경우가 종종 있습니다. 다음 내용은 이벤트 티케팅 서비스에서 Soft Delete로 인하여 장애를 겪었던 이야기입니다. 좌석이 결제/예약이 되면 deleted_at으로 예약됨을 표시하고 있는 서비스에서 예약된 좌석을 뽑아내어 다시 재저장하는 DB ..
- 직렬화(Serialization)란 무엇일까?2024-03-01 11:01:06직렬화라는 용어에 대해서 들어만 보고 공부해본 적이 없기에 이번 기회에 정리하게 되었다.public interface Serializable {}Serializable의 인터페이스를 보면 메소드가 하나도 없는 것을 볼 수 있다. 아무런 구현해야 할 메소드도 없는 이 인터페이스가왜 있는걸까 개발을 하다보면 아래와 같은 경우가 존재한다.생성한 객체를 파일로 저장할 일이 있을 수도 있다.저장한 객체를 읽을 일이 생길 수 있다.다른 서버에서 생성한 객체를 받을 일도 생길 수 있다.이럴 때 꼭 필요한 것이 Serialization 이다. 우리가 만든 클래스가 파일을 읽거나 쓸 수 있도록 하거나, 다른 서버로 보내거나받을 수 있도록 하려면 반드시 이 인터페이스를 구현해야 한다.Serializable 인터페이스를 구..
- REST API 상태 코드 관리2024-02-01 22:00:58Spring관련 공부를 하다가 HTTP Status Code 제어 파트가 나왔다. 좋은 REST API를 설계하는 방법 중 하나는 서버로부터 적절한 상태코드를 반환시키는 것이다. 때문에 그에 대해 더 알고싶어서 찾아보게 되었다. 이 글은 POST 201 상태코드에 대한 내용을 정리하였고, 차차 ResponseEntity를 이용한 상태코드 관리법을 더 정리할 예정이다. (HTTP 상태 코드란?) UserController에서 새로운 user를 저장하는 코드를 가지고 왔다. @PostMapping("/users") public void createUser(@RequestBody User user) { User savedUser = service.save(user); } Post를 사용하고, http요청의 본..
- HTTP 상태 코드2024-01-25 16:02:00HTTP 상태 코드? HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려준다. 응답은 5개의 그룹으로 나누어진다. 분류 1xx (Informational) : 정보 2xx (Successful) : 성공 3xx (Redirection) : 리다이렉션 완료 4xx (Client Error) : 요청 오류(클라이언트 오류) 5xx (Server Error) : 서버 오류 모든 상태 코드에 대한 내용 1xx (Informational) : 정보 요청을 받았으며 프로세스를 계속 진행한다. 상태 코드 요약 설명 100 Continue 클라이언트가 서버로 보낸 요청에 문제가 없으니 다음 요청을 이어서 보내도 된다는 것을 의미/ 이미 요청이 완료되었다면, 이 응답은 무시해도 된다. 2xx (..
- 연관관계 매핑2024-01-22 22:26:27포트폴리오 준비를 하면서 가장 헷갈렸던 내용으로 연관관계 매핑과 데이터베이스의 외래키와 똑같이 생각하다가 함정에 빠진적이 있기에 알아보겠다. 데이터베이스에서는 외래키라는 하나의 컬럼을 가지고 연관관계를 표현한다. 그러나 JPA에서는 객체를 매핑한다. 따라서 JPA에서의 연관관계 매핑은 관계의 방향 다중성(다대일? 일대다? 다대다?) 연관관계의 주인 이 세가지가 중요하다. 아래에 정리한 내용에서 위의 3가지를 알아볼 것이다. 단방향 연관관계 연관관계 중 다대일(N:1)을 먼저 알아보겠다. 다음에서 설명할 예제의 객체들은 다음의 관계이다. 게시글은 작성자가 있습니다. 게시글은 한명의 작성자에게만 소속되어 있습니다. 게시글은 작성자와 다대일 관계입니다. 위의 관계를 나타낸 객체 연관관계와 테이블 연관관계는 아..
- STOMP 란?2024-01-17 14:09:39오늘은 실시간 채팅 및 채팅방 동적 생성을 구현하기 위해 STOMP에 대해서 알아보겠다. STOMP(Simple/Streaming Text Oriented Messaging Protocol) 텍스트 기반의 메시지 프로토콜이다. 클라이언트와 서버 간 전송할 메시지의 유형, 형식, 내용들을 정의한 규칙(FRAME)으로 TCP 또는 WebSocket과 같은 양방향 네트워크 프로토콜 기반으로 동작한다. HTTP와 같은 프로토콜에서 사용되는 request-response 패턴과 다르게, 브로커와 연결된 클라이언트 간에 메시지를 교환하는 방식으로 동작한다. STOMP는 기본적으로 Publish-Subscribe 구조로 되어있으며, 이 구조는 메시지를 공급하는 주체와 소비하는 주체를 분리해 제공하는 메시징 프로토콜이..
- [실전 알고리즘] 큐2024-01-12 10:38:42정의와 성질 저번에 정리한 스택이랑 이번에 배울 큐랑 비슷한게 많다. 큐는 한쪽 끝에서 원소를 넣고 반대쪽 끝에서 원소를 뺄 수 있는 자료구조이다. 스택에서는 먼저 들어간 원소가 나중에 나왔는데 큐에서는 먼저 들어간 원소가 먼저 나오게 된다. 스택을 FILO(First In Last Out)이라고 한 것과 비슷하게 큐를 FIFO(First In First Out)이라고 하기도 한다. 큐의 성질 원소의 추가가 O(1) 원소의 제거가 O(1) 제일 앞/뒤의 원소 확인이 O(1) 제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능 스택에서는 보통 원소가 추가되고 제거되는 곳을 top이라고 부르고, 원소가 위 아래로 배치된 것으로 생각을 많이 하는데 큐에서 추가되는 곳을 rear, 즉 뒤 쪽이라고..
728x90
반응형