|
| 1 | +# SQL & NoSQL |
| 2 | + |
| 3 | +## SQL (관계형 데이터베이스) |
| 4 | + |
| 5 | +: sql(Structured Query Language)은 RDBMS (관계형 데이터베이스 관리 시스템)에서 데이터를 저장, 조작 및 검색하는 데 사용되는 도메인 별 프로그래밍 언어다. |
| 6 | + |
| 7 | +- 데이터는 정해진(엄격한) 데이터 스키마 (= structure)를 따라 데이터베이스 테이블에 저장 |
| 8 | +- 데이터는 관계를 통해서 연결된 여러개의 테이블에 분산 |
| 9 | +- 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의 (테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입 가능) |
| 10 | + |
| 11 | +### SQL의 장점 |
| 12 | + |
| 13 | +- 명확하게 정의 된 스키마, 데이터 무결성 보장 |
| 14 | +- SQL 데이터베이스는 신뢰할 수 있다. 데이터베이스 손실이나 손상 없이 대량의 데이터와 트랜잭션을 처리하도록 설계되어있음. |
| 15 | +- 관계는 각 데이터를 중복없이 한번만 저장됩니다. |
| 16 | +- SQL 데이터베이스는 사용하기 쉽다. 사전 데이터베이스 경험이 없는 사람들도 약간의 교육으로 SQL 데이터베이스 사용 방법을 배울 수 있다. |
| 17 | +- 확장정이 좋다. 필요에 따라 더 많은 데이터와 사용자를 수용하도록 쉽게 확장할 수 있다. |
| 18 | +- 대부분의 주요 데이터베이스 공급업체는 SQL 데이터베이스를 지원함. |
| 19 | +- 강력한 개발자 커뮤니티가 지원. |
| 20 | + |
| 21 | +### SQL (관계형 데이터베이스) 관리 시스템 |
| 22 | + |
| 23 | +- MySQL |
| 24 | +- Oracle |
| 25 | +- SQLite |
| 26 | +- MariaDB |
| 27 | +- PostgresSQL |
| 28 | + |
| 29 | +### SQL의 단점 |
| 30 | + |
| 31 | +- SQL은 스키마가 사전에 계획되어 있기때문에, 그대로만 데이터가 들어가야 한다. 그래서 유연하지 못하다. |
| 32 | +- 데이터가 여러 테이블로 분산되어 있기떄문에 Join을 이용하여야 합니다. |
| 33 | +- 수평적 확장이 어렵습니다. |
| 34 | + |
| 35 | +## NoSQL (비관계형 데이터베이스) |
| 36 | + |
| 37 | +: 관계형 데이터베이스도 한계점을 노출하게 되었으며 이로 인해 새로운 데이터베이스인 NoSQL이 탄생하게 되었다. NoSQL은 기본적으로 SQL(관계형)와 반대되는 접근방식을 따르기 때문에 지어진 이름이다. |
| 38 | + |
| 39 | +- 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음 |
| 40 | +- 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 액세스 |
| 41 | +- 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성 |
| 42 | +- 관계형 데이터베이스에서는 지원하는 Data처리 완결성(Transaction ACID 지원) 미보장 |
| 43 | +- 데이터의 스키마와 속성들을 다양하게 수용 및 동적 정의 (Schema-less) |
| 44 | +- 데이터베이스의 중단 없는 서비스와 자동 복구 기능지원 |
| 45 | +- 다수가 Open Source로 제공 |
| 46 | +- 확장성, 가용성, 높은 성능 |
| 47 | + |
| 48 | +### NoSQL의 장점 |
| 49 | + |
| 50 | +- 스키마, 관계없음. 변경에 용이함 |
| 51 | +- 대용량 데이터 처리에 최적화되어있음. 확장도 쉬움 |
| 52 | +- 저렴한 데이터베이스이며 오픈 소스 NoSQL 데이터베이스는 소규모 기업에 매우 저렴한 솔루션을 제공 |
| 53 | +- 더 쉽고 저렴한 확장성. 확장을 위해 하드웨어를 늘릴 필요가 없고 NoSQL은 스키마가없고 분산 시스템에 구축되므로 풀에 서버를 추가하기만 하면 됨 |
| 54 | + |
| 55 | +### NoSql의 단점 |
| 56 | + |
| 57 | +- 데이터 무결성을 보장하기 어려움 |
| 58 | +- 트랜젝션 처리, Join 사용하기 힘듦. 집계 쿼리 사용하기 힘듬 |
| 59 | +- 비교적 적은 커뮤니티 지원 |
| 60 | +- SQL과 달리 표준화가 부족 |
| 61 | +- 상호 운용성은 NoSQL 데이터베이스의 경우에도 문제가 생김 |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +## 참고자료 |
| 66 | +- https://www.oracle.com/kr/database/nosql/what-is-nosql/ |
| 67 | +- https://hanamon.kr/데이터베이스-sql-vs-nosql/ |
| 68 | +- https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html |
| 69 | +- https://siyoon210.tistory.com/130 |
| 70 | +- https://dingrr.com/blog/post/개발-sql-vs-nosql-언제-무엇을-사용할까 |
0 commit comments