Computer Science
-
Engine=InnoDB는 뭘 지정해주는 걸까 - MySQL 엔진과 스토리지 엔진Computer Science/Database 2023. 7. 9. 23:05
MySQL 아키텍처 MySQL 서버는 MySQL 엔진, 스토리지 엔진으로 구분 스토리지 엔진은 핸들로 API를 만족하면 누구든 구현해서 서버에 추가 가능 MySQL 엔진 아키텍처 MySQL 엔진 MySQL 엔진은 아래의 역할들을 수행하며 요청된 SQL 문장을 분석, 최적화하는 핵심 처리를 함 커넥션 핸들러: 클라이언트로부터의 접속 및 쿼리 요청을 처리 SQL 파서 전처리기 옵티마이저: 쿼리를 최적화 하여 실행 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 데이터를 읽어오는 부분을 전담 스토리지 엔진은 여러 개를 동시에 사용할 수 있다 각 스토리지 엔진은 성능 향상을 위해 키 캐시나 InnoDB 버퍼 풀과 같은 기능을 내장 mysql> CREATE TABLE test_table (fb1 INT,..
-
HTTPS는 어떻게 신뢰성있는 통신을 보장할까❓Computer Science/Network 2022. 11. 12. 22:18
더보기 약 1년만에 고향 티스토리로 돌아와 글을 쓰는 감회가 새롭다 현재 HTTP 완벽 가이드 책으로 스터디를 진행중인데, 14장 보안 HTTP 단원 발표 준비를 하며 당연하게만 쓰고있었던 HTTPS를 제대로 이해보고자 한다 https://2jinishappy.tistory.com/338 대칭 키/공개 키/단방향 암호화 알고리즘(정의와 예시) 암호화 알고리즘은 암호화/복호화에 사용되는 키, 그리고 양방향 가능 유무를 기준으로 분류할 수 있다. Symmetric-Key Algorithm 대칭 키 알고리즘 대칭 키 암호는 암호화 알고리즘의 한 종류로, 암호 2jinishappy.tistory.com 이전에 대칭키, 공개키 암호화 알고리즘에 관한 글을 작성한 적이 있었다. 대칭키 공개키가 어떤건지는 알겠는데,..
-
동시성 제어 메커니즘 - 낙관적 락, 비관적 락Computer Science/Database 2021. 12. 7. 19:18
Concurrency Control Mechanisms Database Lock ❓ RDBMS에서 트랜잭션 시스템에 적용되는 동시성 제어 방법. 특정 트랜잭션이 레코드에 접근 중 일때 다른 트랜잭션이 해당 데이터에 접근하지 못 하게 막는 것을 의미한다. 일반적으로 Lock의 단위가 너무 작으면 독립성이 보장받지 못 하고, 너무 크면 트랜잭션이 직렬화 되어 수행 시간이 느려진다. Optimistic Concurrency Control 여러 트랜잭션이 서로 간섭하지 않고 자주 완료될 수 있다고 가정하는 동시성 제어 방식. 일반적으로 Block Contention(동일한 인덱스나 데이터 블록에 동시에 액세스하기 위해 경쟁하는 프로세스 또는 인스턴스)이 낮은 환경에서 사용한다. 원하는 규칙이 커밋 시 위반되면 ..
-
NAT와 포트포워딩 - 패킷의 IP와 Port 번호 변환하기Computer Science/Network 2021. 11. 1. 22:23
NAT : Network Address Translation IP 패킷의 TCP/UDP Port Number와 출발지(Source), 목적지(Destination) IP 주소를 재기록 하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술 위의 그림처럼 Host - Router - Server를 거치는 과정에서 패킷은 많은 네트워크 단말을 거치게 되는데, 그 과정에서 출발지의 (IP, Port Num)과 도착지의 (IP, Port Num)과 같은 데이터는 계속해서 변할 수 있다. 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬도 다시 계산해서 재기록해야 한다. IPv4를 사용할 때 가능한 최대 IP 개수는 255^4 = 4,228,250,625(약 40억)로 한정되어 있기 때문에, 제한된 수의..
-
DB의 비정상 수행을 유발하는 SQL Injection을 예방하기Computer Science/Database 2021. 10. 31. 15:34
SQL Injection 이란? SQL Injection이란 SQL 쿼리문을 조작할 수 있는 입력을 사용해서 데이터를 악의적으로 이용하거나 탈취할 수 있는 공격을 의미한다. 주로 로그인, 사용자 입력 창에서 입력 값에 대한 검증 로직이 빈약할 경우 발생할 수 있으며 이로 인한 피해는 인증 우회/원격 명령 실행/DB 정보 수정,삭제,탈취와 같은 피해가 발생할 수 있다. 2017년 우리나라 숙박 애플리케이션 여기어때도 SQL Injection으로 인해 고객 정보를 탈취당한 사례가 있다. public List unsafeFindAccountsByCustomerId(String customerId) throws SQLException { // UNSAFE !!! DON'T DO THIS !!! Strin..
-
Builder Pattern (생성 패턴)의 정의와 예제Computer Science 2021. 9. 21. 01:33
빌더 패턴은 객체의 생성과 관련된 디자인 패턴이다 빌더 패턴과 비교 가능한 예시는 점층적 생성자 패턴(Telescoping Constructor Pattern), 자바빈 패턴(JavaBeans Pattern)이 있다. 점층적 생성자 패턴 - Telescoping Constructor Pattern Pizza hawaiian = new Pizza("cross"); Pizza hawaiian = new Pizza("cross", "mild"); Pizza hawaiian = new Pizza("cross", "mild", "ham+pineapple"); // Dough, Sauce, Topping 필수 인자를 받는 생성자와 선택적 인자를 받는 생성자들을 객체가 생성될 수 있는 케이스 숫자대로 만들어 객체를 ..
-
TCL(Transaction Control Language) in MySQLComputer Science/Database 2021. 9. 17. 22:28
DBMS에서 사용할 수 있는 SQL Commands는 크게 DDL(Data Definition Launguage): 데이터베이스, 테이블을 제어 DML(Data Manipulation Launguage): 테이블 내 데이터의 검색/등록/삭제/갱신의 연산 제어 DCL(Data Control Launguage): 데이터베이스에 접근할 때의 권한을 제어 TCL(Transaction Control Launguage): 논리적 작업 단위인 트랜잭션에 관한 연산을 제어 로 나뉜다. 대표적인 RDBMS인 MySQL에서의 TCL 연산을 직접 수행해보고 이해해보자 TCL 연산 COMMIT: 트랜잭션 내의 변경 사항을 영속적으로 데이터베이스에 반영한다 ROLLBACK: SAVEPOINT 혹은 마지막 커밋 시점으로 데이터베..
-
[OS] Memory ManagementComputer Science/Operating System 2021. 8. 10. 08:38
프로그램을 실행하기 위해서는 프로세스를 메모리에 올려야 한다. 운영체제는 한정된 메모리 공간을 활용하기 위한 메모리 관리 전략을 지니고 있다 Logical Address(Virtual Address) : 프로세스마다 독립적으로 가지는 주소공간. CPU가 보는 주소. 각 프로세스마다 0번지 부터 시작 Physical Address: 메모리에 실제로 올라가는 위치 Address Binding : Symbolic Address ➡ Logical Address ➡ Physical Address로 변환하는 과정 사용자 프로그램을 물리적 메모리에 직접 접근할 수 없기 때문에(권한을 가져서는 안 된다) 상징 - 논리 - 물리 주소로 바인딩하는 과정이 필요하다 주소 바인딩은 다음의 세 시점에 발생할 수 있다. 1️⃣ ..