분류 전체보기

DB/DataBase

트랜잭션의 ACID

데이터베이스에서의 트랜잭션 이란? ➡️ 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 이 때, 하나의 논리적 기능을 수행하기 위해서는 여러 개의 질의(쿼리)가 필요할 수 있음 트랜잭션은 묶여있는 여러 질의들을 모두 완료해야 정상적으로 종료됨 만약 트랜잭션에 속해있는 질의 중 하나라도 실패하면 그 트랜잭션은 실패한 것임 EX) 인터넷 뱅킹으로 10000 원을 송금하는 상황 A 가 B 에게 10000 원을 송금하는 경우 A 의 계좌에서 10000 원을 차감하고, B 의 계좌에서 10000 원을 증가시킴 START TRANSACTION; UPDATE Account SET balance = balance - 10000 WHERE account_id = 'A'; UPDATE Account SET..

ETC

QueryDSL이란?

QueryDSL란 ? Query Domain Specific Language SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 빌더 오픈소스 💡 JPQL이란 ? JPA에서 지원하는 다양한 쿼리 방법 중 가장 단순한 조회 방법으로, SQL의 경우에는 DB 테이블을 대상으로 쿼리를 질의하지만, JPQL은 엔티티 객체를 대상으로 쿼리를 질의 JPQL String username = "java"; String jpql = "select m from Member m where m.username = :username"; List result = em.createQuery(query, Member.class).getResultList(); QueryDSL String username = "java"; List..

ETC

쿠버네티스(k8s)의 구조 - 쿠버네티스 시리즈(1)

용어 뜻 컨테이너 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술 컨테이너 런타임 컨테이너를 다루는 도구 도커 컨테이너를 다루는 도구 중 하나 쿠버네티스 컨테이너 런타임을 통해 컨테이너를 오케스트레이션 하는 도구 오케스트레이션 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위 Pod 파드(Pod)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위 쿠버네티스 ≠ 도커 관리 툴 정확하게는 도커를 관리하는 도구가 아니라, 컨테이너를 관리하는 도구 쿠버네티스란 ? 컨테이너화 된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향 컨테이너로 이루어진 것들을 손쉽게 담고 관..

ETC

Docker의 컨테이너 격리

Virtual Machine(가상머신) Host OS : 가상머신이 구동되는 PC 의 운영체제 Guest OS : 각 가상머신 내에서 구동되는 별도의 운영체제 하이퍼바이저(Hypervisor) : 가상머신을 생성하고 구동하는 소프트웨어 위 그림처럼 가상머신은 애플리케이션과 OS 가 함께 가상화 된 것이다. 따라서 각 가상머신의 Guest OS 는 다른 가상머신들의 Guest OS 와 완전히 독립된 공간과 시스템 자원을 할당받고 사용한다. 즉 하이퍼바이저는 애플리케이션과 OS 를 같이 가상화하여 각 가상머신을 격리시킨다. 따라서 각 가상머신은 Guest OS 로 인해 Host OS 에게 많은 리소스를 요구하며 실행 시 부팅이 필요하다. Container(컨테이너) Docker Engine : 컨테이너를 구..

ETC

Redis vs Memcached

정의 Redis 와 Memcached 는 대표적인 오픈소스 기반의 인메모리 데이터 저장소이다. 둘 다 사용하기 쉽고 고성능을 자랑하지만, 꽤나 많은 차이점이 존재한다. 결론적으로는 Redis 가 거의 모든 면에서 우수하다. 주요 특징 비교 항목 Memcached Redis 데이터 분할 O O 다양한 데이터 타입 X O 멀티 스레드 지원 O X 데이터 저장(영속성) X O 데이터 복제 X O 트랜잭션 지원 X O pub/sub 구조 지원 X O 공통점 오픈소스이며, 인메모리 데이터 저장소이다. NoSQL 을 사용하여 key-value 형태로 데이터를 저장한다. 데이터를 분할하여 저장할 수 있다. 차이점 확장성 Memcached - scale up 방식 사용 사양을 업그레이드해서 확장하는 방식 Memcach..

알고리즘/백준

백준 7579 - 토마토 Java

https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 1 초 256 MB 72264 30188 22120 41.591% 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나..

ETC

TDD(Test Driven Development)

TDD 란? TDD 란 Test Driven Development 의 약자로 '테스트 주도 개발' 이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 실제 코드에 추가하는 단계를 반복하여 기능을 구현한다. TDD 의 적용 방법 예를 들어 클라이언트에게 제공한 프로그램에 “태어난 년도를 입력하면 현재 나이가 출력” 되는 기능이 있는데, 클라이언트가 “95년생을 입력하니까 31살이라는 잘못된 결과가 나옵니다(95년생 = 29살)” 라는 요청을 했다고 가정해보자. 이 문제를 TDD 방식으로 해결해보는 시나리오이다. 일반적으로 TDD 는 총 3단계의 테스트를 통해 하나의 이슈를 처리한다. assert(A, B) 메서드 A == B 이면 succe..

DB/DataBase

Database Index

데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조 동작 원리 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 쿼리문에 인덱스 생성 컬럼을 WHERE 조건으로 거는 등, 작업을 할 경우 옵티마이저에서 판단하여 생성된 인덱스를 활용 가능 인덱스에 저장되어 있는 데이터의 물리적 주소로 가서 데이터를 가져오는 식으로 동작하게 되어 검색 속도 향상 오름차순으로 정렬하기 때문에 정렬된 주소 체계 💡 옵티마이저 : 가장 효율적인 방법으로 SQL을 수행할 최적의 처리 경로를 생성해주는 DBMS의 핵심 엔진, 컴퓨터의 두뇌가 CPU인 것처럼, DBMS의 두뇌는 옵티마이저 인덱스의 장점 가장 큰 특징은 데이터들이 정렬되어 있다는 점 조..

D_Helloper
'분류 전체보기' 카테고리의 글 목록 (6 Page)