파일 시스템 정의 + DB와의 차이

윤뿔소·2024년 8월 5일
0

CS 지식 / 다양한 팁

목록 보기
17/20
post-thumbnail

컴퓨터에서 데이터를 저장하고 관리하는 방법에는 많은 방법이 있지만, 그 중에서도 파일 시스템과 데이터베이스(DB)는 가장 중요한 방식 중 하나입니다.
이 글에서는 파일 시스템을 정의하고, DB와의 차이를 알아보겠습니다.

DB의 정의와 문법은 따로 여기에 정리해두었습니다.

파일 시스템의 정의

데이터를 파일 단위로 저장하고 관리하는 방식.

운영체제(OS)는 파일 시스템을 통해 저장 장치(하드 디스크, SSD 등)에 데이터를 조직적으로 배치합니다.
조직적으로 배치되면 그에 해당하는 디렉토리가 짜여집니다.

파일(File)이란?

연관된 데이터를 저장하는 기본 단위.
텍스트 문서, 이미지, 동영상, 프로그램 실행 파일 등 다양한 형태의 데이터가 포함.

디렉토리(Directory)란?

파일들을 그룹화해 체계적으로 관리하는 구조.
폴더(Folder)라고도 불리우며, 파일이나 다른 디렉토리를 포함.

디렉토리 구조는 Tree 구조로 나타낼 수 있으며, 모든 디렉토리 및 파일의 최상위를 담는 디렉토리를 Root 디렉토리라고 합니다.

파일 시스템 종류

각각의 OS에서 쓰이는 최신 파일 시스템을 작성해봤습니다.

Window : NTFS (신기술 파일 시스템)

1993년 Windows NT 3.1부터 시작해 Windows 11에 이르기까지 Windows NT 기반 운영 체제에서 사용되는 기본 파일 시스템입니다. 파일 권한, 암호화, 압축, 저널링과 같은 고급 기능을 제공합니다. NTFS는 대용량 파일 및 파티션 크기를 지원하므로 최신 저장 장치에 적합합니다. 하지만 Windows 이외의 운영 체제와의 호환성이 제한적입니다.

장점

  • 보안 및 권한: NTFS는 파일 수준 권한으로 견고한 보안 모델을 제공합니다. 개별 파일과 폴더에 대한 권한을 설정해 사용자 및 그룹에 대한 액세스 권한을 제어할 수 있습니다.
  • SSD(Solid-State Drive)에 대한 TRIM 지원: TRIM은 사용하지 않는 데이터에 대해 드라이브에 알려주어 SSD가 향후 쓰기를 위해 공간을 지우고 준비할 수 있도록 합니다. NTFS 파일 시스템을 선택하면 성능을 유지하기 위해 TRIM이 기본적으로 활성화됩니다.

단점

  • 디스크 오류 및 복구: NTFS는 안정적으로 설계되었지만 디스크 오류가 여전히 발생할 수 있습니다. 디스크 오류가 발생하면 NTFS 복구에 많은 시간이 소요될 수 있으며 특수 도구가 필요할 수 있습니다.
  • 단편화: 시간이 지남에 따라, 특히 파일을 생성, 수정, 삭제할 때 NTFS 파일 시스템이 단편화될 수 있습니다. 단편화는 시스템이 흩어져 있는 파일 조각에 액세스하게 되므로 성능 저하로 이어질 수 있습니다.

Mac : APFS (Apple 파일 시스템)

Apple에서 macOS, iOS 및 기타 Apple 장치용으로 개발한 파일 시스템입니다. Apple의 하드웨어 및 소프트웨어와의 성능과 호환성을 최적화하도록 설계되었습니다. APFS에는 복제, 파일 수준 암호화, 솔리드 스테이트 드라이브의 향상된 성능과 같은 기능이 포함되어 있습니다. 이 파일 시스템은 2017년 macOS 10.13에 도입되었습니다.

장점

  • 향상된 성능: APFS는 이전 버전인 HFS+에 비해 향상된 성능을 제공합니다. 읽기/쓰기 복사, 공간 공유, 최적화된 메타데이터 처리와 같은 기술을 사용해 읽기 및 쓰기 속도를 향상시킵니다.
  • 데이터 보안: APFS에는 메타데이터 및 파일 콘텐츠에 대한 체크섬과 같은 데이터 무결성 기능이 내장되어 있습니다. 이를 통해 데이터 손상을 감지하고 방지할 수 있습니다. 또한 기본 암호화를 지원하므로 사용자가 이 수준에서 데이터를 암호화해 보안을 개선하고 민감한 정보를 보호할 수 있습니다.

단점

  • SSD(Solid-State Drive)에 대한 TRIM 지원: APFS는 SSD에 대한 TRIM 명령을 지원하지만 다른 파일 시스템에 비해 효율적이지 않을 수 있습니다. TRIM은 데이터 블록을 효율적으로 관리해 SSD의 성능과 수명을 최적화하는 역할을 합니다.
  • 제3자 소프트웨어 지원: 일부 오래된 제3자 소프트웨어 또는 유틸리티는 포맷된 드라이브로 작업할 때 APFS를 완전히 지원하지 않거나 제한이 있을 수 있습니다. 파일 시스템으로 옮기기 전에 중요한 소프트웨어나 도구가 APFS와 호환되는지 확인하는 것이 중요합니다.
  • 제3자 소프트웨어가 설치되지 않은 Windows PC에서는 APFS를 읽거나 쓸 수 없습니다.

Linux : Ext4 (4차 확장 파일 시스템)

Linux 운영 체제에서 널리 사용되는 파일 시스템입니다. Ext3의 후속 버전으로 성능, 확장성 및 안정성 측면에서 몇 가지 개선된 기능을 제공합니다. Ext4는 많은 Linux 배포판의 기본 파일 시스템입니다. 이 파일 시스템은 2003년에 처음 도입되었습니다.

장점

  • 저널링: 저널은 변경 사항이 디스크에 커밋되기 전에 추적해 정전이나 시스템 충돌 시 더 빠르게 복구할 수 있도록 합니다. 데이터 손상 위험을 줄이고 파일 시스템이 일관성을 유지하도록 보장합니다.
  • 파일 및 파티션 크기 증가: Ext4는 이전 버전에 비해 훨씬 더 큰 파일 및 파티션 크기를 지원합니다.

단점

  • 단편화: 대부분의 파일 시스템과 마찬가지로 Ext4는 단편화되기 쉽습니다. 시간이 지남에 따라 파일을 생성, 수정 및 삭제할 때 단편화가 발생해 성능이 저하될 수 있습니다.
  • 제한된 확장성: Ext4는 이전 버전에 비해 더 큰 파일 및 파티션 크기를 지원하지만, 확장성 측면에서 특정 한계가 있습니다.

DB란?

구조화된 데이터를 체계적으로 저장하고 관리하는 시스템.
데이터를 효율적으로 검색, 삽입, 수정, 삭제할 수 있는 기능을 제공.

자세한 정의와 문법은 여기에 정리해두었습니다.

파일 시스템과 DB와의 차이

파일 시스템데이터베이스
데이터 저장 및 관리데이터를 파일과 디렉토리에 저장 (raw data)Table 형태로, 행과 열로 데이터를 저장
데이터 검색순차적인 파일 접근을 통해 데이터를 검색
물리적 접근만 가능
SQL 또는 기타 쿼리 언어를 사용해 데이터를 검색
물리적 접근과 논리적인 접근 모두 가능
데이터 무결성제한된 데이터 무결성 메커니즘을 제공ACID 속성(원자성, 일관성, 고립성, 지속성)을 통해 데이터 무결성을 제공
데이터 독립성데이터 간의 독립성 ⬇︎
파일 간의 관계를 설정할 수 없어 데이터 간의 의존성 ⬆︎
데이터 간의 독립성 ⬆︎
테이블 간의 관계를 설정해 데이터 간의 의존성 ⬇︎
데이터 일관성여러 파일에서 동일한 데이터를 중복 저장할 수 있어 파일 간의 일관성을 유지하기 어려움ACID 속성(원자성, 일관성, 고립성, 지속성)을 통해 데이터 일관성을 보장
트랜잭션(Transaction)을 사용해 데이터 조작을 원자적으로 처리
동시성 제어제한된 동시성 제어 기능동시 데이터 액세스를 위해 동시에 접속했을 때 사용자를 구분
우선순위를 부여해 작업 수행 가능
데이터 관계데이터 간의 기본적인 관계 XKey를 통해 테이블 간의 관계 설정 가능
데이터 보안기본적인 파일 수준의 보안 메커니즘 제공사용자 인증, 접근 제어, 암호화와 같은 고급 보안 기능을 제공
데이터 중복여러 파일에 동일한 데이터 중복 저장 가능데이터 중복을 줄이기 위해 정규화(Normalization)를 통해 데이터를 구조화하고 관계를 설정 가능
백업 및 복구수동 백업 및 복구 프로세스 제공
파일 단위 백업 및 복구 작업 수행
내장된 백업 및 복구 메커니즘을 제공
트랜잭션 로그 활용해 DB 백업 및 복구 수행
인덱싱사용자 정의 인덱싱 지원효율적인 데이터 검색을 위해 인덱싱 지원
데이터 쿼리N/ASQL 같은 쿼리 언어를 사용한 복잡한 쿼리 지원
확장성파일 기반 구조로 인한 제한된 확장성대용량 데이터 세트와 동시 액세스를 지원하는 높은 확장성을 가짐

위 표를 근거로 파일 시스템과 DB의 장단점을 정리해보겠습니다.


파일 시스템의 장단점

장점

  • 데이터 저장 및 관리
    데이터를 파일과 디렉토리 형태로 저장하므로 비구조화된 데이터를 간단하게 저장하고 관리 가능.
    특히 텍스트 문서, 이미지, 동영상 등의 다양한 형태의 데이터를 저장할 때 유용.
  • 단순성
    구현과 사용이 간단해 리소스나 호환성 요구 사항이 제한된 장치에 적합.
  • 호환성
    NTFS, APFS, Ext4와 같은 파일 시스템은 각각 Windows, macOS, Linux와 같은 운영 체제에서 기본적으로 지원. 따라서 해당 운영 체제 모든 곳에 파일을 쉽게 읽고 쓰기 가능.

단점

  • 데이터 검색
    파일명이나 파일 경로 통해 데이터 검색해야 하고, 주로 물리적 접근만 가능.
    => 대량의 데이터를 검색할 때 비효율.
  • 데이터 무결성
    제한된 데이터 무결성 메커니즘 제공, 데이터 무결성 유지 어려움.
  • 데이터 독립성
    데이터 간의 독립성이 낮아 데이터 간의 의존성 ⬆︎
  • 데이터 일관성
    여러 파일에서 동일한 데이터 중복 저장해 파일 간의 일관성을 유지하기 어려움.
  • 동시성 제어
    제한된 동시성 제어 기능을 제공해 여러 사용자가 동시에 파일에 접근할 경우 충돌 발생 가능성 발생.
  • 데이터 관계
    데이터 간의 기본적인 관계가 없으므로, 복잡한 데이터 관계 설정하기 어려움.
  • 데이터 보안
    기본적인 파일 수준의 보안 메커니즘만 제공, 고급 보안 기능이 부족.
  • 데이터 중복
    여러 파일의 동일한 데이터 중복 저장이 가능함. 즉, 데이터 중복 발생!
  • 백업 및 복구
    수동 백업 및 복구 프로세스를 제공하므로, 자동화된 백업 및 복구 기능이 부족.
  • 인덱싱
    사용자 정의의 인덱싱을 지원하지만, 데이터 검색에 있어 비효율적.
  • 데이터 쿼리
    복잡한 데이터 쿼리를 지원하지 않으므로, 데이터 검색 및 분석에 제한.
  • 확장성
    파일 기반 구조로 인해 제한된 확장성.

DB의 장단점

장점

  • 데이터 저장 및 관리
    데이터를 테이블 형태로 저장하고, 구조화된 데이터를 효율적으로 관리 가능.
  • 데이터 검색
    SQL 같은 쿼리 언어를 사용한 데이터 검색 가능, 물리적 및 논리적 접근이 모두 가능. 인덱스를 활용해 효율적인 데이터 검색이 가능.
  • 데이터 무결성
    ACID 속성(원자성, 일관성, 고립성, 지속성)을 통해 데이터 무결성을 보장.
  • 데이터 독립성
    테이블 간의 관계 설정을 통해 데이터 독립성 ⬆︎
  • 데이터 일관성
    트랜잭션을 통해 데이터 일관성을 보장.
  • 동시성 제어
    동시 데이터 액세스를 처리하기 위한 동시성 제어 기법 제공.
  • 데이터 관계
    키를 통해 테이블 간의 관계를 설정 가능.
  • 데이터 보안
    사용자 인증, 접근 제어, 암호화와 같은 고급 보안 기능 제공.
  • 데이터 중복
    정규화를 통해 데이터 중복 감소.
  • 백업 및 복구
    내장된 백업 및 복구 메커니즘을 제공하고, 트랜잭션 로그를 활용해 DB의 백업 및 복구 수행 가능.
  • 인덱싱
    효율적인 데이터 검색을 위해 인덱싱 지원.
  • 데이터 쿼리
    SQL 또는 기타 쿼리 언어를 사용한 복잡한 쿼리 지원.
  • 확장성
    대용량 데이터 세트와 동시 액세스를 지원하는 높은 확장성.

단점

  • 복잡성
    설정 및 관리를 위해 전문적인 지식과 기술이 필요.
  • 비용
    구축하고 유지하는 비용 높음. 특히 상용 DBMS의 경우 라이선스 비용 발생.
  • 자원 소모
    고성능 하드웨어와 많은 자원을 필요로 가능성 발생.
  • 성능 이슈
    대량의 데이터를 처리할 때 성능 이슈가 발생할 수 있으며, 이를 해결하기 위해 정기적인 튜닝과 최적화가 필요.
  • 데이터 마이그레이션
    다른 시스템으로 DB를 마이그레이션할 때 복잡한 절차와 많은 시간 필요.

참고

profile
코뿔소처럼 저돌적으로

0개의 댓글