CS/데이터베이스

SQL VS NoSQL

성장하는 코더 2022. 11. 4. 15:54

1. SQL

  • SQL은 Structured Query Language (구조적 질의 언어)의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 자료를 저장하고 처리하기 위해 설계된 프로그래밍 언어이다.
    • 쿼리(Query) 데이터베이스나 파일의 내용 중 원하는 내용을 검색하기 위하여 몇 개의 코드(code)나 키(Key)를 기초로 질의하는 것을 말한다. 쿼리(질의)는 답을 달라는 일종의 요청이라고 할 수 있다. 간단하게 말하면 데이터베이스에 정보(답)를 요청하는 것이라고 할 수 있다.
  • SQL 문을 사용하여 데이터베이스에서 정보를 저장, 업데이트, 제거 및 검색 할 수 있다.
  • 데이터베이스 성능을 유지 관리하고 최적화하는 데 SQL을 사용할 수도 있다.

1.1. SQL이 중요한 이유

  • SQL은 많은 애플리케이션에서 자주 사용되는 쿼리 언어이다. 데이터 분석가와 개발자는 SQL이 많은 프로그래밍 언어와 잘 통합되므로 SQL을 사용한다.
  • 예를 들어 Java 프로그래밍 언어로 SQL 쿼리를 포함시켜 Oracle, MySQL과 같은 RDBMS로 데이터 처리를 가능하게 하는 애플리케이션을 만들 수 있다.

1.2. SQL 종류

SQL은 크게 3가지 종류로 나뉜다.

1.2.1. DDL(Data Definition Language, 데이터 정의 언어)

  • DDL문은 데이터베이스 테이블, 인덱스 등을 생성하거나 변경, 삭제 하는 것으로 데이터를 저장할 구조를 정의하는 언어이다.
명령어 적용 기능
CREATE SCHEMA 또는 DATABASE 데이터베이스 생성
TABLE 테이블 생성
INDEX 인덱스 생성
VIEW 뷰 생성
ALTER SCHEMA 또는 DATABASE 데이터베이스 수정
TABLE 테이블 수정
DROP SCHEMA 또는 DATABASE 데이터베이스 삭제
TABLE 테이블 삭제
INDEX 인덱스 삭제
VIEW 뷰 삭제

1.2.2. DML(Data Manipulation Language, 데이터 처리 언어)

  • DML은 데이터 구조가 DDL로 정의되면 해당 데이터 구조에 데이터 CRUD 작업을 할 수 있다.
  • CRUD: Create-생성, Read-읽기, Update-갱신, Delete-삭제
INSERT 테이블에 적합한 새로운 데이터를 삽입
UPDATE 테이블에서 조건을 만족하는 특정 데이터의 컬럼값을 수정
DELETE 테이블에서 조건을 만족하는 특정 데이터를 삭제
SELECT 테이블에 존재하는 레코드 중 주어진 조건을 만족하는 데이터를 검색

1.2.3. DCL(Data Control Language, 데이터 제어 언어) 

  • DDL로 정의된 구조에 어떤 사용자가 접근할 수 있는지 권한을 부여하거나 회수하는 것이다.
  • DBMS의 동작 설정 및 DBMS 접근에 대한 사용자의 권한을 관리한다.
  • GRANT, BEGIN 등의 명령어로 구성되며, 주로 데이터베이스 관리자(DBA, Database Administration)가 사용한다.
GRANT 데이터베이스 개체(스키마 ,인덱스)에 대한 사용 권한 설정
BEGIN 트랜잭션(Transaction) 시작
COMMIT 트랜잭션 내의 실행 결과 적용
ROLLBACK 트랜잭션의 실행 취소

 

* 트랜잭션: 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. 즉, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.

* 스키마: 스키마란 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것이다. 속성(Attribute), 개체(Entity), 관계(Relation)에 대한 정의와 이들이 유지해야 할 제약 조건들을 기술한 것이다.

쉽게 정리하여, DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 한다.

2. 관계형 데이터 모델

RDB에 대해 알기 전에 관계형 데이터 모델에 대해 알아보자.

 

관계형 데이터 모델2차원 구조의 테이블 형태를 통해 자료를 표현하는 것을 말한다.

 회원번호 이름  수강과목  나이 
A0001 김영희 수학  17
A0002 박선주 수학 13
A0003 한민석 국어 19
A0004 이철수 영어 15
A0005  강현지 영어 18

2.1. 관계형 데이터 모델의 용어

  • 릴레이션(Relation): 데이터들을 2차원 테이블의 구조로 저장한 것
  • 속성(Attribute): 릴레이션의 열(=Column), 개체를 구성하는 속성들을 나타낸다. 
    • ex) 회원번호, 이름, 수강과목, 나이
  • 튜플(Tuple): 릴레이션의 행(=Row). 속성들의 집합이며 레코드(Record)라고도 부른다.
    • ex) A0001, 김영희, 수학, 17
  • 차수(Degree): 릴레이션을 구성하는 속성의 수
  • ex) 위의 예시 테이블에서 차수는 4
  • 카디널리티(Cardinality): 릴레이션에 입력된 튜플의 수
  • 위의 예시 테이블에서 카디널리티는 5
  • 도메인(Domain): 하나의 속성이 가질 수 있는 값들의 범위
  • 널(Null): 정보 부재를 나타내기 위해 사용되는 특수한 데이터 값
  • 릴레이션 스키마(Relation Schema): 릴레이션의 이름과 속성 이름의 집합
  • 릴레이션 인스턴스(Relation Instance): 릴레이션의 어느 시점까지 입력된 튜플들의 집합

3. RDB(Relational Database)

  • RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다.
  • 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체이다.
    • 이러한 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용한다.

3.1. SQL 데이터베이스(RDB) 특징

  1. 구조는 데이터베이스-테이블-레코드로 이루어져 있다.
  2. 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형(INT, VARCHAR 등)으로 정의된다.
    • 테이블의 속성(이름, 아이디)을 부르는 이름(name, id)을 필드라고 한다. 
    • 테이블에 쌓이는 행 단위의 데이터를 레코드(또는 튜플)라고 한다. 
  3. 데이터는 정해진 스키마에 따라 테이블에 저장된다. 스키마(필드, 타입 등)을 준수하지 않는 레코드는 테이블에 추가할 수 없다.
  4. 데이터는 관계를 통해 여러 테이블에 분산된다. 또한 데이터의 중복 등의 데이터베이스 이상현상을 피하기 위해 '관계'를 이용한다.

잘못된 종속 관계를 해결하는 정규화 과정에 대해 더 알고싶다면 아래 링크로!

https://daily-studygo.tistory.com/15

 

정규화

정규형 원칙 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 한다. 자료의 중복성은 감소해야 한다. 중복된 데이터를 만들지 않으면 DB 저장 용량을 효율적으로 관리할 수 있

daily-studygo.tistory.com

4. RDBMS

  • 관계형 데이터베이스 관리 시스템(RDBMS: Relational DataBase Management System)라고도 한다.
  • RDBMS는 관계형 데이터베이스(RDB)를 관리하기위한 소프트웨어이다.
  • 테이블(Table based)기반의 DBMS로 데이터를 조건에 따라서 테이블의 행과 열로 나누어 관리하는 시스템이다.
    • 행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타낸다. 
  • SQL이라는 언어를 써서 조작한다.

* DBMS(database management system): 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해 주는 소프트웨어

4.1. RDBMS 종류

출처: DB-Engines, https://db-engines.com/en/ranking

  • MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등이 있다.
  • RDBMS(관계형 데이터베이스)의 경우 표준 SQL은 지키기는 하지만 각각의 제품에 특화시킨 SQL을 사용한다. 예를 들어 오라클의 경우 PL/SQL이라고 하며 MySQL은 SQL을 쓴다.

대표적인 RDBMS 3가지를 보자.

4.1.1. MySQL

  • DB 서버마다 독립적인 스토리지를 할당하는 방식
  • MySQL은 대부분의 운영체제와 호환되며 현재 가장 많이 사용한다.(스택 오버플로우 조사 기준)
  • 오픈 소스로 무료로 사용 가능하다.
  • update 성능이 postgre보다 우수하다.
  • Nested Loop Join만 지원한다. => MySQL은 복잡한 알고리즘은 가급적 지원하지 않는다라는 설계 사상에 기반하기 때문이다.
  • 문자열 비교에서 대소 문자를 구분하지 않는다.
  • 간단한 처리 속도를 향상 시키는 것을 추구한다.
  • 간단한 데이터 트랜잭션을 위한 데이터베이스가 필요한 웹 기반 프로젝트에 널리 사용된다. 복잡한 쿼리는 성능이 저하된다.

4.1.2. PostgreSQL

  • 오픈 소스로 무료로 사용 가능하다.
  • 다양한 join 방법을 제공한다.
    • nested loop join, hash join, sort merge join
  • SQL뿐만 아니라 JSON을 이용해서 데이터에 접근할 수 있다.
  • update를 할 때, 과거 행을 삭제하고 변경된 데이터를 가진 새로운 행을 추가하는 형태라서 update가 느리다.
  • 데이터베이스 클러스터 백업 기능을 제공한다.

* 클러스터 백업 기능: 디스크로부터 데이터를 읽어오는 시간을 줄이기 위해 자주 사용되는 테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법

* 클러스터: 하드디스크드라이브 위에 파일을 저장하는 논리적 단위

4.1.3. Oracle

  • DB 서버가 통합된 하나의 스토리지를 공유하는 방식
  • 대부분의 운영체제를 지원한다.
  • 성능이 좋고, 기능이 많은데 비싸다. (무료도 있지만 일부 기능을 제공하지 않는다.)
  • 대규모 데이터베이스를 지원한다.
  • 고성능 트랜잭션 처리를 제공하여 속도가 빠르다.
  • SQL문을 실행하는 가장 효율적인 방법을 선택한다. 비용을 최소화하기 위해 스키마와 인덱스를 분석한다.

 

여기서 잠깐! MySQL, Oracle 등은 그럼 RDB라고 부를까 RDBMS라고 부를까?

더보기

MySQL프로그램(RDBMS) 내부에 관계형 데이터베이스(구조화된 데이터 모음, 저장소) 즉, RDB가 만들어져 있기 때문이에 결론은 둘 다 MySQL(and Oracle)이라고 할 수 있다.

엔진을 담당하는 MySQL은 DB 자체이며, DB를 접근하기 위한 서버와 클라이언트의 형태를 제공한다. 기본적으로 DB에 접근하기 위한 인터페이스를 서버로 두고 있다. 이 서버는 기본 설정에 따르면 localhost IP 에 3306 포트로 열려있으며 이를 통해 MySQL 클라이언트가 이에 접근(Connect) 하여 질의(Query) 하는 구조로 되어 있다.(이때 질의하는 언어는 SQL이다.) 

MySQL 엔진 아키텍처

5. NoSQL 데이터베이스

NoSQL(Not Only SQL)은 SQL을 사용하지 않는 데이터베이스를 말한다. 당연히 스키마, 관계도 없다.

5.1. NoSQL 데이터베이스 특징

  1. 구조는 데이터베이스-컬렉션-도큐먼트로 이루어져 있다.
    • NoSQL에서는 레코드를 documents(문서)라고 부른다.
  2. 정해진 스키마를 따르지 않으면 데이터 추가가 불가능한 RDBMS와 달리 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다.
  3. 도큐먼트는 Json과 비슷한 형태로 가지고 있다. RDBMS처럼 여러 테이블에 나누어담지 않고, 관련 데이터를 동일한 '컬렉션'에 넣는다. 즉, MySQL처럼여러 테이블을 조인할 필요가 없다.
    • 예를 들어 RDBMS에서 A, B, C 테이블로 나눌 경우 NoSQL에서는 A컬렉션에 한꺼번에 포함해서 저장하는 방식이다.
    • 그렇다면 일부 데이터들을 조인하고 싶을 때 어떻게 할까?
      • 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출하도록 한다. 하지만 이러면 데이터가 중복되어 서로 영향을 줄 위험이 있다. 따라서 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 쓰면 상당히 효율적이다.

5.2. 저장 방식에 따른 NoSQL 분류

Key-Value Model, Document Model 등으로 분류할 수 있다.

5.2.1. Key-Value Model

  • Key를 이용해 value에 접근하는 구조이다.
  • 단순한 저장구조를 가지며, 복잡한 조회 연산을 지원하지 않는다.
  • 고속 읽기와 쓰기에 최적화된 경우가 많다. key에 대한 단위 연산이 빠른 것이지, 여러 key에 대한 연산은 느릴 수 있다.
  • 장점 : 간단한 API를 제공하는 만큼 질의의 속도가 굉장히 빠른 편이다. 수평적 확장이 용이하다.
  • 단점 : 값의 내용을 사용한 쿼리가 불가능하다.
  • ex) Redis

Redis의 key-value 모델, 출처: https://kwangkyun-world.tistory.com/entry/NoSQL-%EC%A0%80%EC%9E%A5%EB%B0%A9%EC%8B%9D%EC%97%90-%EB%94%B0%EB%A5%B8-%EB%B6%84%EB%A5%98

5.2.2. Document Model

  • Key/Value Store의 확장된 형태로, value에 Document라는 타입을 저장한다. Document는 구조화된 문서 데이터(XML, JSON, YAML 등)을 말한다.
  • Value값으로 String(text, binary data), set(String 집합), sorted set(set을 정렬해둔 상태), Hash, List 등을 저장할 수 있다. (Hash - 키 하나에 여러개의 필드와 value 쌍으로 저장)
  • 논리적인 데이터 저장과 조회 방법이 RDBMS와 유사하다. (복잡한 데이터 구조를 표현가능하다.)
  • Document id 또는 특정 속성값 기준으로 인덱스를 생성한다. 이 경우 해당 key 값의 range에 대한 효율적인 연산이 가능해 지므로 이에 대한 쿼리를 제공한다. 따라서 Sorting, Join, Grouping 등이 가능해진다.
  • 쿼리 처리에 있어서 데이터를 파싱해서 연산을 해야하므로 overhead가 key-value 모델보다 크다. 큰 크기의 document를 다룰 때는 성능이 저하된다.
  • 장점 : 객체-관계 매핑이 필요하지 않다. 객체를 도큐먼트의 형태로 바로 저장 가능하기 때문이다. (도큐먼트가 Json등의 형식이기 때문에)
  • 단점 : 도큐먼트 모델에서는 질의의 결과가 JSON이나 xml 형태로 출력되기 때문에 사용 방법이 번거롭다.
  • ex) MongoDB

mongo DB의 document 모델, 출처: https://kwangkyun-world.tistory.com/entry/NoSQL-%EC%A0%80%EC%9E%A5%EB%B0%A9%EC%8B%9D%EC%97%90-%EB%94%B0%EB%A5%B8-%EB%B6%84%EB%A5%98

* 객체 관계 매핑(ORM, Object-Relational Mapping): 객체와 테이블을 자동으로 매핑해주는 기술이다. 객체지향언어에서의 클래스와 관계형데이터베이스의 테이블을 매핑해준다.

5.3. NoSQL 데이터베이스 종류

MongoDB, redis 등이 있다.

5.3.1. MongoDB

  • MongoDB는 JSON을 통해 데이터에 접근할 수 있다.
  • Binary JSON 형태(BSON)로 데이터가 저장된다.
  • 키-값 데이터 모델에서 확장된 Document Model 기반의 데이터베이스이다.
  • 메인 저장소나 로그 목적 용도이다.

5.3.2. redis

  • 물리 디스크가 저장소인 MongoDB와 다르게 redis는 인메모리 데이터베이스이다.
    • 보통 데이터베이스는 하드 디스크나 SSD에 저장한다. 하지만 redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다는 장점이 있다.
  • Key-Value Model기반의 데이터베이스다. 
  • 성능 목적의 캐싱도 가능해 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스터링에도 활용된다.
  • 세션 클러스터링이란 WAS가 2대 이상 설치가 되어있을 경우 세션을 공유하여 대체된 WAS에도 동일한 세션을 관리하는 것을 의미한다.

세션 클러스터링, 출처: https://kku-jun.tistory.com/44

  • RAM은 휘발성이라 데이터가 다 날아가서 이를 막기 위한 백업 과정이 존재한다.
    • snapshot : 특정 지점을 설정하고 디스크에 백업
    • AOF(Append Only File) : 명령(쿼리)들을 저장해두고, 서버가 셧다운되면 재실행해서 다시 만들어 놓는 것

6. 확장 개념(scale-up & scale-out)

scale-up
scale-out

  • 두 데이터베이스를 비교할 때 중요한 Scaling 개념도 존재한다.
  • 데이터베이스 서버의 확장성은 '수직적' 확장과 '수평적' 확장으로 나누어진다.
    • 수직적 확장(scale-up):  
      • 기존의 서버를 보다 높은 사양으로 업그레이드하는 것을 말한다. 이처럼 하나의 서버의 능력을 증강하기 때문에 수직적 확장(vertical scaling)이라고 말한다. 
      • ex) 서버에 디스크 추가, CPU나 메모리 업그레이드
    • 수평적 확장(scale-out):
      • 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산되는 것을 의미한다. 
      • 기존 서버만으로 용량이나 성능의 한계에 도달했을 때, 비슷한 사양의 서버를 추가로 연결해 처리할 수 있는 데이터 용량이 증가할 뿐만 아니라 기존 서버의 부하를 분담해 성능 향상의 효과를 기대할 수 있다.
      • 서버를 추가로 확장하기 때문에 수평적 확장(horizontal scaling)이라고 말한다.
      • 클라우드 서비스에서는 자원 사용량을 모니터링하여 자동으로 서버를 증설(Scale Out)하는 Auto Scaling 기능도 있다.
  • 데이터 저장 방식(스키마)으로 인해 RDBMS는 일반적으로 수직적 확장만 지원한다. 수평적 확장은 NoSQL 데이터베이스에서만 가능하다.

6.1. scale-up과 scale-out의 장단점 비교

7. RDBMS VS NoSQL

그럼 RDBMS VS NoSQL 무엇을 선택해야 할까?

정답은 없다. 둘다 훌륭한 솔루션이고 어떤 데이터를 다루느냐에 따라 선택을 고려해야한다.

 

SQL DB 장점

  • 명확하게 정의된 스키마, 데이터 무결성 보장한다.
  • 관계는 각 데이터를 중복없이 한번만 저장한다.

SQL DB 단점

  • 덜 유연하다. 즉, 스키마를 사전에 계획하고 알려야 한다. (나중에 수정하기 힘들어 진다)
  • 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.
  • 대체로 수직적 확장만 가능하다.

NoSQL 장점

  • 스키마가 없어서 유연하며 자유로운 데이터 구조를 가질 수 있다.
  • 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능하다.
  • 수직 및 수평 확장이 가능하다. 즉, RDBMS가 지원하지 않는 데이터 분산(수평적 확장)이 가능하다.

NoSQL 단점

  • 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 한다. (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능하다.)
  • 스키마가 존재하지 않아 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정하기가 어렵다.

 

SQL DB 사용이 더 좋을 때

  • 데이터 구조가 명확하며 데이터 구조가 변경 될 여지가 없는 경우
  • RDBMS는 중복된 데이터가 없기 때문에(데이터 무결성) 관계를 맺고 있는 데이터가 자주 변경되는 시스템에 적합하다.
    • NoSQL에서는 여러 컬렉션을 모두 수정해야 하기 때문에 비효율적이다.

NoSQL DB 사용이 더 좋을 때

  • 정확한 데이터 구조를 알 수 없거나 데이터 구조가 변경/확장이 될 수 있는 경우
  • 읽기를 자주 하지만, 데이터 변경은 자주 없는 경우
  • 데이터베이스를 수평으로 확장(분산)해야 하는 경우. 즉, 막대한 양의 데이터를 다뤄야 하는 경우

 

참고:

https://edu.goorm.io/learn/lecture/15413/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-sql/lesson/767683/sql%EC%9D%B4%EB%9E%80

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io

https://aws.amazon.com/ko/what-is/sql/

 

SQL이란 무엇인가요? - SQL - AWS

구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다. 관계형 데이터베이스는 정보를 표 형식으로 저장하며, 행과 열은 다양한 데이터 속성과

aws.amazon.com

https://mimi-coding.tistory.com/10

 

SQL종류 정리(이론)

SQL이란 (Structured Query Language) '구조화 된 질의 언어'라는 의미로, 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위한 비절차적(non-procedural language)언어이다. 일반적인 프로그래밍

mimi-coding.tistory.com

https://www.fun-coding.org/mysql_basic1.html

 

데이터베이스 기본 (MySQL): RDBMS(Relational Database Management System) 이해 - 잔재미코딩

RDBMS(Relational Database Management System) 이해 1. RDBMS(Relational Database Management System) 이해¶ 1.1 데이터베이스란?¶ 체계화된 데이터의 모임 여러 응용 시스템들의 통합된 정보를 저장하여, 운영할 수 있는

www.fun-coding.org

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Database/SQL%EA%B3%BC%20NOSQL%EC%9D%98%20%EC%B0%A8%EC%9D%B4.md

 

GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Database/SQL%20vs%20NoSQL.md

 

GitHub - WooVictory/Ready-For-Tech-Interview: 💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간

💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간 👨‍💻. Contribute to WooVictory/Ready-For-Tech-Interview development by creating an account on GitHub.

github.com

https://pythontoomuchinformation.tistory.com/528

 

RDBMS와 NoSQL의 차이점 및 장단점

들어가기 전에 DBMS DataBase Management System 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어. SQL Strucured Query Language 관계형 데이

pythontoomuchinformation.tistory.com

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database#nosql

 

GitHub - JaeYeopHan/Interview_Question_for_Beginner: Technical-Interview guidelines written for those who started studying progr

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - GitHub - JaeYeopHan/Interview_Question_for_Beginner: Techn...

github.com

https://terms.naver.com/entry.naver?docId=1221298&cid=40942&categoryId=32828 

 

클러스터

하드디스크드라이브 위에 파일을 저장하는 논리적 단위. 하드디스크드라이브에서 파일을 저장하는 단위로 1개 또는 복수의 섹터로 이루어진다. 작은 파일은 1개, 용량이 큰 파일은 여러 개의 클

terms.naver.com

https://velog.io/@jisoo1170/Oracle-MySQL-PostgreSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80

 

Oracle, MySQL, PostgreSQL 차이점은?

각 DB의 차이점을 알아보자

velog.io

https://dheldh77.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B0%9D%EC%B2%B4%EA%B4%80%EA%B3%84%EB%A7%A4%ED%95%91ORM-Object-Relational-Mapping

 

[데이터베이스] 객체관계매핑(ORM, Object-Relational Mapping)

영속성(Persistence) 1) 영속성(Persistence) - 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성 - 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하고 프로그램 종

dheldh77.tistory.com

https://kwangkyun-world.tistory.com/entry/NoSQL-%EC%A0%80%EC%9E%A5%EB%B0%A9%EC%8B%9D%EC%97%90-%EB%94%B0%EB%A5%B8-%EB%B6%84%EB%A5%98

 

NoSQL 저장방식에 따른 분류

간단하게 NoSQL이란 ? Not Only SQL의 의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장

kwangkyun-world.tistory.com

https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/

 

Scale-up과 Scale-out에 대해 알아보자!

tecoble.techcourse.co.kr

https://kku-jun.tistory.com/44

 

세션 클러스터링이란?

세션 클러스터링이란? 세션 클러스터링이란 WAS가 2대 이상 설치가 되어있을 경우 세션을 공유하여 대체된 WAS에도 동일한 세션을 관리하는 것을 의미합니다. 예를 들어 L4 스위치가 사용자를 접

kku-jun.tistory.com

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Database/Redis.md

 

GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

https://huistorage.tistory.com/17

 

RDBMS, RDB 정의 및 기능

RDBMS (Relational DataBase Management System) RDBMS는 관계형 데이터베이스를 관리하기위한 소프트웨어입니다.테이블(Table based)기반의 DBMS로 데이터를 조건에 따라서 테이블의 행과 열로 나누어 관리하는

huistorage.tistory.com

[Real MySQL 8.0] MySQL 엔진 아키텍처 (tistory.com)

 

[Real MySQL 8.0] MySQL 엔진 아키텍처

MySQL 서버는 크게 머리 역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구성된다. 기본으로 제공되는 스토리지 엔진에는 InnoDB와 MyISAM 등이 있다. MySQL의 구조 MySQL 엔진 MySQ

jjingho.tistory.com

주홍철.『면접을 위한 CS 전공지식 노트』.길벗, 2022.

'CS > 데이터베이스' 카테고리의 다른 글

정규화  (0) 2022.10.21