데이터 베이스
애플리케이션에서는 데이터가 메모리 상에서 존재한다.
메모리 상에서 존재하는 데이터는 휘발성으로 보존이 되지 않는다.(애플리케이션이 종료되면 같이 사라진다.)
그래서 데이터를 저장, 보존 하기 위해서 데이터 베이스를 사용한다.
데이터 베이스는 관계형 데이터베이스와 비관계형 데이터베이스가 있다.
관계형 데이터베이스
상호 관련성을 가진 형태로 표현한 데이터를 말한다.
데이터를 테이블들로 표현하며 테이블은 column과 row로 구성된다.
column은 항목을 말하며 row는 실제 값들이 들어간다.
row는 각 고유 키를 가지고 있으며 이 키를 통해서 해당 row를 찾거나 참조하게 된다.
테이블과 테이블은 어떻게 연결(상호 관련성)을 하는가?
->Foreign key(외부 테이블의 키)라는 개념을 사용해서 연결한다.
테이블들을 왜 연결하는가? 하나의 테이블에 정보를 모두 저장하면 안되는가??
->많은 디스크를 사용하게 되고 잘못된
데이터가 저장 될 가능성이 높아진다.(데이터의 완전성 보장x)
여러 테이블에 나눠 저장한 후 필요한 테이블끼리 연결하면 위 문제를 방지할 수 있다.
비관계형 데이터베이스
관계형 데이터베이스와 다르게 데이터들을 저장하기 전에 정의 할 필요가 없다.
관계형 데이터베이스는 저장하기 전에 관계를 정의한다.(모델 정의)
관계형 VS 비관계형
관계형 장점
데이터를 효율적으로, 체계적으로 저장할 수 있고 관리할 수 있다.
저장하기 전에 데이터들의 구조를 정의 함으로서 데이터의 완전성이 보장된다.
트랜잭션
관계형 단점
테이블 구조 변화에 유연하지 못하다.
확장이 쉽지 않다.(단순히 서버를 늘리는것만으로 확장하기 쉽지않고 서버의 성능 자체도 높여아한다.)
서버를 늘려서 분산 저장하는것도 쉽지 않다.
언젠가는 관계형 데이터베이스만으로는 한계가 온다.(비관계형이나 빅데이터 같은걸로 조화를 이뤄야한다.)
비관계형 장점
데이터의 구조 변화에 유연하다.
확장하기가 비교적 쉽다.(서버 수를 늘린다.)
구조 변화에 유연하고 확장하기 쉬워 방대한 양의 데이터를 저장하는데 유리하다.
비관계형 단점
데이터의 완전성이 덜 보장된다.
트랜잭션이 안되거나 비교적 불안정하다.