데이터베이스(Database) & SQL & NoSQL 개념정리

Ji Yeon Park·2020년 12월 23일
0

데이터베이스

목록 보기
1/1

✅ 데이터베이스(Database)란?

*️⃣ 데이터베이스란?

데이터베이스는 데이터를 저장하는 곳으로 데이터를 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다.
즉, 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이라고 볼 수 있다.

✔️ 데이터베이스는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리해주기 때문에 여러 업무에 여러 사용자가 데이터베이스를 사용할 수 있다.

✔️ 데이터베이스 관리 시스템(DBMS) : 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리됩니다. 데이터베이스를 관리하는 이러한 미들웨어를 데이터베이스 관리 시스템(DBMS: Database Management System)이라고 합니다.

*️⃣ 데이터베이스의 특징

▶️ 사용자의 질의에 대하여 즉각적인 처리와 응답이 이루어진다.
▶️ 생성, 수정, 삭제를 통하여 항상 최신의 데이터를 유지한다.
▶️ 사용자들이 원하는 데이터를 동시에 공유할 수 있다.
▶️ 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조 할 수 있다.
▶️ 응용프로그램과 데이터베이스는 독립되어 있으므로, 데이터의 논리적 구조와 응용프로그램은 별개로 동작된다.

*️⃣ 관계형 데이터베이스란?

관계형 데이터베이스는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류로서
테이블(Table)로 이루어져 있고, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다.
이처럼 데이터의 종속성을 관계 (relationship)로 표현한 것이 관계형 데이터베이스의 특징이다.

테이블은 이름을 가지고 있으며, 행(row)과 열(column) 그리고 거기에 대응하는 값을 가진다.
관계형 데이터베이스는 위와 같이 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있다.

✔️ 관계형 데이터베이스의 특징

▶️ 데이터의 분류, 정렬, 탐색 속도가 빠릅니다.
▶️ 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 줍니다.
▶️ 기존에 작성된 스키마를 수정하기가 어렵습니다.
▶️ 데이터베이스의 부하를 분석하는 것이 어렵습니다.

👉 관계형 데이터베이스 더 알아보기

*️⃣ 대표적인 데이터베이스 서비스

개발자로서 데이터베이스와 어떻게 대화하는지 아는 것은 필수적이다.

✔️ SQL : My-sql, SQLite, PostgroSQL, etc.
✔️ NON-SQL : mongoDB, DynamoDB, CouchDB, etc.


✅ SQL(Structured Query Language)이란?

*️⃣ SQL이란?

데이터베이스와 대화하기 위해 특별히 디자인된 언어이다.
데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용되며
SQL 구문도 위의 목적에 맞게 크게 세 가지로 구분된다.

▶️ SQL은 많은 정부기관과 기업들이 사용하고있다.
▶️ SQL은 엑셀과도 비슷하다고 생각하면된다.
▶️ SQL의 커맨드는 영어와 비슷해서 이해하기 쉽다.
▶️ SQL의 데이터 구조는 엄격(Strict)하다.

✔️ORM이란?? 파이썬을 가져와서 SQL코드로 바꿔주는 것. 시간을 아껴주는 장점이 있지만 ORM에 대한 의존도가 너무 커지기 때문에 ORM에 문제가 생겼을 때를 대비해 SQL에 대해서도 알아두는 것이 좋다.

*️⃣ 대표적인 SQL

✔️ My SQL

MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)이다.
MySQL은 오픈 소스이며, 다중 사용자와 다중 스레드를 지원한다.
또한, C언어, C++, JAVA, PHP 등 여러 프로그래밍 언어를 위한 다양한 API를 제공하고 있다.

MySQL은 유닉스, 리눅스, 윈도우 등 다양한 운영체제에서 사용할 수 있으며, 특히 PHP와 함께 웹 개발에 자주 사용된다.

✔️ My SQL의 장점

  1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있다.
  2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원한다.
  3. 크기가 큰 데이터 집합도 아주 빠르고 효과적으로 처리할 수 있다.
  4. 널리 알려진 표준 SQL 형식을 사용한다.
  5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있다.

✅ NoSQL이란?

*️⃣ NoSQL이란?

Not Only SQL 혹은 Not SQL으로 뜻이 딱 한가지 종류의 DB만을 뜻하지는 않는다.
NoSQL은 거대한 DB의 그룹이다. ex. 한국음식(SQL) vs No한국음식(NoSQL)


*️⃣ NoSQL의 3가지 카테고리

1️⃣ Document DB

✔️ 몽고DB(Mongo DB)
Document DB의 가장 대표적인 예이다.
Mongo DB는 데이터를 JSON Document 형태로 저장해서 보통의 SQL처럼 행과 열이 존재하는 것이 아니라
원하는 어떤 종류의 어떤 모양의 데이터든 저장이 가능하다.

2️⃣ Key Value DB

Key Value DB는 어떤 종류의 DB를 얻을 수 있는지가 제한적이다.
저장하기전에 DB에서 무엇을 얻을 지 미리 생각해놔야한다.
예를 들면 SQL에선 어떤 데이터를 얻을 것인지 고민할 필요가 없다. 대신 데이터의 구조에 대해 고민을 하게 된다. 반대로 NOSQL Key Value DB에서는 SQL에서 하던것처럼 쿼리를 적용 할 수 없다.

✔️ 카산드라DB(CassandraDB)
Column Wide Database의 유형이기도한 카산드라 DB는 읽고 쓰기가 매우 빠르다.
애플이 카산드라를 이용해서 10페타바이트 이상의 데이터를 저장하고있다.
검색엔진처럼 많은 양의 데이터를 빠르게 읽어야 할 때 카산드라DB를 쓰면 좋다.

✔️ Amazon DynamoDB
DynamoDB는 서버리스하고 분산된 Key Value DB로 빠르게 많이 쓰고(Write), 많이 읽어야할 때(read) 사용하면 매우 편리하다.

3️⃣ Graph DB

Graph DB는 각 노드 사이 관계를 알아야하고, Column이나 Document가 필요없을 때 사용한다.
예를 들어 SNS를 만들 때 Graph DB가 필요하다. 각각의 entity를 저장하고 이를 관계망으로 연결 하는 것이 필요하기 때문. 유저 1이 사진 1을 저장하고, 유저 1은 유저 2의 친구고, 유저 1이 유저 2의 사진에 좋아요를 누르는 등의 데이터 베이스는 그래프 데이터베이스에 저장하는 것이 훨씬 수월하다.
✔️ TAO : 페이스북에서 만든 Graph DB
✔️ Neo4J : 소셜 네트워크를 만들 때 사용하기 좋은 Graph DB


✅ SQL VS NoSQL

평범한 프로젝트, 간단한 프로젝트는 SQL을 사용하는 것이 좋다.
SQL로 대부분의 코드 구현이 가능하기 때문이다.
반대로 noSQL은 특별한 경우나 특별한 이슈들에 대응하기 좋은 데이터베이스다.
ex) GraphDB


출처 :
1) 노마드코더 아직도 SQL을 모른다고해서 5분 설명해드림 : https://www.youtube.com/watch?v=z9chRlD1tec
2) https://m.blog.naver.com/PostView.nhn?blogId=sqlgate&logNo=221330144175&proxyReferer=https:%2F%2Fwww.google.com%2F
3) http://www.tcpschool.com/mysql/mysql_intro_intro
4) https://m.blog.naver.com/acornedu/221040291485

profile
Frontend Developer

0개의 댓글