- 데이터베이스를 통해서 데이터를 저장해야 하는 이유는 뭘까?
- 데이터베이스를 사용하지 않고도 In-memory에 데이터를 저장할 수 있다.
- 하지만, In-memory에 저장된 데이터는 해당 프로그램이 종료되면 데이터가 사라진다.
- 다시 프로그램을 실행하면, 데이터는 초기화되고 이전에 수정했던 값들은 이미 사라져버린다.
🍫 즉, 데이터의 수명이 프로그램의 수명에 의존하게 된다.- 그렇다면, File I/O로 데이터를 저장하는 것은 어떨까?
- CSV나 엑셀시트, txt와 같은 파일에 데이터를 저장한다.
- 하지만, 이렇게 저장된 데이터는 무조건 모두 불러와 사용해야 하고, 원하는 데이터만 필터링하여 가져올 수 없다.
- 또한, 이들은 대규모 데이터에 적합하지 않다.
💐 따라서, 데이터의 관리가 편하고 원하는 데이터만 필터링하여 가져올 수 있는 Data에 특화된 서버, 데이터베이스가 필요한 것이다.
- 트랙잭션은 여러개의 작업을 하나로 묶은 것이다.
- 트랙잭션의 작업은 모두 성공해야 처리를 한다.
- 만약, 하나의 작업이라도 실패한다면 모두 실패한 것으로 처리한다.
- 트랜잭션의 결과는 성공 또는 실패만 존재한다.
- 데이터베이스의 트랜잭션은 안전성을 보장하기 위해서 ACID 라는 특성을 가진다.
🧸 계좌이체를 진행하는데, 이체가 진행되어 계좌에서 돈이 빠져나갔지만, 중간에 오류가 생겨 상대 계좌에 입금이 되지 않는다면 곤란할 것이다.
🧸 이럴 때, Atomicity을 지킨다면, 상대방 계좌에 입금이 실패할시에 계좌에서 돈이 빠져나간 것도 실패해야 한다.
🧸 즉, 실행 전의 상태로 돌아간다.
🧸 택배 배송 서비스의 데이터베이스가 있다고 했을 때, 배송지 데이터는 반드시 있어야 한다.
🧸 만약 배송지 정보가 없는 데이터가 삽입되거나, 기존 데이터에서 배송지를 삭제하는 작업이 일어난다면, 일관성을 해치게 된다.
🧸 A 계좌에서 B와 C 계좌로 동시에 이체한 결과와 A 계좌에서 B 계좌에 송금한 뒤에 C 계좌에 연속적으로 이체한 결과는 같아야 한다.
참고 자료 : 코드 스테이츠