달싹이 2024. 8. 7. 07:40
728x90
반응형

데이터베이스는 데이터를 보관하는 창고 역할만 하기 때문에 관리하는 시스템이 필요하다.

 

DBMS(DataBase Management System)는 데이터베이스를 관리하는 시스템이다.

데이터베이스의 데이터를 정리하거나 처리하는 작업을 한다.

DBMS 종류

  • MySQL, PostgreSQL, SQLite, Oracle, MariaDB 등

각 DBMS마다 쓰이는 SQL문이 마치 사투리처럼 조금씩 차이가 있다.

데이터베이스는 한 무리의 데이터를 테이블(Table)로 관리한다.

SQL

SQL(Structured query language)은 데이터베이스에 질문, 문의를 하기 위한 구조를 가진 언어이다.

 

⇒ 즉, SQL은 데이터베이스를 관리하는 DBMS와 소통하기 위한 언어이다.

SQL 문법

데이터 검색(Data Retrieval)

  • SELECT~ FROM~;
  • SELECT~ FROM~ WHERE~;
  • SELECT~ FROM~ ORDER BY~ ASC|DESC;
  • SELECT~ FROM~ LIMIT~;
  • SELECT~ FROM~ LIKE~;
  • SELECT~ FROM~ GROUP BY~;
  • SELECT~ FROM~ GROUP BY~ HAVING~;
  • SELECT DISTINCT~ FROM~ ;

데이터 조작(Data Manipulation)

  • INSERT INTO~ VALUES~;
  • UPDATE~ SET~ WHERE~;
  • DELETE FROM~ WHERE~;

데이터 정의(Data Definition)

  • CREATE TABLE~();
  • ALTER TABLE~ ADD|DROP COLUMN|COLUMN~;
  • DROP TABLE~;
  • CREATE INDEX~ ON~;
  • DROP INDEX~ ON~;

데이터 제어(Data Control)

  • GRANT SELECT, INSERT ON~ TO~;
  • REVOKE SELECT, INSERT ON~ FROM~;

트랜잭션 제어(Transaction Control)

  • BEGIN;
  • COMMIT;
  • ROLLBACK;

조인(Join)

  • SELECT~ FROM~ INNER JOIN~ ON~;
  • SELECT~ FROM~ LEFT JOIN~ ON~;
  • SELECT~ FROM~ RIGHT JOIN~ ON~;
  • SELECT~ FROM~ FULL OUTER JOIN~ ON~;

SQL을 프로그래밍 언어로 쓸 수 있게 해주는 ORM!

ORM(Object Relational Mapping)은 개발자에게 익숙한 프로그래밍 언어로 SQL을 사용할 수 있게 해준다.

그렇기에 ORM을 사용하게 된다면 SQL 공부를 미뤄두지만 너무 ORM에 의존하다가는 ORM만으로 대처하기 힘든 상황도 있기에 데이터베이스를 제대로 활용하려면 결국에는 필요에 따라서 공부하는게 좋다.

ORM 종류

  • 파이썬 - Django ORM
  • PHP - Laravel Eloquent
  • Node.js - Sequelize

NoSQL

NoSQL은 SQL이 DBMS마다 조금씩 다른것 처럼 언어의 특징만 다른게 아니라 데이터베이스 구조도 다르다.

특히 SQL은 데이터베이스가 테이블(Table)형식으로 정형화된 구조를 가졌지만 NoSQL은 비정형화된 다양한 모델을 사용한다.

1. 데이터 형식이 자유로운 도큐먼트 데이터베이스

몽고디비(MongoDB)가 대표적이다.

JSON 형태로 데이터를 저장한다.

[
	{ "id": 1, "name": "슬리퍼", "price": 30000 },
	{ "id": 2, "name": "바지", "price": 50000 }
]

대괄호와 중괄호로 구성되며, 데이터마다 구성이 같을 필요가 없어 원하는 모양, 종류의 데이터로 만들어 저장할 수 있는 장점이 있다.

2. 읽고 쓰는 속도가 빠른 키-값 데이터베이스

카산드라디비(CassandraDB), 다이나모디비(DynamoDB)가 대표적이다.

카산드라디비의 특징은 열이 넓다. 한 행이 엄청 긴 데이터를 저장하는 것이다.

1초에 수만 개의 데이터를 읽고 쓸 수 있을 정도로 속도가 매우 빠르다.

애플, 넷플릭스, 인스타그램, 우버 같은 회사가 사용한다.

다이나모디비는 아마존이 만들었다. 듀오링고(Duolingo)라는 언어 학습 애플리케이션에서 쓰는데 비슷하다.

키-값 데이터베이스는 대용량 데이터를 빠르게 저장해야 하거나 읽어야 할 때 사용하기 좋다.

3. 노드로 관계를 표현하는 그래프 데이터베이스

각 데이터를 노드로 관계망을 구축한다.

특히 페이스북이 직접 노드형식으로 데이터베이스를 개발했다.

SQL과 NoSQL 차이

특성 SQL NoSQL
데이터 모델 정형화된 테이블 비정형화된 다양한 모델
스키마 고정 스키마 유연한 스키마
확장성 수직적 확장 수평적 확장
트랜잭션 ACID BASE
데이터 관계 복잡한 관계 가능 단순한 관계 또는 관계 없음
사용 사례 금융, ERP, 전통적 애플리케이션 소셜 미디어, 실시간 분석, 비정형 데이터

선택 기준

  • SQL은 데이터 구조가 명확하고, 일관성이 중요하며, 복잡한 쿼리가 필요한 경우에 적합하다.
  • NoSQL은 데이터 구조가 유동적이고, 대량의 데이터를 빠르게 처리해야 하거나, 데이터 간의 관계가 복잡하지 않은 경우에 적합하다.어떤 프로젝트냐에 따라서 각각의 시스템을 활용할 수 있을 것이다.
  • 결론적으로, SQL과 NoSQL은 각각의 장단점이 있고, 사용 사례에 따라 적절한 데이터베이스 시스템을 선택하는 것이 중요하다.
반응형