분류 전체보기

Redis는 단일 스레드(single-threaded) 기반으로 동작한다!레디스는 단일 스레드를 기반으로 동작한다.즉, 한번에 하나의 요청만 가능하다. 이는 하나의 명령을 처리하는 동안 다른 명령은 대기 상태로 머무르게 된다는 것을 말한다. Redis 명령어 처리 과정이 부분에서 내부 처리 과정을 이해해보는 것도 좋을 것 같다.Redis는 클라이언트의 요청을 처리할 때 두 가지 주요 단계를 거친다.processInputBuffer 단계Redis는 클라이언트로부터 들어오는 데이터를 입력 버퍼(input buffer)에 저장하고, 클라이언트가 보낸 패킷이 하나의 완전한 명령어로 완성될 때까지 이 버퍼에 쌓이게 된다.processCommand 단계패킷이 완전한 명령어로 완성되면, Redis는 processCo..
MySQL의 명령어를 공부해본 사람이라면, DROP과 TRUNCATE, DELETE 명령어의 차이를 들어보았을 것이다.  간단하게 이야기를 하자면, DELETE 명령어는 원하는 데이터를 지울 수 있고, 삭제 후 잘못 삭제한 것을 되돌릴 수 있다. TRUNCATE 명령어는 테이블은 삭제하지는 않고, 데이터만 삭제한다. 삭제 후 절대 되돌릴 수 없다. DROP 명령어는 테이블 전체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.   그럼 DROP 명령어는 어떻게 작동하길래, 테이블이 통채로 사라질까?MySQL의 innoDB에서는 테이블을 .ibd 파일로 저장한다.  DROP시 .ibd 파일이 어떻게 되는지 살펴보자.mysql> CREATE DATABASE test_db;Query OK, 1 row affecte..
MySQL은 내부적으로 OS의 파일 I/O를 사용한다. 그럼 어느 정도는 직접 구현해볼 수 있지 않을까?  우선 MySQL의 아키텍처를 참고해보았다.MySQL은 SQL 구문이 들어오면 Parser -> 전처리기 -> 옵티마이저 -> 엔진 실행기 -> 스토리지 엔진 순서로 동작한다.  설계여기서 옵티마이저와 엔진 실행기는 제거하고 설계했다. 옵티마이저의 실행 계획 알고리즘 CBO를 구현할 역량이 없다고 생각했다. 또 내부적으로 실행 계획에 따라 풀스캔이나 인덱스로 탐색하는 것을 구현해야하는데, 마찬가지로 구현할 역량이 없다고 판단했다.  스토리지 엔진은 InnoDB를 참고했다.  그런 이유로 아키텍처는 아래와 같이 구성했다.   이번 구현에서 초점을 둔 것은, Disk I/O를 최대한 줄이는 것을 목표로 ..
csv을 이용해 100만 개의 데이터를 DB에 넣은 상태이다. explain 명령을 통해 각 쿼리의 실행 계획이 어떻게 변화하는지를 살펴보자.  Explain과 AnalyzeExplain우선, mysql에서 explain 키워드를 붙이면 아래와 같이 실행 계획을 조회할 수 있다. explain은 쿼리를 직접 실행하지는 않는다.   여기서 나오는 각 필드의 개념을 표로 정리해보았다.항목내용id실행계획의 순서. 이 순서대로 select 문이 실행select typeSIMPLE : 단순 select문PRIMARY : 첫번째 쿼리DERIVED : select문으로 추출된 테이블 ( from 절에서의 서브쿼리 또는 inline view)SUBQUERY : sub query 중 첫번째 select문UNION : U..
OAuth는 이전에 몇 번 사용해보았는데, 말로 꺼내어 설명하기가 어려웠다. 이번 기회에 정리를 해보려 한다. 이번 포스팅에서는 간단한 소개로 진행할 것이다.  필요 상황우선 세 명의 참여자가 있다고 생각해보자. (캠퍼가 만든 서비스, 사용자, 구글) 캠퍼가 만든 서비스가 있고, 거기서 구글에 연동하려고 한다. 구글에 접근하려면 어떻게 해야할까?가장 쉬운 방법은 구글의 사용자 id와 비번이 있으면 된다.!  문제1. 사용자 입장에서는 캠퍼의 서비스에 맡겨야 한다 (얘네들 주니어 개발자인데 맡길 수 있나? 이 서비스에서 유출되면 다 털리는데)2. 캠퍼의 서비스도 구글의 아이디 비번을 관리하는 것은 매우 큰 부담이다. (털리면 책임져야함)3. 구글도 자신 아이디 비번을 신뢰하지 않는 캠퍼의 서비스가 가지는게..
· Java/BOJ
문제https://www.acmicpc.net/problem/1707풀이 이분 그래프를 판별하는 문제이다. 이분 그래프는 인접한 정점끼리 서로 다른 색으로 칠해서 모든 정점을 두 가지 색으로만 칠할 수 있는 그래프를 말한다.  풀이는 간단한데, 방문 시 1과 -1의 값으로 번갈아가며 방문 배열을 채워나가고, 만약 이전 방문 배열 값과 다음 방문 배열 값이 같으면 NO를 출력하면 끝이다.  그런데 여기서 주의해야할 것은 이분 그래프의 정의인데, 연결되지 않은 정점도 독립적인 그룹으로 이분 그래프의 조건을 만족한다. 그래서 탐색을 시작할 시작점은 방문되지 않은 점이 대상이 된다. (즉 모든 정점이 연결되어 있다고는 가정되어있지 않다! 이것땜에 43프로에서 틀렸다.) 다음은 소스 코드이다.소스 코드import..
동구름이
'분류 전체보기' 카테고리의 글 목록 (2 Page)