Why we use Database?
- you can save information, having it with persistency
- const employee = [ { id:random(), name:"Todd", department:"front-end" }, { }, { }... ]
- js 스크립트 파일 안에서 위와 같이 배열 데이터를 관리한다고 해보자. 스크립트 파일이 실행될 때 마다 random 함수가 실행되기 때문에, 매번 id가 달라질 것이다.
- 그렇다면, json 파일에 데이터를 저장하면 어떨까?
- 일관적인 데이터를 유지할 수 있기 때문에, database의 가장 핵심적인 역할을 수행한다고 볼 수 있으나, database는 데이터를 저장하는 것 외에도 많은 일을 할 수 있다.
- Database tools for easy insertion, querying(검색), and updating of data
- Data is stored compactly
- Database generally offer security features and control over accessing to data
SQL vs. NoSQL
what is SQL & NoSQL?
데이터베이스의 종류는 크게 SQL과 NoSQL 두 가지로 나누어 볼 수 있다.
- SQL | Structured Query Language
- SQL에는 서로 관계(relationship)를 갖는 여러 개의 테이블이 있으며, 테이블의 요소(entity) 하나 하나가 데이터가 된다.
- 테이블이 없으면 데이터를 저장할 수 없다. => 테이블이 데이터를 구조화하는 유일한 방법이다.
- 예를 들어, 블로그와 관련된 데이터를 SQL로 관리하는 상황을 생각해 보자.
- 블로그 포스트를 저장하는 테이블이 있고, 하나의 포스트는 포스트 id, 작성자 id, 포스트 내용을 요소로 갖는다.
- 포스트에 달린 댓글을 저장하는 테이블이 있고, 하나의 댓글은 포스트 id, 작성자 id, 댓글 내용을 요소로 갖는다.
- 이 때 포스트 테이블과 댓글 테이블은 "포스트 id" 라는 요소를 통해 관계(relation)를 맺는다.
- ex) MySQL, SQLite, Oracle...
- NoSQL | SQL을 사용하지 않는 모든 데이터베이스
- 데이터를 저장하기 위한 특정 schema(outline)를 필요로 하지 않고, 다양한 방식(document, key-value, graph...)을 이용할 수 있다. => 다양한 방식을 이용해서 데이터를 구조화할 수 있다.
- 이번에는 블로그 데이터를 NoSQL로 관리하는 상황을 생각해 보자.
- 블로그 포스트와, 포스트에 달린 댓글을 다른 테이블에 따로 저장하지 않아도 된다.
- 대신, 포스트 데이터에 댓글 데이터를 추가할 수 있다.
- 어떤 포스트는 댓글 데이터를 가지고 있지 않을 수도 있다. => 데이터를 저장하는 특정한 패턴을 따르지 않아도 된다.
- ex) MongoDB...
Relation
- SQL | 어떤 테이블의 데이터를 다른 테이블의 데이터로부터 참조함으로써, 관계를 생성하고 테이블을 확장한다.
- one to many | ex) account - post, post - comments...
- 사용자 한 명(account)이 여러 개의 포스트(post)를 작성할 수 있다. 하지만 하나의 포스트가 여러 사용자를 가질 수는 없다.
- Post 테이블에 user_id 데이터가 있다면, 이 데이터로 Account 테이블을 참조할 수 있다(반대도 가능).
- many to many | ex) movie - actor, user - subscription list...
- 하나의 영화에 여러 배우가 존재할 수 있고, 한 명의 배우가 여러 출연 영화를 가지고 있을 수 있다.
- 영화와 배우 테이블을 모두 참조해서 새로운 테이블을 만들 수도 있다(ex. role - 영화 이름과 배우 이름을 참조해서 역할 데이터에 대한 테이블 만들기).
- one to many | ex) account - post, post - comments...
- NoSQL | 테이블 외의 다른 방법을 이용해서 데이터를 구조화할 수 있다.
'Study > Web Dev Basic' 카테고리의 다른 글
MPA vs. SPA (0) | 2022.07.01 |
---|---|
What is LocalStorage? (0) | 2022.06.19 |
What is REST? (0) | 2022.06.04 |
Markdown (0) | 2022.05.02 |
Browser & window (0) | 2022.04.05 |