📢 프로젝트에서 무결성, 로깅, 빠른 성능 등 용도에 따라 MySQL, Mongo DB, Redis 를 구분하여 사용하였다. 이와 관련된 데이터베이스 시스템에 대해 알아보자!
전자적으로 저장되고 체계적인 데이터 모음이다.
단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있다.
데이터베이스를 생성, 관리, 제어, 운영하는 소프트웨어를 데이터베이스 관리 시스템 DBMS(Database Management System) 이라고 한다.
DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류된다.
관계형 DBMS (Relational DataBase Management System) 로 모든 데이터를 2차원의 테이블 형태로 표현하는 RDB(Relational DataBase)를 생성하고 수정하고 관리할 수 있는 소프트웨어를 뜻한다.
RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있다.
MySQL, Oracle, PostgreSQL 등이 RDBMS의 예이다.
Strucured Query Language로 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다.
NoSQL이란(Not Only SQL)의 약자로 RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며 RDBMS의 한계를 극복하기 위해 나온 새로운 형태의 DBMS 이다.
NoSQL 데이터베이스는 관계형 모델을 사용하지 않으며, 스키마가 없거나 유연하고, 수평적으로 확장될 수 있다.
NoSQL 데이터베이스는 키-값 스토어, 문서 데이터베이스, 컬럼 스토어, 그래프 데이터베이스 등 여러 유형이 있다.
MongoDB, Cassandra, Redis 등이 NoSQL의 예이다.
👉 MySQL은 오픈 소스 기반의 RDBMS로 가장 많이 사용하는 데이터베이스 중 하나이며, 뛰어난 성능과 안정성을 제공한다.
데이터의 무결성과 일관성을 보장하며, Windows, Linux, MacOS 등 다양한 운영 체제에서 사용할 수 있다.
MySQL은 웹 애플리케이션과 서버에서 주로 사용되며, PHP, Java, Python, C++ 등의 다양한 프로그래밍 언어와 호환된다.
👉 대규모 트랜잭션 처리에는 다소 한계가 있을 수 있으며 복잡한 쿼리를 처리하는 데 있어 일부 불편함이 있을 수 있다. 또 데이터 복구 기능이 다른 상용 데이터베이스에 비해 떨어질 수 있다.
👉 NoSQL 중 오픈 소스 기반의 인메모리 데이터베이스로, 키-값 형태의 데이터 저장 및 관리에 특화되어 있다.
메모리에 데이터를 저장하기 때문에 매우 빠른 읽기, 쓰기 성능을 제공하며 문자열, 리스트, 세트, 해시 등 다양한 데이터 타입을 지원한다.
주로 캐싱, 세션 관리, 메시징 시스템 등에 활용되며, 데이터의 영속성을 위해 디스크에 데이터를 저장하는 옵션도 제공합니다.
👉 데이터가 메모리에 저장되므로, 물리 메모리 용량이 한계가 있을 수 있으며 복잡한 쿼리를 지원하지 않는다.
👉 NoSQL 기반의 문서 지향적인 데이터베이스로, JSON 형식의 문서를 저장하고 관리한다.
스키마 없는 유연한 데이터 모델로, 동적으로 데이터 구조가 변하는 경우에 유리하며 데이터의 분산 저장 및 처리가 가능하여 대용량 데이터를 효율적으로 처리할 수 있다.
또한, 다양한 데이터 타입과 복잡한 데이터 구조를 지원한다.
주로 대용량 데이터와 실시간 데이터 처리에 적합하며, 클라우드 환경과 인터넷 기반 서비스에서 많이 사용된다.
👉 전통적인 RDBMS에 비해 트랜잭션 처리 기능이 미흡하며 RDBMS만큼의 높은 데이터 무결성을 보장하지는 않는다.
👉 오픈 소스 기반의 객체 관계형 데이터베이스 관리 시스템(ORDBMS)로 복잡한 쿼리, 다양한 데이터 타입, 저장 프로시저, 뷰, 트리거, 트랜잭션 등 풍부한 기능을 제공한다.
사용자 정의 함수, 연산자, 데이터 타입 등을 통해 데이터베이스를 확장할 수 있으며 표준 SQL을 완벽하게 지원하며, 호환성이 높다.
👉 다양한 기능과 확장성 때문에 학습 곡선이 다소 가파를 수 있으며 대용량 데이터나 복잡한 쿼리의 경우, 일부 다른 DBMS에 비해 응답 속도가 느릴 수 있다.