분류 전체보기

자비스 앤 빌런즈 (삼쩜삼) 개발자 공채 챌린지 후기
“삼쩜삼”으로 잘 알려진 자비스 앤 빌런즈 하반기 공개 채용 챌린지를 참가하면서 느낀점을 정리해보려한다. 일반 채용 프로세스는 “서류 - 과제 테스트 - 1차 기술면접 - 2차 컬쳐핏 면접 - 3차 C-Level (임원면접)”로 되어있기는 했는데 프로그래머스에서 진행한 공채 챌린지 전형은 면접이 몇 번인지는 모르겠다. 나는 코딩 테스트 - 과제 테스트 - 1차 면접까지만 진행하고 채용 절차가 마무리 되었다. 코딩 테스트 우선 코딩 테스트. 코딩 테스트의 난이도 자체는 별로 어렵지 않았던 것 같다. “간단한 구현 2문제, BFS 1문제, 덱을 이용한 구현 1문제”로 총 4문제가 출제되었다. 시간은 3시간이었지만 얼추 2시간만에 다 풀고 나왔던 것 같다. 문제를 풀면서 시간이 남아서 리팩토링과 주석을 달아 ..

트랜잭션의 본질 (DB 스터디 7주차)
"관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행 목표 트랜잭션의 기본을 파악 RDB에서 트랜잭션을 사용해 데이터 정합성을 보장하는 방법 14.1 트랜잭션 데이터를 올바르게 보장하기 위해 고안된 방법 실제 애플리케이션 개발에서는 관계형 모델(정규화)와 트랜잭션을 모두 구현해야 데이터의 정합성을 보장 가능 트랜잭션의 기능 트랜잭션이 필요한 상황 DB 서버에 여러 개의 클라이언트로부터 동시에 엑세스가 발생하는 경우 DB 서버 or 애플리케이션이 갱신 처리 도중에 중단되어 데이터 부정합이 발생하는 경우 ex) 은행 계좌 입/출금 처리 잔액 100만원, A 트랜잭션은 30만원 입금 처리, B 트랜잭션은 20만원 출금 처리 트랜잭션 A 잔액 조회 : 100만원 트랜잭션 B 잔액 조회 ..

웹 응용프로그램을 위한 데이터 구조 (DB 스터디 6주차)
"관계형 데이터베이스 실전 입문 - 오쿠노 마키아"를 읽으며 매주 스터디 진행 목표 대규모 엑세스를 감당해야하는 애플리케이션은 RDB를 이용해서는 성능의 한계를 직면한다. 데이터 모델을 유지하면서 물리적인 한계에 대응하는 법을 알아본다. 12.1 캐시라는 개념 캐시가 사용되는 곳 CPU 캐시 메모리 TLB(Translation Lookaside Buffer, 가상 메모리의 논리 주소와 물리 주소 매핑하는 캐시 메모리) 디스크 캐시, 파일 시스템 캐시 브라우저 콘텐츠 캐시, DNS 캐시 DB 버퍼 풀 등 캐시는 확실한 장점과 단점을 갖기 때문에 확실하게 성능을 향상시킬 수 있을 때 적용하는 것이 바람직하다. 캐시의 장점 캐시의 본질은 비용이 많이드는 작업을 비용이 낮은 동일한 행위로 처리하는 작업 높은 비..

인덱스 설계 전략 (DB 스터디 5주차)
11.1 인덱스의 동작 인덱스와 색인은 비슷 색인이 커지는 경우 키워드를 찾는데 시간이 걸림 색인 : 키워드가 문자 순서로 정렬돼 있고 해당 키워드가 있는 페이지의 번호가 기록되어 있다. RDB의 인덱스 RDB의 인덱스는 일반적으로 B+트리로 구성 B+트리는 데이터(인덱스의 값)가 저장된 리프 노드 + 리프 노드까지의 경로 역할을 하는 논리프 노드 탐색 경로의 출발점은 루트 노드 논리프 노드에는 자식 노드가 보유한 값 중에 최솟값이 저장 자식 노드는 페이지 ID에 대한 포인터가 저장 인덱스의 노드 수 = 테이블의 행 수 인덱스의 왼쪽과 검색 범위 B+트리는 등가 비교와 범위 검색(Between)에 사용 가능 LIKE 절 검색의 경우 와일드카드 위치에 따라 검색이 달라지므로 전방 일치를 권장한다. B+트리..

이력 데이터와 친해지기 (DB 스터디 4주차)
9.1 이력 데이터의 문제점 응용프로그램이 로그 데이터를 테이블에 저장하거나,과거부터 현재에 이르는 데이터를 저장할 때 생성되는 것 일반적으로 타임스탬프나 버전 번호와 같이 저장 이력과 관계형 모델의 상성 문제 릴레이션은 집합이므로 각 요소간 순서가 존재하지 않는다. 이력에는 어느 쪽이 오래된 쪽인지, 새로운 것인지에 관한 순서가 존재한다. 이력 데이터는 쉽게 테이블이 커지므로 성능 저하가 나타날 수 있다. 이력 데이터의 예 # 현재 날짜가 2014-12-31인 경우, 턱걸이 기계의 현재 가격 구하는 쿼리 SELECT PRICE FROM PRICE_LIST WHERE ITEM = '턱걸이 기계' AND NOW() BETWEEN START_DATE AND END_DATE; 이력 데이터는 릴레이션이 시간축과..