본문 바로가기

Study/Web Dev Basic

What is Database?

Why we use Database? 

  1. you can save information, having it with persistency 
    •  const employee = [ { id:random(), name:"Todd", department:"front-end" }, { }, { }...
    • js 스크립트 파일 안에서 위와 같이 배열 데이터를 관리한다고 해보자. 스크립트  파일이 실행될 때 마다 random 함수가 실행되기 때문에, 매번 id가 달라질 것이다.  
    • 그렇다면, json 파일에 데이터를 저장하면 어떨까? 
      • 일관적인 데이터를 유지할 수 있기 때문에, database의 가장 핵심적인 역할을 수행한다고 볼 수 있으나, database는 데이터를 저장하는 것 외에도 많은 일을 할 수 있다. 
  2. Database tools for easy insertion, querying(검색), and updating of data
  3. Data is stored compactly
  4. Database generally offer security features and control over accessing to data

SQL vs. NoSQL

what is SQL & NoSQL?  

데이터베이스의 종류는 크게 SQL과 NoSQL 두 가지로 나누어 볼 수 있다.

 

  1. SQL | Structured Query Language 
    • SQL에는 서로 관계(relationship)를 갖는 여러 개의 테이블이 있으며, 테이블의 요소(entity) 하나 하나가 데이터가 된다. 
    • 테이블이 없으면 데이터를 저장할 수 없다. => 테이블이 데이터를 구조화하는 유일한 방법이다. 
    • 예를 들어, 블로그와 관련된 데이터를 SQL로 관리하는 상황을 생각해 보자.
      • 블로그 포스트를 저장하는 테이블이 있고, 하나의 포스트는 포스트 id, 작성자 id, 포스트 내용을 요소로 갖는다. 
      • 포스트에 달린 댓글을 저장하는 테이블이 있고, 하나의 댓글은 포스트 id, 작성자 id, 댓글 내용을 요소로 갖는다. 
      • 이 때 포스트 테이블과 댓글 테이블은 "포스트 id" 라는 요소를 통해 관계(relation)를 맺는다. 
    • ex) MySQL, SQLite, Oracle...
  2. NoSQL | SQL을 사용하지 않는 모든 데이터베이스
    • 데이터를 저장하기 위한 특정 schema(outline)를 필요로 하지 않고, 다양한 방식(document, key-value, graph...)을 이용할 수 있다.  => 다양한 방식을 이용해서 데이터를 구조화할 수 있다. 
    • 이번에는 블로그 데이터를 NoSQL로 관리하는 상황을 생각해 보자.
      • 블로그 포스트와, 포스트에 달린 댓글을 다른 테이블에 따로 저장하지 않아도 된다.
      • 대신, 포스트 데이터에 댓글 데이터를 추가할 수 있다.
      • 어떤 포스트는 댓글 데이터를 가지고 있지 않을 수도 있다. => 데이터를 저장하는 특정한 패턴을 따르지 않아도 된다. 
    • ex) MongoDB... 

Relation 

  1. 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 - 영화 이름과 배우 이름을 참조해서 역할 데이터에 대한 테이블 만들기).
  2. 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