SQL, NOSQL

OwlSuri·2022년 7월 22일
0

backgroundKnowledge

목록 보기
3/8

SQL

  • Stucture Query Language(구조적 질의 언어)
  • 관계적 데이터 베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어

SQL 문법의 종류

  • DDL(Data Definition Language, 데이터 정의 언어) : 각 릴레이션을 정의하기 위해 사용하는 언어(CREATE, ALTER, DROP 등)

  • DML(DATA Manipulation Language, 데이터 조작 언어) : 데이터 추가/수정/삭제하기 위한, 즉 데이터를 관리를 위한 언어(SELECT, INSERT, UPDATE 등)

  • DCL(Data Control Language, 데이터 제어 언어) : 사용자 관리 및 사용자 별로 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어(GRANT, REVOKE 등)

SQL 언어적 특성

  1. SQL은 대소문자를 가리지 않는다.(단 서버환경이나 DBMS의 종류에따라 데이터베이스 또는 필드명에 대해 대소문자를 구분하기도 힘)

  2. SQL 명령어는 반드시 세미콜론;으로 끝나야 한다.

  3. 고유값은 따옴표'' 로 감싼다.

SELECT * FROM EMP WHERE NAME = 'Suri'
  1. SQL에서 객체를 나타낼때는 백틱으로 감싼다.

SQL의 장점

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

참고 |

NOSQL

  • 많은 의견이 있지만 Not Only SQL로 설명
  • 비관계형 데이터 베이스
  • 기존의 관계형 데이터베이스 보다 더 융통성 있는 데이터 모델을 사용
  • 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공
  • 단순 검색 및 추가 작업에 있어서 매우 최적화된 키 값 저장 기법을 사용
    => 응답속도나, 처리 효율 등에 있어서 매우 뛰어난 성능을 나타냄

NOSQL의 특징(장점)

  • 유연성 : 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능

  • 확장성: 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되어있음

  • 고성능 : 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스를 통해 유사한 기능을 충족하려 할 때보다 뛰어난 성능을 얻게 함

  • 고기능성 : 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공

NOSQL의 단점

  • 유연성 때문에, 데이터 구조 결정을 하지 못하고 미루게 될 수 있다.
  • 데이터 중복은 여러 컬렉션과 문서가 (SQL 세계에서 처럼 하나의 테이블에 하나의 레코드가 아니라) 여러 개의 레코드가 변경된 경우 업데이트를 해야 한다.
  • 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정(update)를 해야 하는 경우 모든 컬렉션에서 수행해야 한다. (SQL 세계에서는 중복된 데이터가 없기 때문에 한번만 수행하면 됨)

NoSQL 데이터베이스로 사용할 수 있는 데이터 모델의 유형

  • 고정된 데이터 모델로 제한되지 않고 고도의 정형 데이터도 처리 가능
  1. 키-값
    키-값은 해시 테이블을 사용하여 키와 값의 쌍을 저장. 키는 알려졌지만 키 값은 알려지지 않은 경우에 키-값 유형이 가장 적합함

  2. 문서
    문서 데이터베이스는 문서 전체를 컬렉션이라 불리는 그룹으로 구성하여 키-값 데이터베이스의 개념을 확장. 문서 데이터베이스는 중첩된 키-값 쌍을 지원하며, 문서 내에 있는 모든 속성에 대한 쿼리를 허용

  3. 열 형식
    열 형식, 와이드 열 또는 열 패밀리 데이터베이스는 희소 데이터 행에 걸쳐 데이터와 쿼리를 효율적으로 저장하며 데이터베이스의 특정 열에 대한 쿼리 실행 시 이점을 제공

  4. 그래프
    그래프 데이터베이스는 노드 및 에지 기반 모델을 바탕으로 상호 연결된 데이터(예: 소셜 네트워크를 사용하는 사용자들 간의 관계)를 표현하고 복잡한 관계를 간단하게 스토리지하고 살펴볼 수 있도록 지원

SQL과 NOSQL의 차이점

  • SQL은 엄격한 스키마가 있어 스키마를 준수하지 않는 레코드는 추가할 수 없지만,
    NOSQL은 스키가 없다.
    -> SQL 세상에서는 정해진 스키마를 따르지 않는다면 데이터를 추가 할 수 없지만, NoSQL에서는 다른 구조의 데이터를 같은 컬렉션(= SQL에서의 테이블)에 추가할 수 있다.

  • SQL은 데이터들의 관계가 중요하지만(중복 피할 수 있음), NOSQL에서는 관계가 없다.

  • 데이터가 저장되는 방식 때문에 SQL 데이터베이스는 일반적으로 수직적 확장만을 지원.
    수평적 확장은 NoSQL 데이터베이스에서만 가능

SQL과 NOSQL은 언제 사용하는 것이 좋을까?

SQL

  • 관계를 맺고 있는 데이터가 자주 변경(수정)되는 애플리케이션일 경우
    (NoSQL에서라면 여러 컬렉션을 모두 수정해줘야만 하기 때문)
  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우

NOSQL

  • 정확한 데이터 구조를 알 수 없거나 변경 / 확장 될 수 있는 경우
  • 읽기(read)처리를 자주하지만, 데이터를 자주 변경(update)하지 않는 경우
    (즉, 한번의 변경으로 수십 개의 문서를 업데이트 할 필요가 없는 경우)
  • 데이터베이스를 수평으로 확장해야 하는 경우 (막대한 양의 데이터를 다뤄야 하는 경우)

참고
| https://siyoon210.tistory.com/130
| 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
| https://www.samsungsds.com/kr/insights/1232564_4627.html
| https://aws.amazon.com/ko/nosql/
| https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-nosql-database/?ranMID=43674&ranEAID=rl2xnKiLcHs&ranSiteID=rl2xnKiLcHs-1cll95Hi93zSmcln88t3SQ&epi=rl2xnKiLcHs-1cll95Hi93zSmcln88t3SQ&irgwc=1&OCID=AID2200057_aff_7795_1243925&tduid=%28ir__nc6wvqc3lckfblpbmf0wesvwp32xvcl1mlbnvxfl00%29%287795%29%281243925%29%28rl2xnKiLcHs-1cll95Hi93zSmcln88t3SQ%29%28%29&irclickid=_nc6wvqc3lckfblpbmf0wesvwp32xvcl1mlbnvxfl00

profile
기억이 안되면, 기록을 -

0개의 댓글