Data/Data Access

Data Store

is..cy 2025. 2. 14. 21:31

 

Data Store

데이터를 저장, 관리, 검색할 수 있는 모든 저장소 시스템을 의미하며, 데이터의 형식과 구조에 관계없이 데이터를 지속적으로 유지할 수 있는 공간을 제공한다. (파일, 테이블, 문서, 객체 등 다양한 형태로 데이터를 저장할 수 있는 모든 기술을 포괄)

 

 

 

 

 

File System

  • 데이터를 파일 형식으로 저장하고 디렉터리 구조로 관리
  • 파일은 텍스트, 이미지, 비디오 등 다양한 형식으로 저장가능
  • ex. NTFS, FAT32, ext4 등 운영 체제에서 사용되는 파일 시스템.

 

 

Database System

  • 데이터를 구조화된 방식으로 테이블, 행, 열의 형태로 저장하고 관리하는 시스템
  • 데이터 검색, 삽입, 수정, 삭제 등을 효율적으로 처리
  • ex. MySQL, PostgreSQL, MongoDB 등 

 

 

 


 

ElasticSearch

Elasticsearch는 분산형 검색 및 분석 엔진으로, 대규모 데이터를 실시간으로 검색하고 분석하는 데 사용

 

 

  • 데이터 저장 형식: JSON 문서 기반.
  • 주요 용도: 전문 텍스트 검색, 로그 및 모니터링 데이터 분석, 실시간 데이터 시각화 (예: Kibana와 함께).
  • 데이터 관리 방식: 데이터를 Index에 저장하며, 각 인덱스는 Document로 구성
  • 검색 기능: 전문 검색, 텍스트 매칭, 동의어 처리, 부분 일치 등 강력한 검색 기능을 제공
    • 실시간 데이터 검색과 집계
    • 확장성 높은 분산형 아키텍처
    • RESTful API로 쉽게 통합 가능

 

 

RDBMS (Relational Database Management System)

RDBMS는 데이터를 테이블 형태로 구성하고, 관계를 통해 데이터를 효율적으로 관리하며 SQL을 사용해 데이터 저장, 검색, 수정, 삭제를 지원하는 데이터베이스 관리 시스템

 

 

  • 데이터 저장 형식: 테이블(행과 열) 기반
  • 데이터 간 관계: 외래 키(Foreign Key)를 통해 테이블 간 관계를 설정
  • 데이터 무결성: 고정된 스키마를 따르며, 데이터 무결성과 일관성을 보장하기 위해 ACID (Atomicity, Consistency, Isolation, Durability) 속성을 지원
  • 쿼리 언어: SQL(Structured Query Language)을 사용하여 데이터 검색, 삽입, 수정, 삭제
  • 주요 DBMS: MySQL, PostgreSQL, Oracle DB, Microsoft SQL Server.
    • 복잡한 데이터 관계를 효율적으로 관리
    • 강력한 트랜잭션 관리 기능
    • 정형 데이터 처리에 적합

 

 

NoSQL (Not Only SQL)

NoSQL은 비정형 또는 반정형 데이터를 유연하게 관리할 수 있는 데이터베이스 시스템으로, 다양한 데이터 모델을 지원

 

 

  • 데이터 저장 형식: 문서, 키-값, 컬럼, 그래프 등 다양한 형식으로 데이터를 저장
  • 데이터 모델
    • 문서형(Document): MongoDB (JSON과 유사한 문서 형태).
    • 키-값(Key-Value): Redis (키와 값 쌍으로 저장).
    • 컬럼(Column-Family): Cassandra (컬럼 기반 스토리지).
    • 그래프(Graph): Neo4j (노드와 관계를 저장).
  • 스키마 유연성: RDBMS와 달리, 고정된 스키마가 필요하지 않으며 데이터 구조 변경이 쉬움
  • 확장성: 수평적 확장이 쉬워서 빅데이터 처리에 적합
    • 고속 읽기/쓰기 처리
    • 유연한 데이터 모델
    • 클라우드 및 대규모 데이터 처리에 적합

 

 


 

Elasticsearch / RDBMS / NoSQL 비교

 

  Elasticsearch RDBMS  NoSQL
데이터 모델 문서 지향
(Document-oriented)
테이블 지향
(Table-oriented)
키-값(Key-Value), 문서(Document), 컬럼(Column-Family), 그래프(Graph) 모델
구조 JSON 형식의 문서 행과 열로 구성된 테이블 모델에 따라 다양
(JSON, BSON, key-value pairs 등)
스키마 동적 스키마
(Dynamic schema)
고정 스키마
(Fixed schema)
동적 스키마
(Dynamic schema)
인덱싱 자동 인덱싱 명시적 인덱싱 일부 NoSQL 시스템에서 자동 인덱싱,
일부는 명시적 인덱싱 필요
저장소 분산 저장 (shard와 replica) 보통 단일 서버, 클러스터링 및 복제 지원 분산 저장 (shard와 replica),
일부는 단일 서버
쿼리 언어 Elasticsearch DSL
(JSON 기반 쿼리)
SQL
(Structured Query Language)
NoSQL 시스템에 따라 다름
(CQL, N1QL, AQL 등)
주요 기능 전문 검색 (Full-text search), 실시간 분석 복잡한 조인 (Join),
트랜잭션 관리
높은 확장성,
다양한 데이터 모델 지원,
유연한 스키마
사용 사례 로그 분석
실시간 검색
빅데이터 분석
추천 시스템
트랜잭션 처리
비즈니스 애플리케이션
금융 시스템
전자 상거래
소셜 네트워크
빅데이터 분석
실시간 웹 애플리케이션
IoT 데이터
성능 대규모 데이터의 빠른 검색과 분석 작은 규모 데이터와 복잡한 트랜잭션 처리에 효율적 높은 쓰기 및 읽기 처리량,
대규모 데이터 처리 가능
확장성 수평적 확장성
(노드 추가로 클러스터 확장)
수직적 확장성
(일부 분산 클러스터링 지원)
수평적 확장성
(노드 추가로 클러스터 확장 가능)
데이터 일관성 최종 일관성
(Eventual consistency)
즉각적 일관성
(Immediate consistency)
시스템에 따라 다름
(일관성, 가용성, 파티션 허용 중에서 선택)
데이터 무결성 ACID 트랜잭션 미지원 ACID 트랜잭션 지원 일부 시스템에서 ACID 지원,
보통 BASE (Basically Available, Soft state, Eventual consistency) 모델 따름

 

 

 


 

ACID의 4가지 속성

 

Atomicity (원자성)

  • 트랜잭션 내 모든 작업이 하나의 단위로 실행되며, 모두 성공하거나 모두 실패해야 한다.
  • 실패 시, 트랜잭션이 시작되기 전 상태로 롤백되어야 한다.
  • ex. 은행 계좌 이체 시, 출금과 입금이 모두 이루어지거나, 둘 다 취소되어야 한다.

 

Consistency (일관성)

  • 트랜잭션이 완료되면, 데이터베이스는 일관된 상태를 유지해야 한다
  • 데이터 무결성 규칙(예: 제약 조건)이 항상 유지된다
  • ex. 은행 시스템에서 모든 계좌의 총 합계가 변하지 않는 것

 

Isolation (격리성)

  • 동시에 여러 트랜잭션이 실행될 때, 각 트랜잭션은 서로 독립적으로 실행된 것처럼 보여야 한다
  • 하나의 트랜잭션이 완료되기 전, 다른 트랜잭션은 그 상태를 볼 수 없어야 한다
  • ex. 동시에 두 사용자가 같은 데이터를 업데이트할 때, 충돌을 방지

 

Durability (내구성)

  • 트랜잭션이 성공적으로 완료되면, 시스템 오류(ex. 정전, 충돌)가 발생해도 데이터가 영구적으로 저장된다.
  • ex. 트랜잭션 성공 후, 하드웨어 장애가 발생하더라도 데이터는 복구