🏅 트랜잭션이란? Atomic하게, 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법이다. 이 트랜잭션은 DDL이나 DML중 레코드를 수정/추가/삭제한 것에만 의미있게 작동한다. 따라서 SELECT에는 트랜잭션을 사용할 이유가 없다. 트랜잭션은 BEGIN(START TRANSACTION) ~ END(START TRANSACTION) 또는 BEGIN ~ COMMIT 사이에 해당 SQL들을 사용한다. 기본적으로 END와 COMMIT은 같은 기능을 하지만 다른 표현으로 사용한다. 마찬가지로 BEGIN과 START TRANSACTION은 같은 의미다. BEGIN으로 시작하는 순간 트랜잭션을 시작하게 되고, END나 COMMIT 키워드가 나와야 그제서야 SQL문이 외부로 반영되게 된다. 트랜잭션을 ..
1. SQL DDL(Structured Query Language Data Definition Language) 관계형 데이터베이스에 저장되어 있는 데이터를 처리하는 언어를 SQL이라고 하며 그중 하나인 DDL을 살펴보자. 우리가 저장하고 싶은 데이터가 무엇인지 정확히 알고 테이블을 설계해야하는데, 이를 데이터 모델링이라고 한다. 이 테이블을 설계했으면 테이블 구조를 생성해야 한다. 이를 DDL(데이터를 정의)이라고 한다. 테이블 필드의 중요 속성 - PRIMARY KEY 테이블에서 레코드의 유일성을 정의하는 필드이다. (ex : 이메일, 주민등록번호) PRIMARY KEY로 지정된 필드가 있는 경우 데이터베이스단에서 중복된 값을 갖는 레코드가 생기는 것을 방지한다. (PRIMARY KEY UNIQUEN..
MySQL은 기본적으로 서버 한대 짜리 솔루션 이므로 여러대의 서버에 분산해서 동작하지 못한다. 그래서 데이터가 많아질수록 조금씩 벅차지는 상황이 생겨나게 된다. 이렇게 mysql에 용량 이슈가 생길 경우 어떻게 용량을 증대할 수있을까? - 용량 증대 방식 1. Scale-Up : 서버에 CPU와 Memory 추가 그러나 한 서버에 CPU와 Memory를 추가하는 것에는 한계가 있다. Scale-up을 계속하다보면 더이상 안되는 지점이 발생하게 된다. 데이터가 점점 많아지면서 더이상 스케일 업이 안된다면 어떻게 해야할까? 일단 정말로 이 데이터 베이스(mysql)에 우리가 사용하는 데이터만(웹서비스에 바로 필요한 데이터들) 존재하는지 부터 확인해야 한다. 많은 경우, 안쓰는 데이터가 있을 수 있다. 또는..
모든 서비스는 데이터를 만들어내고, 그 데이터의 저장을 필요로 한다. 예를들어 우리가 자주 사용하는 카카오톡, 쿠팡만 해도 유저 등록, 채팅 기록 저장, 구매 관련 정보 저장 등등 데이터의 저장은 필수다. 이 데이터는 프로덕션 관계형 데이터베이스(RDBMS)에 저장한다. 이는 데이터 웨어하우스 관계형 데이터베이스와 달리 서비스의 운영에 필요한 데이터를 저장하는 곳이므로 (MySQL, PostgreSQL 등) 빠른 처리속도가 중요하다. 관계형 데이터 베이스는 이 데이터를 구조화된 테이블들의 집합으로 구성하여 저장하고 관리한다. 이 관계형 데이터 베이스와 비교되는 다른 데이터 베이스로 데이터 웨어하우스가 있다. 이는 처리속도 보다는 구조화된 큰 데이터를 처리하는 것이 중요하다. - 관계형 데이터베이스 종류 ..