Achievement Goals
3 Tier Architecture 를 이해한다.
영속성의 개념을 이해하고, 데이터베이스의 필요성을 인지한다.
데이터베이스 종류를 이해한다.
관계형 데이터베이스와 NoSQL의 차이를 이해한다.
관계형 데이터베이스 및 NoSQL이 어떤 경우에 적합한지 이해한다.
Learn SQL
SQL 주요 문법을 이해할 수 있다.
조회, 삽입, 갱신, 삭제 구문을 자유자재로 사용할 수 있다.
조회시 다양한 조건을 걸어 원하는 정보만 조회할 수 있다.
통계를 위한 쿼리를 만들 수 있다.
스키마 디자인을 할 수 있다.
앱에 필요한 테이블과 필드, 그리고 관계를 부여할 수 있다.
1:N, N:N 관계를 이해하고, 데이터베이스에서 테이블을 조작할 수 있다.
Foreign Key, Primary Key에 대해 이해할 수 있다.
Cmarket Database
SQL을 node.js 앱에서 쿼리할 수 있다.
클라이언트의 HTTP 요청에 따라 CRUD API를 구현할 수 있다. (CRUD: Create, Read, Update, Delete)
데이터베이스에 쿼리를 보내 원하는 데이터만을 가져올 수 있게 해준다
structured(relation), 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용
MySQL, Oracle, SQLite, PostgresSQL, MariaDB - 대표적 관계형 데이터베이스
NoSQL : 데이터 구조가 고정되어 있지 않은 데이터베이스들(테이블 사용x)
ex) MongoDB 와 같은 문서 지향 데이터베이스
'질의문'
기존에 존재하는 데이터를 검색어로 필터하듯이 쿼리는 저장되어 있는 정보를 필터하기 위한 질문으로도 볼 수 있다
데이터베이스의 상태를 변환시키는 논리적 기능- 명령(쿼리)를 모아 놓은 하나의 작업 단위
하나의 트랜잭션이 전부 성공하거나 전부 실패해야
하나의 트랜잭션 이전과 이후 데이터베이스 상태는 이전과 같이 유효해야 한다
하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다
하나의 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭션에 대한 로그가 남고 런타임 오류나 시스템 오류가 발생해도 해당 기록은 영구적이어야 한다
데이터 저장(Storage)
관계형 데이터베이스: SQL을 이용해서 데이터를 테이블에 저장
NoSQL: 위에서 설명된 것처럼, key-value, document, graph, wide-column 형식등의 방식
스키마(Schema)
SQL: 사용하려면 형식이 고정된 스키마
NoSQL: 스키마의 형태가 보다 동적
행을 추가할 때 즉시 열을 함께 추가할 수 있고, 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력하지 않아도 된다
쿼리(Querying)
관계형 데이터베이스: 테이블의 형식과 테이블간의 관계에 맞춰서 데이터를 요청합니다. 그래서 SQL과 같은 구조화된 쿼리 언어를 정보 요청에 사용합니다.
데이터 그룹 자체를 조회하는 것에 초점을 두고 있습니다. 그래서 구조화 되지 않은 쿼리 언어로도 데이터 요청이 가능합니다. UnQL(UnStructured Query Language)
확장성(Scalability)
SQL :보통 수직적으로 확장 (높은 메모리, CPU를 사용하는 확장)
소비용, 복잡, 시간 소모
NoSQL: 수평적으로 확장
스키마(schema): "데이터베이스의 청사진"
entity(엔티티) : 고유한 정보의 단위
field(필드): 해당 엔티티의 특성 설명 (행렬의 열(column))
테이블에 저장된 항목: 행렬의 행(row)
관계형 데이터베이스 - relational database
구조화된 데이터가 하나의 테이블로 표현이 되는데 이처럼 사전에 정의된 테이블 - relation
1:1 관계
1:N 관계
N:N 관계
join table(조인 테이블)-> 동일하게 기본키가 있어야 함