파일을 저장하는 방법:
프로그램이 실행될 때만 존재하는 데이터가 있다. 이 데이터들은 예를 들어 브라우저 환경에서 변수나 배열같은 데이터를 만들면 브라우저가 종료되는 순간 static memory 나 heap memory 를 해제하기 때문에 데이터의 수명이 프로그램의 수명에 의존하게 된다.
컴퓨터의 파일을 읽어오는 방식.
원하는 데이터만 가져올 수 없고 항상 모든 데이터를 가져온 뒤 서버에서 필터링 필요
필터링 외에도 File I/O 로 구현이 힘든 관리르 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버.
Structured Query Language.
Query 란?
질의문. 저장된 정보를 필터하기 위한 질문.
SQL 은 구조화된 쿼리 언어로써 데이터베이스에 쿼리를 보내 원하는 데이터만을 가져올 수 있게 해준다. 주로 관계형 데이터베이스(MySQL, Oracle, SQLite, PostgreSQL 등) 에 사용된다.
SQL 은 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용 가능하다.
데이터 구조가 고정되어 있지 않은 데이터베이스 - NoSQL
SQL query commands, SQL Database commands
https://www.w3schools.com/sql/default.asp
Atomicity, Consistency, Isolation, Durability
각 특성은 데이터베이스 내에서 일어나는 transaction 의 안전성을 보장하기 위해 필요하다.
Transaction 이란?
여러 개의 작업들을 하나의 실행 유닛으로 묶어준 것이다. 각 트랜잭션은 하나의 특정 작업으로 시작해 묶여 있는 모든 작업을 완료해야 종료된다. 한개라도 실패하면 트랜잭션은 실패한다. 반드시 전부 성공해야 트랜잭션도 성공한다. 트랜잭션은 성공 혹은 실패 두 개의 결과만 존재하며, ACID 특성을 가지고 있다.
원자성
하나의 트랜잭션이 전부 성공하거나 전부 실패해야 한다. 부분적으로 실행되면 안된다.
예를 들어 돈을 송금할 때 내 계좌에서 돈을 뺐는데 상대 계좌에 돈이 추가가 되지 않았다면 계좌 이체를 자체를 실패로 만든다.
일관성
하나의 트랜잭션 이전과 이후 데이터베이스의 상태는 이전과 같이 유효해야 한다. 데이터베이스의 제약이나 규칙에 의거한 데이터베이스어야 한다.
예를 들어 각 고객의 이름이 있는 데이터베이스일 경우 이름이 없는 고객을 추가하거나 기존 고객의 이름을 삭제할 수 없다.
고립성
하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다. 동시에 여러 개의 트랜잭션이 수행될 때 각 트랜젝션은 고립되어 있어 연속으로 실행된 것과 동일한 결과를 나타내야 한다.
지속성
하나의 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭션에 대한 로그가 남고 런타임 오류나 시스템 오류가 발생해도 해당 기록은 영구적이어야 한다.
계좌 이체를 성공했는데 이후 오류로 인해 은행 서버가 종류되어도 계좌이체 내역은 남아야 한다.