데이터베이스/데이터베이스 기초 5

트랜잭션

사실 데이터베이스 강의를 수강한 큰 이유는 트랜잭션에 대해 잘 알고자 하기 위함이었다. 따라서 SQL 강의중에서 트랜잭션과 관련한 비중이 가장 큰 강의를 수강하였는데.. 결과적으로는 학습내용을 더 보충하여야 하지 않을까 싶다. 일단 트랜잭션에 대해 알아보아야 할 것 같다. 트랜잭션은 데이터베이스에서 상호작용의 단위로, 모든 작업이 성공하거나 모든 작업이 실패해야한다. 보통 대부분 은행 송금과 같은 예제를 많이 사용하므로, 본 글에서도 송금에 대한 예제를 사용하도록 하겠다. 아래와 같이 계좌이체 프로세스가 진행된다고 하자. 발신 계좌에서 송금 금액만큼 차감하고 수신계좌에서 송금금액만큼 추가하는 프로세스가 있을 텐데, 이 때 송금 금액만큼 차감은 진행되었는데, 수신계좌에서 추가하는 프로세스가 실패하였을 경우..

서브쿼리

서브쿼리란 하나의 쿼리문 안에 포함되어 있는 또 하나의 쿼리문으로, 여러번의 쿼리를 수행해야만 얻을 수 있는 결과를 하나의 중첩된 쿼리로 처리할 수 있다. SELECT 절에서의 서브쿼리 SELECT cd_plant, nm_plant, (SELECT AVG(um) FROM table_item) AS um FROM table_plant FROM 절에서의 서브쿼리 SELECT cd_plant, nm_plant, am FROM (SELECT * FROM table_plant) AS a WHERE절에서의 서브쿼리 SELECT cd_plant, nm_plant, FROM table_plant WHERE cd_plant IN (SELECT cd_plant FROM table_plant WHERE plant='1000..

Join

Cross Join 모든 경우의 수를 보여주는 Join SELECT * FROM customers, cars Inner Join 두 테이블 조건절을 통해 일치하는 경우에만 Join 실행 SELECT * FROM customers, cars WHERE customers.id = cars.customer_id 혹은 SELECT * FROM customers INNER JOIN cars ON customers.id = cars.customer_id 혹은 SELECT * FROM customers AS a, cars AS B WHERE a.id = b.customer_id Outer Join 조건에 해당하지 않는 결과라도 조회가 가능하도록 JOIN 처리 조건에 해당하지 않는 열값은 Null 처리됨 SELECT ..

기본적인 쿼리문

DML(Data Manipulation Language) INSERT 문: 데이터 입력시 사용 INSERT INTO table_name (col1, col2, col3) VALUES(value1, value2, value3) SELECT 문을 사용하는 응용도 가능 INSERT INTO table2 (col1, col2) SELECT col1, col2 FROM table1 WHERE id>5; DELETE 문: 데이터 삭제시 사용. 주의하여 사용하여야 하며 트랜잭션을 사용할 것을 권장 DELETE table_name WHERE id=1; UPDATE 문: 기존의 레코드를 변경할 때 사용 UPDATE table_name SET col1=value1, col2=value2 WHERE id>5; DQL(Dat..

개요(데이터베이스를 공부하기로 시작한 이유)

백엔드에 입문한 이래로, 계속하여 대용량 데이터 혹은 대용량 트래픽처리는 어떻게 하는 것인가에 대한 생각을 하고 있다. 백엔드 개발자로써 모든 능력이 중요하겠지만, 대용량 트래픽을 감당할 수 있는 아키텍처 설계 및 구현보다 더 중요한 능력은 없다고 생각하기 때문이다. 아마 이는 병렬컴퓨팅과 비슷한 내용일 것이다. 병렬컴퓨팅은 여러 컴퓨터를 사용하여 하나의 거대한 계산을 처리하는 컴퓨팅 방법으로, 병목현상이 어디서 발생하는 지, 어떤 오버헤드가 발생할 지에 대해 끊임없이 생각하여야 한다. 물론 코드의 계산 효율을 고려하는 것은 당연시해야 한다. 아직은 잘은 모르겠지만, 대용량 트래픽 처리 역시 서비스에서 발생하는 병목지점을 찾고 이를 해결하는 방법에서 시작하리라 믿는다. 현재 존재하는 대부분의 어플리케이션..