데이터, 파일 시스템, 데이터베이스를 알아본 내용을 공유드려요.

데이터 (Data)

사전적 정의는 "문자, 숫자, 소리, 그림, 영상 등의 형태로 된 의미 단위" 예요.
데이터는 사용자에게 가치를 제공하고 비즈니스 로직을 수행하는데 필수적이면서 가장 중요한 자원이라고 생각해요.

파일 시스템 (File System) 이란?

사전적 정의는 "컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말" 이에요.
비정형, 반정형 데이터를 정적 파일로 저장해서 디렉토리에 보관하여 사용하는 방식이에요.

  • 비정형(이미지, 동영상, 오디오, Binary Data 등)
  • 반정형 (JSON, XML 등)

파일 시스템 특징

데이터 읽기/쓰기

파일 시스템은 운영체제가 직접 관리하는 디스크 공간에 데이터를 읽거나 기록하도록 설계되었어요.
내부적으로 데이터를 구조화하고 인덱싱하는 복잡한 과정이 없기 때문에, 특정 파일의 내용을 통째로 다루거나 순차적으로 기록할 때 오버헤드가 적어 빠르게 처리할 수 있어요.
특히 대용량의 비정형 데이터를 저장하고 로드할 때 장점이 발휘해요.

유연한 데이터 형태

파일 시스템은 데이터의 내용을 해석하는데 관여하지 않아요.
그저 0과 1의 연속인 바이트 스트림으로 간주하고 디스크에 자유롭게 저장하는 유연성을 가져요.
하지만, 너무 유연한 탓에 데이터 간의 중복 저장이 발생하기 쉬워, 불필요한 데이터가 쌓이거나 잘못된 형태로 저장될 위험이 있어요.
즉, 용량과 관리의 어려움으로 이어질 수 있어요.

동시성과 무결성

파일 시스템은 여러 사용자가 동시에 같은 파일을 사용하면 레이스 컨디션 문제가 발생할 수 있어요.
기본적인 파일 잠금만으로는 복잡한 동시성 시나리오를 효율적으로 제어하기 어렵고, 데이터 충돌로 인해 일관성이 쉽게 훼손될 수 있어요.
또한, ACID를 보장하는 메커니즘이 없기에, 작업이 얽히거나 장애가 발생 시 예상치 못하게 데이터가 변경되거나 손실될 수 있어 실시간으로 데이터의 무결성을 보장하기 어려워요.

정교한 검색

파일 시스템은 파일의 이름과 위치만 관리하기에, 내부의 데이터 구조나 내용에 대한 정보를 알고있지 않아요.
쿼리와 같은 검색 매커니즘이 없어서, 특정 내용을 찾기위해선 파일 전체를 읽고 파싱해야해요.
그래서, 데이터의 양이 많거나 복잡한 검색이 필요할수록 검색 성능이 매우 비효율적이에요.

백업과 복구

파일 I/O 에서는 백업과 복구 기능이 많이 부족해 어려움이 있어요.
백업은 단순히 파일을 복사하는 수준에 머무르고, 복구 시점도 세밀하게 제어하기 어려워요.

데이터베이스 (Database)란?

사전적 정의는 "여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합" 이에요.
즉, 체계적으로 구조화된 데이터의 집합으로 효율적으로 저장, 관리, 검색 및 업데이트를 할 수 있어요.

  • 사용자 정보, 제품 정보, 주문 정보 등 비즈니스 핵심 데이터
  • 게시글, 댓글, 좋아요 등 관계가 복잡하거나 번번한 변경이 있는 데이터
  • 실시간으로 검색, 정렬, 필터링이 필요한 데이터
  • 트랜잭션이 중요한 금융, 재고 관리 시스템

데이터베이스 특징

구조화된 데이터 관리

데이터를 RDB 또는 NoSQL DB 등의 형태로 구조화하여 저장해요.
SQL 또는 특정 쿼리 언어를 사용하여 복잡한 조건에서도 효율적으로 조회, 필터링, 정렬, 집계할 수 있으며, 인덱스 기능을 통해 검색 성능을 극대화할 수 있어요.

트랜잭션과 동시성 제어

트랜잭션은 여러 데이터 조작 작업을 하나의 논리적인 단위로 묶어 처리하며 ACID 속성을 보장해요.

데이터 무결성

데이터베이스는 제약 조건(Constraints)을 통해 데이터의 정확성과 일관성을 강력하게 강제해요.

기본 키 (Primary Key)
각 레코드를 고유하게 식별하여 중복을 방지해요.

외래 키 (Foreign Key)
테이블 간의 관계를 설정하여 참조 무결성을 보장해요.

Unique, Not Null
특정 컬럼의 값이 고유하거나 비어있지 않도록해요. 이러한 제약 조건은 휴먼 에러 및 외부 요인으로 인한 잘못된 데이터 입력을 사전에 방지하여 데이터의 신뢰도를 높혀요.

백업 및 복구, 보안

데이터베이스 관리 시스템(DBMS)은 강력한 백업 및 복구 매커니즘을 내장하고 있어요.
정기적인 백업, 실시간 로그 기록(Write-Ahead Logging) 등을 통해 시스템 장애, 데이터 손상, 자연재해 발생 시에도 데이터 손실을 최소화하고 원하는 시점으로 정확하게 복구할 수 있어요.
또한, 사용자 인증 및 권한 관리 시스템을 통해 누가 어떤 데이터에 접근하고 어떤 작업을 수행했는지 세밀하게 제어할 수 있어요.

확장성

필요에 따라 수평 확장 (Scale Out) 또는 수직 확장 (Scale Up) 을 통해 더 많은 데이터를 처리하고 트래픽을 감당할 수 있게 설계할 수 있어요.
수평 확장은 서버 성능을 증대, 수직 확장은 서버를 증설 및 분산 처리를 의미해요.
RDBMS 수직 확장에 유리하며, NoSQL은 분산 처리를 통해 수평 확장에 유리해요.

정리하며

파일 대신 데이터베이스를 사용하자

데이터는 사용자에게 가치를 제공하고 비즈니스 로직을 수행하는데 중요한 자원이에요.
단순히 데이터를 저장하는 것을 넘어, 효율적이고 안전하게 관리하며 여러 사용자가 동시에 접근해도 문제가 없도록 보장하려면 파일 시스템만으로는 한계가 있어요.
주로 데이터베이스를 사용하고, 필요시 파일 시스템을 사용해야해요.

  • 데이터 구조화 및 복잡한 검색의 필요성
  • 동시성 제어 및 데이터 무결성 보장
  • 데이터 손실 방지 및 복구의 용이성
  • 보안 및 권한 관리