용어 정리 - BE

JSLEE·2024년 9월 7일
0

데이터베이스

DBMS / RDBMS / NoSQL

  • DBMS (Database Management System) : 데이터를 관리하는 모든 시스템을 통칭하는 용어.
  • RDBMS (Relational Database Management System) :

    • RDBMS ⊂ DBMS
    • 데이터를 테이블 형태로 관리, 테이블 간 관계를 지정할 수 있음.
    • SQL을 사용하여 데이터를 처리.
    • ACID를 보장 - 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)
    • 복잡한 쿼리 & 트랜잭션 처리에 유리함.
  • NoSQL(Not Only SQL) :

    • NoSQL ⊂ DBMS
    • 정의된 스키마가 없거나, 유연한 스키마를 가짐. (= 데이터 구조가 동적으로 변화 가능)
    • 따라서 높은 확장성을 통해 비정형 데이터의 처리에 유리, 대규모 데이터 및 실시간 데이터 처리에 유리.
    • 테이블 기반이 아닌, document, key-value, Wide column 을 사용.
    • 보통 SQL이 사용되지 않는 DBMS를 NoSQL이라고 부름. ( ↔ RDBMS와 대비, 비관계형 데이터베이스 )
  • In-Memory :

    • In-Memory ⊂ DBMS
    • 데이터를 디스크가 아닌, 메모리에 저장하여 데이터 액세스 속도를 크게 향상시키는 데이터베이스 시스템
    • In-Memory DBMS는 SQL을 사용하는 시스템도 있고, NoSQL인 시스템도 있음.

XML & 트랜잭션

  • XML(Extensible Markup Language) : 데이터를 정의하는 규칙을 제공하는 마크업 언어. JSON처럼 데이터를 전달하거나 할 때 사용되고, HTML처럼 태그로 감싸서 메타데이터를 표시.
    ex)

    <note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>

    출처 : w3school

  • 트랜잭션 : 한 단위의 작업으로 취급되는 모든 작업. 예를 들어, 은행에서 계좌이체를 수행한다면 계좌의 금액을 변경(UPDATE), 이용자에게 변경된 금액 출력 (SELECT) 이 하나의 트랜잭션이라고 볼 수 있음. 트랜잭션에서는 ACID가 중요하게 작용.

    • Atomicity :
      트랜잭션이 완료되거나 전혀 실행되지 않아야 함을 보장.
      중간에 작업이 실패하면 트랜잭션이 롤백되어야 함.
      ex) 은행의 이체 트랜잭션은 출금/입금이 모두 성공하거나, 모두 실패해야함.
    • Consistency :
      트랜잭션이 완료된 후, DB의 제약조건을 위반하지 않고 일관되게 유지해야 함.
      ex) 은행 계좌는 음수가 될 수 없음.
    • Isolation :
      동시에 실행되는 트랜잭션들이 서로 독립적으로 작동해야 함.
      ex) 두 명이 똑같은 계좌에서 돈을 인출할 때, 다른 트랜잭션에 영향을 미치지 않아야 함.
    • Durability :
      트랜잭션이 완료된 후, 결과는 영구적으로 저장되야 함.
      ex) 트랜잭션이 성공한 후, 시스템에 장애가 생겨도 데이터가 손실되면 안됨.

참고 : databricks


SQL / NoSQL

  • SQL (Structured Query Language) :

    • DBMS에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의 언어.
    • 대부분의 RDBMS에서 SQL문이 사용됨.
    • SQL을 사용하는 DBMS를 SQL DBMS라고도 부름.
  • NoSQL (Not Only SQL) :

    • NoSQL은 SQL이 사용되지 않는 NoSQL DBMS를 의미하는 것임.
    • NoSQL은 특정한 언어를 의미하는 것이 아님!

DBMS 랭킹 >

출처 : DB-ENGINES

사용 예시

  1. MySQL(DBMS) + TypeORM(ORM 라이브러리) + MySQLWorkBench(GUI 툴) :

    • ORM은 Object-Relational-Mapping의 약자로, 객체 관계 매핑을 의미하며 관계형 DBMS에서 사용한다.
    • TypeORM은 ORM의 라이브러리 중 하나.
    • 테이블과 스키마를 클래스로 정의.
  2. MongoDB(DBMS) + Mongoose(ODM 라이브러리) + mongodb compass(GUI 툴):

    • ODM은 Object Data Modeling의 약자로, 비관계형 DBMS에서 사용한다.
    • Mongoose는 ODM의 라이브러리 중 하나. (MongoDB와 연동)
    • Collection과 Document를 스키마와 모델로 정의.

    * Document : MongoDB에서 데이터를 저장하는 기본 단위. JSON과 유사한 BSON 형식
    * Collection : RDBMS의 테이블과 유사. User라는 Collection에 구조가 다른 여러개의 Document를 저장할 수 있음.

예시 )

// User Collection

// 1번 Document
{
  "_id": "1",
  "name": "Alice",
  "age": 25
}

// 2번 Document
{
  "_id": "2",
  "name": "Bob",
  "age": 30,
  "email": "bob@example.com"
}

더 찾아볼것

  • 메시지 큐 시스템
  • 웹소켓
  • Socket.IO
profile
공부한 내용들을 정리하기 위해 사용하는 블로그입니다.

0개의 댓글