SQL/NoSQL

RDBMS NoSQL 비교 (CRUD 예시)

dddzr 2023. 9. 6. 15:40

Databse, DBMS, SQL 개념

- Databse

컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합을 의미합니다.


- DBMS (DataBase Management System)

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어입니다.


- SQL (Strucured Query Language)

관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었습니다.

RDBMS와 NoSQL

- RDBMS (Relational Database Management System)

  • SQL 질의어를 사용하기 위해 데이터를 구조화해야 함
  • 관계(키와 외래키)를 통해 테이블 간 연결이 이루어짐

- NoSQL(Non SQL 또는 Not Only SQL)

  • 다양한 데이터 모델을 지원(문서, 키-값(mongoDB), 열 지향, 그래프 등) 
  • 데이터 중복을 허용하여 데이터 모델을 간소화

 

장단점 비교

- RDBMS 장점

  • 데이터 일관성 및 무결성: RDBMS는 ACID 트랜잭션을 지원하여 데이터 일관성과 무결성을 보장합니다. 
  • 명확한 스키마: 정확한 데이터 구조를 사전에 정의하고 스키마를 유지합니다. 이는 데이터의 구조 변경이 드물거나 변경이 어려운 경우에 유용합니다.
  • 복잡한 질의 처리: RDBMS는 SQL을 사용하여 복잡한 질의를 처리할 수 있습니다. 데이터를 조인하고 분석하는 데 용이합니다.

 

- RDBMS 단점

  • 스케일링 어려움: 수평적 확장이 어려운 경우가 많아 대용량 데이터 처리에 한계가 있을 수 있습니다.
  • 유연성 부족: 스키마 변경이 어려우며, 새로운 요구사항에 적응하기가 어려울 수 있습니다.

 

- NoSQL 장점

  • 유연한 스키마: NoSQL은 스키마를 유연하게 변경하거나 데이터 모델을 조정할 수 있습니다. 데이터 구조를 동적으로 확장하기 용이합니다.
  • 수평적 확장: 대용량 데이터 처리 및 고성능을 위해 데이터베이스 서버를 추가하는 수평적 확장이 가능합니다.
  • 데이터 중복을 허용: 중복 데이터를 저장하고 조회할 수 있어 데이터를 빠르게 읽을 수 있습니다.

 

- NoSQL 단점

  • 일관성 모델의 다양성: NoSQL 데이터베이스마다 일관성 모델이 다를 수 있으며, 덜 엄격한 모델을 사용할 수 있어도 일관성이 떨어질 수 있습니다.
  • 복잡한 질의 처리 어려움: SQL에 비해 질의 처리가 어려울 수 있으며, 데이터 조인이 제한적일 수 있습니다.
  • 데이터 무결성: NoSQL에서는 데이터 무결성을 어플리케이션 레벨에서 관리해야 하므로 조심해야 합니다.


요약

RDBMS는 일관성과 무결성이 중요한 데이터 및 복잡한 질의를 필요로 하는 경우에 적합하며
NoSQL은 대용량 및 유연한 데이터 모델이 필요한 경우에 적합합니다.

 

CURD 예시

- RDBMS (MySQL)

-- MySQL 테이블 생성
CREATE TABLE Users (
    UserID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Age INT
);

-- 데이터 삽입 (INSERT)
INSERT INTO Users (UserID, FirstName, LastName, Age)
VALUES (1, 'John', 'Doe', 30);

-- 데이터 조회 (SELECT)
SELECT * FROM Users WHERE Age > 25;

-- 데이터 업데이트 (UPDATE)
UPDATE Users SET Age = 31 WHERE UserID = 1;

-- 데이터 삭제 (DELETE)
DELETE FROM Users WHERE UserID = 1;

테이블을 정의하고 INSERT, SELECT, UPDATE, DELETE와 같은 SQL 문을 사용하여 데이터를 조작합니다. 

 

- NoSQL (MongoDB)

// MongoDB 컬렉션 생성
db.users.insertOne({
    UserID: 1,
    FirstName: 'John',
    LastName: 'Doe',
    Age: 30
});

// 데이터 조회 (FIND)
db.users.find({ Age: { $gt: 25 } });

// 데이터 업데이트 (UPDATE)
db.users.updateOne({ UserID: 1 }, { $set: { Age: 31 } });

// 데이터 삭제 (DELETE)
db.users.deleteOne({ UserID: 1 });

 MongoDB는 JSON 형식의 도큐먼트를 사용하며, 데이터를 컬렉션에 삽입하고 조회, 업데이트, 삭제할 때 JSON과 유사한 쿼리를 사용합니다.

'SQL > NoSQL' 카테고리의 다른 글

[MongoDB] mongoDB compass사용법  (0) 2023.09.06
[MongoDB] Database, Collection, Document 개념, 예제  (0) 2023.09.06
[MongoDB] 설치 (Tool 사용법)  (0) 2023.09.05