Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- Annotation
- Spring
- lombok
- 개발
- 자바
- 이행시
- yeouido
- 어노테이션
- repository
- bit
- StringBuilder
- CS
- 삼행시
- string
- Service
- 스프링
- Controller
- 아스키코드
- replace()
- 문자열
- StringBuffer
- java
- 백엔드
- 항해
- upc
- 윤동주
Archives
- Today
- Total
Dev.끄적끈적
SQL 과 noSQL 차이 본문
# SQL Database (관계형 데이터베이스)
SQL은 '구조화 된 쿼리 언어 (Structured Query Language)'를 말합니다. 따라서 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호 작용하는 데 사용 하는 쿼리 언어입니다.
SQL을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있습니다.
이러한 관계형 데이터베이스에는 두 가지 주요 특징이 있습니다.
- 데이터는 엄격한 데이터 스키마(= structure)를 따라 데이터베이스 테이블에 저장됩니다.
- 데이터는 관계를 통해서 연결된 여러 테이블에 분산됩니다.
# NoSQL Database (비관계형 데이터베이스)
NoSQL은 기본적으로 SQL데이터베이스와 반대되는 접근방식을 따르기 때문에 붙여진 이름입니다.
- 스키마 없음
- 관계 없음
NoSQL 세계에서는 테이블(table)을 컬렉션(Collection)으로, 레코드(record)를 문서(documents)라고 부릅니다.
그러나 단순히 이름만 다른 것이 아니라, 핵심적인 차이가 있습니다. SQL 세계에서는 정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없었지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(= SQL에서의 table)에 추가할 수 있습니다.
# Scaling (확장) - 처리 할 읽기 및 쓰기 요청 수 증가할 때
SQL - 수직(Vertical Scaling) 확장:
- 단순히 db 서버 성능을 향상 (ex. cpu 업그레이드)
noSQL -수평(Horizontal Scaling) 확장
- 더 많은 서버가 추가되고 db가 전체적으로 분산. 여러 호스트에서 작동. 쉽게 분할 가능
# 장점
SQL의 장점
- 명확하게 정의 된 스키마, 데이터 무결성 보장
- 관계를 통해 각 데이터를 중복없이 한 번만 저장할 수 있습니다
NoSQL의 장점
- 스키마가 없기때문에, 유연성이 높습니다.. 즉, 저장된 데이터를 언제든지 조정하고 새로운 "필드"를 추가할 수 있습니다.
- 데이터는 애플리케이션에 필요한 형식으로 저장됩니다. 이렇게 하면 데이터를 가져오는 속도가 빨라집니다.
- 수직 및 수평 확장이 가능하므로 데이터베이스가 애플리케이션에서 발생시키는 모든 읽기 / 쓰기 요청을 처리 할 수 있습니다.
# 단점
SQL의 단점
- 상대적으로 덜 유연하며, 데이터 스키마는 미리 알고 계획해야합니다. (나중에 수정하는 것이 어렵거나 불가능 할 수 있습니다.)
- JOIN문이 많은 매우 복잡한 쿼리가 만들어 질 수 있습니다.
- 수평 확장이 어렵고, 보통 수직 확장만 가능합니다. 즉 어느 시점에서 처리량/처리 능력과 관련하여 약간의 성장 한계에 직면하게 될 수 있습니다.
NoSQL의 단점
- 유연성 때문에, 데이터 구조 결정을 늦어질 수 있습니다.(바로 계획, 결정해야하는 것이 아니기 때문에)
- 복사된 데이터가 변경되면 여러 콜렉션과 문서를 수정해야 합니다.
# 결론
1. 관련 데이터가 자주 변경되는 경우, 데이터 구조가 극적으로 변경되지 않을때 ? -> SQL
2. 맺고있는 관계가 자주 수정되는 경우, 읽기 처리를 변경보다 자주할 경우. 막대한 양 데이터 다뤄야할 경우 -> noSQL
감사합니다. 여의도섹시개발자 였습니다.