데이터베이스

서론기술 면접을 진행하다보면 가장 많이 들어오는 질문 중 하나는 데이터베이스 입니다. 그 중에 단골 질문을 꼽자면 디비 트랜잭션에 대한 질문과 데이터베이스를 기반으로 동시성을 제어하는 질문입니다. 해당 질문을 가장 자주 물어보는 이유는 트랜잭션은 백엔드를 개발하는데 가장 작은 단위이기도 하고 트랜잭션에 대한 이해없이 개발을 했다가 운영 중에 데이터의 무결성이 깨지거나 동시성을 제어하지 못하는 경우들을 자주 접하기 때문입니다. 하지만 백엔드 엔지니어를 준비하면서 보통 트랜잭션의 특성과 Isolation Level의 개념, 각 Isolation Level에 일어날 수 있는 문제들만 충분하다는 생각에 단기적으로 외우고 끝내는 경우가 많습니다. 저도 마찬가지로 그렇게 외우고 있다가 최근에 T사 면접과 스타트업 ..
서론 데이터 베이스를 통해 데이터를 처리하고 관리하는데 SQL을 사용하였지만 데이터베이스에서 어떻게 SQL을 동작시키고 최적화시키는지 이해하고 쓰지 못하고 사용을 하면서 쿼리튜닝을 하는데 있어서 어려움을 겪었던 적이 있다. 이러한 삽질을 줄이고 쿼리의 성능을 개선해야될 때 쿼리의 동작을 이해하고 예상가능한 범위내에서 동작시키는 것이 중요하기 때문에 공부를 시작했다. SQL 옵티마이저 SQL 옵티마이저는 우리가 요청한 작업을 효율적으로 수행할 수 있도록 도와주는 DBMS의 핵심 엔진이다. 옵티마이저의 최적화 시키는 동작은 보통 아래와 같이 데이터 딕셔너리에 미리 수집해둔 오브젝트 및 시스템 통계 정보를 통해 예상비용을 산정하고 최저 비용이 드는 경로를 선택한다. 실행 계획과 비용 SQL 옵티마이저는 자동차..
레디스에서 제공하는 자료구조 Strings 단순한 insert 문을 대체하기 위해 사용 key : Value 형태로 저장하며 모든 종류의 문자열 데이터를 저장할 수 있다. 예시: 유저 token 저장, JPEG 이미지를 저장하거나, HTML fragment 를 캐싱 등 List 일반적인 Linked List와 같은 구조로 되어 있어 데이터를 앞에서 넣거나 뒤에서 넣어도 소모되는 시간은 동일하다. LPUSH, RPUSH, LPOP, RPOP을 통해 양쪽에 데이터를 넣거나 꺼낼 수 있다. 순차적으로 처리를 해야할 때 유용하다. 예시: Job Queue, Pub-Sub 패턴(발행-구독 패턴) 생산자가 아이템을 만들어서 list에 넣으면 소비자가 꺼내와서 액션을 수행하는 식으로 동작합니다. 트위터의 타임라인에 ..
What is Redis? Remote Dictionary Server의 줄인 말로 인 메모리형 key, value 으로 데이터를 저장하는 데이터 스토어입니다. 캐시 서버로 주로 사용되는 오픈소스이다. ※ 캐시: 데이터나 값을 미리 저장해놓고 메모리에 임시로 저장해서 호출 시 데이터를 찾는 리소스 없이 바로 가져올 수 있다. 캐시 서버를 사용하는 이유 다이나믹 프로그래밍에서 나오게 되는 중요한 핵심과 비슷한데 연산을 미리 저장해놓고 다시 호출될 때 처음부터 연산하지 않고 미리 연산된 데이터를 가져와서 이어서 연산을 시작하는 개념과 비슷하다고 볼 수 있다. 예를 들어 가게 평점을 들어보자. 배달의 민족을 보면 별점을 참여한 사람은 7000명 가까이 되는데 수천만개의 데이터에서 한 음식점에 7000개의 리뷰..
도커 설치하기 https://www.docker.com/get-started/ Developers - Docker Developer productivity tools and a local Kubernetes environment. www.docker.com 레디스 이미지 다운로드 도커에서 레디스의 이미지를 내려 받습니다. docker pull redis 레디스 실행 docker run --name some-redis -d -p 6379:6379 redis -p : 포트 설정 (도커 외부 포트 : 도커 내부 포트) -d : 백그라운드 실행 레디스 실행 확인 docker ps -a
ri5
'데이터베이스' 카테고리의 글 목록