1 분 소요

우리는 아키텍처에 대해 배우면서 데이터 베이스가 들어간 3-아키텍처를 배운적이 있다. 오늘은 데이터 베이스에 대해 알아보도록 하겠다.

데이터 베이스

데이터 베이스란 서버에서 사용되는 데이터를 모아두고 저장하는 곳을 의미한다.

데이터 베이스의 필요성

  1. In-Memory

Js에서 데이터를 다룰 때에는 프로그램이 실행될 때에만 존재하는 데이터가 있다. 만약 변수에 담아 데이터를 저장을 하게 된다면, 프로그램이 종료될 때 그 데이터는 사라지게 될 것이다. 즉, 데이터를 보호할 수 없으며, 프로그램의 의존성이 높기 때문에 좋지 않은 방법이다.

  1. File I/O

데이터를 csv나 엑셀 시트에 저장하여 데이터를 불러올 때마다 이 파일을 읽어오면 되지 않을까? 이 파일을 읽는데에 시간이 걸릴 뿐더러, 파일의 용량이 커지면 작업이 비효율적이다. 만약 파일이 손상되거나, 파일을 여러개 동시에 다루게 된다면 그 작업 또한 힘들것이다.

SQL(Structured Query Language)

SQL은 데이터베이스 언어로, 관계형 데이터베이스에서 사용한다. SQL은 데이터베이스 용 프로그래밍 언어이다. 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다. SQL은 데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용할 수 있다. SQL을 사용하기 위해서는 데이터가 구조가 고정되어 있어야 한다.

No SQL

No SQL 또한 데이터베이스 언어로, 비관계형 데이터베이스에 사용한다. No SQL은 테이블을 사용하지 않고 데이터를 다른 형태로 저장하게 된다. 이 점은 다음에 다시 알아보도록 하겠다.

쿼리

쿼리란 ‘질의문’이라는 뜻을 가지고 있다. 예를 들어, 검색할 때 입력하는 검색어가 일종의 쿼리이다. 검색을 할 때, 기존에 존재하는 데이터를 검색어로 필터링 한다. 따라서 쿼리는 저장되어 있는 데이터를 필터하기 위한 질의문으로 볼 수 있다.

트랜잭션

트랜젝션이란 데이터베이스의 상태를 변환시키는 논리적 기능이다. 즉, 명령(쿼리)을 모아 놓은 하나의 작업 단위이다. 여기서 쿼리는 데이터에 대한 처리를 명령하는 것이다. 각 트랜잭션은 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업을 다 완료해야 정상적으로 종료한다. 만약 하나라도 실패를 한다면 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단한다.

ACID

ACID는 다음으로 이루어져 있다.

  • Atomicity

    하나의 트랜잭션 내에서는 모든 연산이 성공하거나 모두 실패해야 한다.

  • Consistency

    하나의 트랜잭션 전후에 데이터베이스의 일관된 상태가 유지되어야 한다.

  • Isolation

    각각의 트랜잭션은 독립적이며, 서로의 연산을 확인하거나 영향을 줄 수 없다.

  • Durability

    하나의 성공한 트랜잭션에 대한 로그가 기록되고 영구적으로 남는다.

ACID란 데이터베이스 트랜잭션이 발생할 때, 그 안전성을 보장할 수 있는 성질이다.

Mysql

관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. 테이블은 행과 열로 구성이 되어 있다. 각 열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장된다. 특정한 형식을 지키기 때문에, 데이터를 정확히 입력했다면 데이터를 사용할 때에는 매우 수월하다. 즉, 테이블 간의 관계를 직관적으로 파악할 수 있다.

댓글남기기