[ DB & SQL(RDBMS, NoSQL) ] SQL vs NoSQL
∇ DB & SQL_데이터 베이스 공부 : SQL vs NoSQL
목 차
1. 데이터베이스란?
2. SQL(Structrued Query Language)란
3. NoSQL이란?
Ⅰ. 데이터베이스란?
🩻 데이터 베이스란.
- 데이터베이스는 데이터를 저장하는 곳으로
"데이터를 여러 사람이 공유하여 사용할 목적으로 체계화해 통합*관리하는 데이터의 집합" 입니다.
== 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음.
√ '데이터베이스'는 중복된 데이터를 없애고, 자료를 구조화하여 효율적인 처리를 할 수 있도록 관리해주기 때문에
여러 업무에 여러 사용자가 데이터베이스를 사용할 수 있습니다.
√ "데이터베이스 관리 시스템(DBMS)"
: 데이터베이스는 응용 프르갬과는 다른 별도의 미들웨어에 의해 관리됩니다.
-> 데이터베이스를 관리하는 이러한 미들웨어를 '데이터베이스 관리 시스템(DBMS)이라고 합니다.
🩻 데이터 베이스의 특징.
▶ 사용자의 질의에 대하여 '즉각적인 처리와 응답'이 이루어집니다.
▶ 생성 * 수정 * 삭제를 통하여 항상 최신의 데이터를 유지합니다.
▶ 사용자들이 원하는 데이터를 동시에 공유할 수 있습니다.
▶ 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조 할 수 있습니다.
▶ 응용프로그램과 데이터베이스는 독립되어 있으므로,
데이터의 논리적 구조와 응용프로그램은 별개로 동작됩니다.
🩻 관계형 데이터베이스란?
◇ "관계형 데이터베이스"는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류로서
'테이블(Table)'로 이루어져 있고, 이 테이블은 키(key)와 값(value)의 관계를 나타냅니다.
==>> 데이터의 종속성을 관계(realtionship)로 표현한 것이 관계형 데이터베이스의 특징입니다.
▷ 테이블은 이름을 가지고 있으며, 행(row)과 열(column) , 그리고 거기에 대응하는 값을 가집니다.
▷ 관계형 데이터베이스는 위와 같이 "구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체 ! "
√ 관계형 데이터베이스의 특징.
▶ 데이터의 분류, 정렬, 탐색 속도가 빠릅니다.
▶ 신뢰성이 높고 어떤 상황에서도 데이터의 무결성을 보장해줍니다.
▶ 기존에 작성된 스키마를 수정하기가 어렵습니다.
▶ 데이터베이스의 부하정도를 분석하는 것이 어렵습니다.
🩻 대표적인 데이터베이스 서비스.
◆ SQL : MYSQL, SQLite, PostgreSQL, 등등.
◆ NoSQL : mongoDB, DynamoDB, CouchDB 등등.
Ⅱ. SQL ( Structured Query Language ) 이란?
🩻 SQL 이란?
∇ '데이터베이스'와 소통하기 위해 특별히 디자인된 언어입니다.
∇ '데이터베이스'에서 데이터를 { 정의 * 조작 * 제어 } 하기 위해 사용되며,
SQL 구문도 위의 목적에 맞게 크게 3가지고 구분됩니다.
▷ SQL은 많은 정부기관과 기업들이 사용.
▷ SQL의 데이터 구조는 엄격
▷ SQL의 커맨드는 영어와 비슷
▷ SQL은 엑셀과도 비슷.
★ ORM 이란??
== 파이썬/자바 등의 코드를 가져와서 SQL문으로 변환해 주는 것.
시간을 아껴주는 장점이 있지만 ORM에 대한 의존도가 너무 커지기 때문에
ORM에 문제가 생겼을 때를 대비해, SQL에 대해서도 알아두는 것이 좋음.
🩻 대표적인 SQL. [ My SQL ]
"My SQL" 은 가장 널리 사용되고 있는 "관계형 데이터베이스 관리 시스템(RDBMS : Relational DBMS)" 입니다.
-> My SQL은 오픈 소스이며, 다중 사용자와 다중 스레드를 지원합니다.
++ C/C++/JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하고 있습니다.
◇ My SQL의 장점.
1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있습니다.
2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원합니다.
3. 크기가 큰 데이터 집합도 빠르고 효과적으로 처리할 수 있습니다.
4. 표준 SQL 형식을 사용합니다.
5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정 가능.
Ⅲ. NoSQL 이란?
🩻 NoSQL이란?
- Not Only SQL 혹은 Not SQL으로 뜻이 딱 한가지의 DB만을 뜻하지는 않습니다.
{ NoSQL은 거대한 DB의 그룹입니다 }
🩻 NoSQL의 3가지 카테고리.
1. Document DB
√ 몽고 DB ( Mongo DB )
- > Document DB의 가장 대표적인 예.
- > Mongo DB는 데이터를 JSON Document 형태로 저장해서 보통의 SQL처럼 행과 열이 존재하는 것이 아니라, 원하는 어떤 종류의 데이터든, 어떤 모양의 데이터든 저장이 가능합니다.
2. Key Value DB
-Key Value DB는 어떤 종류의 DB를 얻을 수 있는지가 제한적입니다.
저장하기전에 DB에서 무엇을 얻을 지 미리 생각해놔야 합니다.
반대로 NOSQL Key Value DB에서는 SQL에서 하던것처럼 쿼리를 적용 할 수 없습니다.
√ 카산드라 DB ( Cassandra DB )
: Column Wide Database의 유형이기도 한 카산드라 DB는 읽고 쓰기가 매우 빠릅니다.
검색엔진처럼 많은 양의 데이터를 빠르게 읽어야 할 때 카산드라DB를 쓰면 좋습니다.
√ Amazon Dynamo DB
: DynamoDB는 서버리스하고 분산된 Key Value DB로
빠르게 많이 쓰고(Write), 많이 읽어야할 때(read) 사용하면 매우 편리합니다.
3. Graph DB
-Graph DB는 각 노드 사이 관계를 알아야 하고, Column이나 Document가 필요없을 때 사용합니다.
ex) SNS를 만들 때 Graph DB가 필요합니다.
- 각각의 entity를 저장하고 이를 관계망으로 연결 하는 것이 필요하기 때문.
->> 유저 1이 사진 1을 저장하고, 유저1은 유저 2의 친구고, 유저 1이 유저 2의 사진에 좋아요를 누르는 등의
데이터베이스 작업은 그래프 데이터베이스에 저장하는 것이 훨씬 수월합니다.
√ TAO : 페이스북에서 만든 Graph DB
√ Neo4J : 소셜 네트워크를 만들 때 사용하기 좋은 Graph DB
Ⅳ. SQL vs NoSQL
평범한 프로젝트, 간단한 프로젝트는 SQL을 사용하는 것이 좋습니다.
- SQL로 대부분의 코드 구현이 가능하기 때문.
- NoSQL은 특별한 경우나 특별한 이슈들에 대응하기 좋은 데이터베이스입니다.
'Data [ Engineer & Analytics &science ] > DB & SQL(RDBMS, NoSQL)' 카테고리의 다른 글
[ DB & SQL(RDBMS, NoSQL) ] 관계형 데이터 모델링 : 구성 요소. (1) | 2024.12.19 |
---|---|
[ DB & SQL(RDBMS, NoSQL) ] 관계형 데이터 모델링 : 전체 흐름도. (0) | 2024.12.19 |
[ DB & SQL(RDBMS, NoSQL) ] 데이터 베이스 공부 : DB 기초. (1) | 2024.12.11 |