본문 바로가기

All205

[MongoDB] Ch10 - 복제 몽고DB의 고가용성 시스템인 복제 셋을 소개하며 아래와 같은 내용을 다뤄보자 복제 셋의 정의 복제 셋을 설정하는 방법 복제 셋 멤버 구성 옵션 10.1 복제 소개 서버를 단일로 사용하면 매우 위험하다 복제는 데이터의 동일한 복사본을 여러 서버상에서 보관하는 방법이며 실제 서비스를 배포할 때 권장된다 한 대 또는 그 이상의 서버에 이상이 발생하더라도, 복제는 애플리케이션이 정상적으로 동작하게 하고 데이터를 안전하게 보존한다 몽고DB를 사용하면 복제 셋을 생성함으로써 복제를 설정할 수 있다 복제 셋은 클라이언트 요청을 처리하는 프라이머리 서버 한 대와, 프라이머리 데이터의 복사본을 갖는 세컨더리 서버 여러 대로 이루어진다 프라이머리 서버에 장애가 발생하면 세컨더리 서버는 자신들 중에서 새로운 프라이머리 서버.. 2022. 1. 18.
[Spring Cloud] 에러없이 무중단 배포하기 (retry, graceful shutdown) - Eureka 등록해제 시간차이로 인한 익 안녕하세요~ 잭코딩입니다! 이번에는 운영환경에서 배포를 하다가 발생한 이슈에 대해 정리해보려고 합니다 Spring Cloud 환경에서 배포할 때, Eureka 등록해제 시간차이로 인한 Connection Exception이 발생했습니다 또한, 배포 시 해당 서비스를 강제 종료할 때 아직 작업중이던 테스크가 남아 있을 경우 익셉션이 발생했습니다 retry()와 graceful shutdown을 적용함으로써 이를 해결할 수 있었습니다 Exception I/O error on POST request "서비스 URL" : nested exception is java.net.ConnectionException 서비스를 배포할 때 매번 10~20초정도 위와 같은 익셉션이 가끔 발생했습니다 처음에는 트래픽이 많은 서.. 2022. 1. 11.
[MongoDB] Ch9 - 애플리케이션 설계 애플리케이션을 몽고DB와 효율적으로 작동하도록 설계하는 방법을 다뤄보자 스키마 설계 고려 사항 데이터 내장 방식과 참조 방식 중 결정하기 최적화를 위한 팁 일관성 고려 사항 스키마 마이그레이션 방법 스키마 관리 방법 몽고DB가 데이터 스토리지로 적합하지 않은 경우 9.1 스키마 설계 고려 사항 데이터 표현의 핵심 요소는 데이터가 도큐먼트에서 표현되는 방식인 스키마 설계다 가장 좋은 설계 접근 방식은 애플리케이션에서 원하는 방식으로 데이터를 표현하는 방법이다 스키마 모델링 전, 먼저 쿼리 및 데이터 접근 패턴을 이해해야 한다 스키마 설계할 때 고려할 주요 요소 제약 사항 데이터베이스와 하드웨어 제약 사항을 이해해야 한다 도큐먼트의 최대 크기는 16MB이며, 디스크에서 전체 도큐먼트를 읽고 쓴다 갱신은 전체.. 2022. 1. 11.
[MongoDB] Ch8 - 트랜잭션 몽고DB는 여러 작업, 컬렉션, DB, 도큐먼트 및 샤드에서 ACID 호환 트랜잭션을 지원한다 8.1 트랜잭션 소개 트랜잭션은 읽기나 쓰기 작업이 가능한 데이터베이스 작업을 하나 이상 포함하는 데이터베이스의 논리적 처리 단위다 트랜잭션의 중요한 특징은 작업이 성공하든 실패하든 부분적으로는 완료되지 않는다는 점이다 트랜잭션을 사용하려면 몽고DB 버전 4.2 이상이어야 한다 1. ACID의 정의 ‘진정한’ 트랜잭션이 되려면 ACID라는 속성을 충족해야 한다 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 영속성(Durablity)의 약어다 ACID 트랜잭션은 정전 등 오류가 발생할 때도 데이터와 데이터베이스 상태의 유효성을 보장한다 원자성(Atomicity) 트랜잭션.. 2022. 1. 4.
[MongoDB] Ch7 - 집계 프레임워크 몽고DB는 집계 프레임워크를 사용해 분석을 실행하기 위한 강력한 지원이 제공됩니다 집계 프레임워크 집계 단계 집계 표현식 집계 누산기 7.1 파이프라인, 단계 및 조정 기능 항목 집계 프레임워크는 몽고DB 내 분석 도구 모음으로, 하나 이상의 컬렉션에 있는 도큐먼트에 대한 분석을 수행하게 해준다 집계 파이프라인은 배시와 같은 리눅스 셸 파이프라인과 매우 유사한 개념이며, 단계마다 특정 작업을 수행한다 집계 파이프라인의 개별 단계는 데이터 처리 단위다 한 번에 입력 도큐먼트 스트림을 하나씩 가져와서, 각 도큐먼트를 하나씩 처리하고, 출력 도큐먼트 스트림을 하나씩 생성한다 각 단계는 knobs 또는 tunables 셋을 제공한다 이러한 tunables은 일반적으로 필드를 수정하거나, 산술 연산을 수행하거나,.. 2022. 1. 4.
[Pygame] Python(파이썬)으로 비행기 게임만들기 - (1) 화면 색상 바꾸기 안녕하세요~ 잭코딩입니다! 파이썬의 pygame 모듈을 이용해서 게임을 만들어볼까요? 오늘은 비행기게임 - (1) 화면 색상 바꾸기를 진행해볼게요 1. pygame 설치 pip install pygame 2. 기본 화면 구성하기 💡 해당 코드를 따라서 작성해보고 실행해보세요 import pygame # 1. 게임 초기화 pygame.init() # 2. 게임창 옵션 설정 size = [400, 900] screen = pygame.display.set_mode(size) title = "title" pygame.display.set_caption(title) # 3. 게임 내 필요한 설정 clock = pygame.time.Clock() # FPS를 위한 변수 color = (255,255,255) # .. 2021. 12. 24.
[MongoDB] Ch6 - 특수 인덱스와 컬렉션 유형 6장에서는 아래와 같은 내용을 알아보자 큐 같은 데이터를 위한 제한 컬렉션 캐시를 위한 TTL 인덱스 단순 문자열 검색을 위한 전문 인덱스 2D 구현 및 구면 기하학을 위한 공간 정보 인덱스 대용량 파일 저장을 위한 GridFS 6.1. 공간 정보 인덱스 몽고DB는 2dsphere와 2d라는 공간 정보 인덱스를 가진다 WGS84 좌표계를 기반으로 지표면을 모델링하는 구면 기하학으로 작동한다 1. 공간 정보 쿼리 유형 공간 정보 쿼리는 교차, 포함, 근접이라는 세 가지 유형이 있다 {”$geometry” : geoJsonDesc}와 같은 GeoJSON 객체로 지정한 $geoIntersects 연산자를 사용해 쿼리 위치와 교차하는 도큐먼트를 찾을 수 있다 2. 공간 정보 인덱스 사용 몽고DB의 공간 정보 인.. 2021. 12. 24.