Database 🏢
What is database?
: 데이터를 저장하는 시스템, 데이터를 저장하고 연산하고, 편집, 보존하기 위해 존재한다.
What is memory then?
: 데이터 베이스와 반대되는 개념으로 휘발성이고, 메모리를 데이터에 저장하고 컴퓨터를 끄면 날라간다. 하지만 속도가 빠른 성질을 사용해 데이터베이스의 데이터를 메모리에서 읽어서 가공처리 하는 업무를 처리한다.
데이터 렌더링할때 백엔드와 효율적인 커뮤니케이션이 가능하게하고, 데이터관리 협의하고 하기위해 프론트엔드 개발자도한 필수로 알아야 하는 개념이다! ☝🏼
database 형태
table
: 엑셀파일 처럼 테이블 형태의 row와 column
으로 이루어져 있다.
: column은 테이블의 각 항목, row는 각 항목의 실제 값
이다.
: 각 row는 고유한 key
가 있고 그 key
를 통해 값을 찾는다.
table 종류
One to One ☝🏼:☝🏼
: 한명의 유저가, 한명의 profile 아이디를 갖고,데이터가 1:1로 매칭되는구조이다.
: foreign key를 써서 두개의 테이블의 같은 값을 매칭시켜 주는방식
: 준비된 데이터 + 지정된 데이터 를 합쳣을때, 고유한 1:1의 정보를 저장할때 사용하는데 예를 들어, 국가와-수도 같이 하나와 하나로 매칭되는 데이터 구조일 때 사용된다.
One to Many ☝🏼:☝🏼☝🏼☝🏼☝🏼☝🏼
: 하나의 정보를 여러개의 데이터가 두개이상 의 값을 동시에 가질 수 있는 구조이다.
: 예를 들어 고객이 여러제품을 구매하는 상태일때 사용된다.
: 하나의 카테고리에 여러제품이 들어있는 경우도 같다.
Many to Many ☝🏼☝🏼☝🏼☝🏼☝🏼☝🏼☝🏼:☝🏼☝🏼☝🏼☝🏼
: join table(associate table)을 통해 many to many table인 걸 알 수 있다.
: 한 작가가 여러책을 쓸 수 있고, 책은 여러명에 의해 쓰일 수 있다고 생각하는 구조라고 생각할 수 있다.
: 일대다로는 커버할 수 없는 데이터, 중간테이블이 필요한 상태이다.
왜 테이블을 나눌까?
: 동일한 정보들이 불필요하게 저장되는 것을 방지하기 위함이다.
: 디스크를 효율적으로 쓰고, 같은 데이터지만 부분적으로 틀리는 문제를 방지할수 있다. 이 특징을 정규화 (Normalization)
라고 한다.
Database의 종류
크게 SQL과 NoSQL로 나뉜다. 어떠한 시스템이 더 좋다! 라는 개념이 아니고, 각자 보유한 데이터의 특성을 고려하여 맞는 데이터베이스 모델을 선택해야 한다.
SQL vs NoSQL
관계형 database : SQL
- 상호관련성을 가진 형태로 표현한 데이터를 전달
- 2차원 테이블로 표현됨.
- 주요 SQL 은
MySQL
이 있다.
비관계형 database : NoSQL
- 비관계형 타입의 데이터를 저장할때 사용되는 데이터베이스 시스템
- 사전에 어디에 어떻게 저장할 것인지 정의 할 필요 없다.
- 대표적으로는
MongoDB
가 있다.
SQL의 장 단점
장점:
- 관계형 데이터베이스는 데이터 사용이 용이하고 셋업이 간편하다.
- 데이터를 더 효율적으로 그리고 체계적으로 저장할 수 있고 관리 할 수 있다.
- 구조적인 데이터에서 강하다.
- 미리 저장하는 데이터들의 구조(테이블 스키마)를 정의 함으로 데이터의 완전성이 보장된다.
단점:
- 테이블을 미리 정의해야 함으로 테이블 구조 변화 등에 덜 유연한다.
- 확장성이 쉽지 않다.
- 정형화된 데이터들 그리고 데이터의 완전성이 중요한 데이터들을 저장하는데 유리하다.
예) 전자상거래 정보. 은행 계좌 정보, 거래 정보 등등.
NoSQL의 장 단점
장점:
- 미리 테이블 구조를 짤 필요가 없다.
- 데이터 구조를 미리 정의하지 않아도 됨으로 저장하는 데이터의 구조 변화에 유연하다.
- 확장하기가 비교적 쉽다. 그냥 서버 수를 늘리면 됨(scale out)
- Cloud에서도 잘 작동하고 SQL대비 처리속도가 빠르다.
단점:
- 아직 기술이 계속 발전중인 상황이며, 상호교환하는 데이터 사용에서는 적합하지 않다.
- RESPONSE 가 더 늦어질 수 있다.
- 주로 비정형화 데이터 그리고 완전성이 상대적으로 덜 유리한 데이터를 저장하는데 유리하다.
예) 로그 데이타