🌼 NoSQL vs SQL
1️⃣ SQL (관계형 DB)
테이블 간의 관계를 직관적으로 파악 할 수 있다.
SQL 정규화 - DB설계시 중복을 최소화해서 구조화 하는 프로세스
스키마를 준수하지 않으면 테이블에 추가 할 수 없다.
스키마에 따라 정해진 구조에 맞는 것만 테이블에 추가 할 수 있다.
데이터의 성능이 일반적으로 정렬,탐색,분류가 빠르다.
데이터 베이스에서 저장된 값들에 대한 여러가지 제한
데이터의 신뢰를 보장하게 하여 일관성을 유지 시켜준다
1. 영역 무결성
- 한 컬럼에 대해 NULL의 허용 여부
2. 참조 무결성
- 기본 키와 참조 키 간의 관계가 항상 유지
3. 개체 무결성
- 테이블에 있는 모든 행들이 유일한 식별자를 가질것을 요구
테이블 간의 관계를 연결 시켜주는 것이 'ORM'이라 한다.
⛔️ ORM(SQL) / ODM(NoSQL)
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 의미한다.
설정해둔 스카마를 바탕으로 SQL를 직접 작성 할 필요없이 자동으로 SQL을 생성한다.
SQL
Squlize
TypeORM
Prisma
2️⃣ NoSQL (비관계형 DB)
SQL과는 반대로 스키마,관계도 없다. 비교적 가볍다.
다른 구조의 데이터를 같은 테이블에 추가할 수 있다.
테이블간 조인 기능이 없다
분산형 구조로 특정 서버가 장애가 발생했을 때도 데이터 유실, 서비스 중지가 되지 않는다.
데이터를 저장하는 칼럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.
3️⃣ NoSQL vs SQL
NoSQL | SQL |
---|
스키마가 없다. (데이터 무결성을 보장하지 못함) | 명확하게 정의된 스키마.(데이터 무결성 보장) |
데이터 중복을 계속 업데이트 해야 한다.(수정시 모든 컬렉션에서 수행) | 데이터를 중복없이 한번만 저장(한번만으로 수행가능) |
관계설정이 없기 때문에 조인 기능이 없다. | 조인 문이 많아지면 복잡한 쿼리가 만들어 질 수 있음 |
수직 및 수평 확장이 가능 | 수직적 확장만 가능함 |
출처