Big Data

Big Data Big Data는 구조화된 데이터, 반구조화 데이터, 비구조화 데이터를 포함하는 방대한 데이터 집합을 의미한다. 일반적으로 전통적인 데이터 처리 도구로는 관리가 어려운 규모와 복잡성을 가진 데이터를 다룬다. Big Data는 다음의 “3V"로 대표되는 특성을 가지고 있다: Volume (규모): 데이터의 양이 매우 크며, 테라바이트에서 페타바이트, 심지어 엑사바이트 수준으로 확장된다. Variety (다양성): 텍스트, 이미지, 비디오, 센서 데이터 등 다양한 형태의 데이터를 포함한다. Velocity (속도): 실시간으로 생성되고 처리되는 데이터의 속도를 나타낸다. 추가적으로 Veracity(정확성), Value(가치), Variability(변동성) 등의 특성이 Big Data의 정의에 포함되기도 하며, 최근에는 더 많은 ‘V’가 추가되어 변동성(Variability), 시각화(Visualization), 취약성(Vulnerability) 등이 논의되기도 한다. ...

March 1, 2025 · 5 min · Me

SQL (Structured Query Language)

SQL (Structured Query Language) SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하고 조작하기 위한 표준 프로그래밍 언어이다. 1970년대에 IBM에서 개발된 이후, SQL은 데이터 관리의 핵심 도구로 자리 잡았으며, 오늘날 대부분의 데이터베이스 시스템에서 사용되고 있다. SQL은 관계형 데이터베이스 관리의 기초이자 데이터 분석, 웹 개발, 기업 시스템 등 다양한 분야에서 핵심적인 역할을 하는 언어이다. 새로운 기술이 등장하고 데이터 처리 패러다임이 진화함에 따라 SQL도 함께 발전해 왔으며, 앞으로도 계속해서 데이터 관리의 중요한 도구로 남을 것이다. ...

February 27, 2025 · 14 min · Me

Replication

Replication 복제 (Replication) 는 시스템 디자인에서 데이터나 서비스의 동일한 복사본을 여러 위치에 유지하는 기술이다. 주요 목적은 장애 발생 시에도 서비스 가용성을 보장하고, 지리적으로 분산된 사용자에게 낮은 지연 시간을 제공하며, 읽기 성능을 향상시키는 것이다. 복제 방식은 동기식과 비동기식으로 나뉘며, 액티브 - 패시브 (마스터 - 슬레이브), 액티브 - 액티브 (다중 마스터) 등의 아키텍처를 통해 구현된다. 일관성, 가용성, 분할 내성 사이의 트레이드오프를 고려해 적절한 복제 전략을 선택하는 것이 중요하다. 핵심 개념 복제 (Replication) 는 시스템 디자인에서 데이터의 복사본을 여러 노드나 시스템에 분산시켜 저장하는 기술이다. 이를 통해 단일 장애점 (Single Point of Failure) 을 방지하고 시스템 가용성 (Availability) 을 높이는 것이 주요 목적이다. ...

February 18, 2025 · 24 min · Me

Format

Format 데이터 포맷은 정보를 구조화하고, 저장하며, 교환하는 표준화된 방식이다. 데이터 포맷은 IT 시스템 간의 효율적인 통신과 데이터 처리의 기반이 되며, 다양한 응용 프로그램과 시스템에서 데이터를 해석하고 활용하는 방식을 결정한다. 데이터 포맷은 현대 IT 환경에서 정보 교환과 저장의 핵심 요소이다. 적절한 데이터 포맷을 선택하고 효과적으로 구현하는 것은 시스템의 성능, 확장성, 유지보수성에 직접적인 영향을 미친다. 데이터 포맷의 기본 개념 데이터 포맷은 데이터를 표현하는 구조화된 양식으로, 다음과 같은 역할을 한다: 데이터 구조화: 원시 데이터를 의미 있는 형태로 구조화한다. 데이터 교환: 서로 다른 시스템 간에 데이터를 교환할 수 있게 한다. 데이터 저장: 정보를 효율적으로 저장하고 검색할 수 있게 한다. 데이터 표준화: 데이터 처리 방식을 표준화하여 호환성을 보장한다. 주요 데이터 포맷 유형 텍스트 기반 데이터 포맷 JSON (JavaScript Object Notation) JSON은 경량화된 데이터 교환 형식으로, 사람이 읽고 쓰기 쉬우며 기계가 파싱하고 생성하기 쉽다. ...

December 16, 2024 · 16 min · Me

Database per Service

Database per Service Pattern “Database per Service Pattern"은 마이크로서비스 아키텍처에서 중요한 디자인 패턴 중 하나이다. Database per Service Pattern은 각 마이크로서비스가 자체적인 독립된 데이터베이스를 가지는 구조를 말한다. 이는 서비스 간의 느슨한 결합을 촉진하고, 각 서비스의 자율성을 높이는 것을 목표로 한다. 주요 특징: 각 서비스는 자신만의 전용 데이터베이스를 가짐 서비스 간 데이터 접근은 API를 통해서만 가능 각 서비스는 자신의 요구사항에 가장 적합한 데이터베이스 기술을 선택할 수 있음 Database per Service Pattern은 마이크로서비스 아키텍처에서 서비스 간 독립성과 확장성을 높인다. 하지만 이를 효과적으로 구현하기 위해서는 신중한 설계와 다양한 기술적 도전을 해결해야 한다. 각 서비스의 특성과 전체 시스템의 요구사항을 고려하여 이 패턴의 적용 여부를 결정해야 하며, 필요에 따라 다른 패턴들과 조합하여 사용하는 것이 좋다. ...

November 12, 2024 · 2 min · Me

Shared Database

Shared Database 마이크로서비스 아키텍처(MSA)에서 “Shared Database” 패턴은 여러 마이크로서비스가 단일 데이터베이스를 공유하는 접근 방식이다. Shared Database 패턴은 여러 마이크로서비스가 동일한 데이터베이스 인스턴스를 사용하여 데이터를 저장하고 접근하는 방식이다. 각 서비스는 자유롭게 다른 서비스가 소유한 데이터에 접근할 수 있으며, 로컬 ACID 트랜잭션을 사용하여 데이터 일관성을 유지한다. Shared Database 패턴은 마이크로서비스 아키텍처의 일반적인 원칙과는 다소 배치되지만, 특정 상황에서는 유용할 수 있다. 그러나 장기적으로는 서비스 간 결합도를 낮추고 확장성을 높이기 위해 Database per Service 패턴으로의 전환을 고려해야 할 수 있다. ...

November 12, 2024 · 2 min · Me

Airflow

Airflow Apache Airflow는 데이터 파이프라인을 구축, 관리, 모니터링하기 위한 오픈소스 플랫폼이다. Airflow는 복잡한 데이터 파이프라인을 효율적으로 관리할 수 있게 해주는 강력한 도구이다. 데이터 엔지니어링 분야에서 널리 사용되며, 지속적으로 발전하고 있는 플랫폼이다. 기본적인 DAG(Directed Acyclic Graph) 예시: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 from airflow import DAG from airflow.operators.python import PythonOperator from datetime import datetime, timedelta # DAG 기본 설정 default_args = { 'owner': 'data_engineer', 'depends_on_past': False, 'start_date': datetime(2024, 1, 1), 'email': ['alert@example.com'], 'email_on_failure': True, 'retries': 1, 'retry_delay': timedelta(minutes=5) } # DAG 정의 dag = DAG( 'data_processing_pipeline', default_args=default_args, description='데이터 처리 파이프라인', schedule_interval='0 0 * * *' # 매일 자정에 실행 ) # 태스크 함수 정의 def extract_data(**context): # 데이터 추출 로직 raw_data = {'data': 'extracted_value'} context['task_instance'].xcom_push(key='raw_data', value=raw_data) def transform_data(**context): # 데이터 변환 로직 raw_data = context['task_instance'].xcom_pull(key='raw_data') transformed_data = {'data': f"transformed_{raw_data['data']}"} context['task_instance'].xcom_push(key='transformed_data', value=transformed_data) def load_data(**context): # 데이터 적재 로직 transformed_data = context['task_instance'].xcom_pull(key='transformed_data') print(f"Loading data: {transformed_data}") # 태스크 생성 extract_task = PythonOperator( task_id='extract_data', python_callable=extract_data, provide_context=True, dag=dag ) transform_task = PythonOperator( task_id='transform_data', python_callable=transform_data, provide_context=True, dag=dag ) load_task = PythonOperator( task_id='load_data', python_callable=load_data, provide_context=True, dag=dag ) # 태스크 의존성 설정 extract_task >> transform_task >> load_task Airflow의 주요 특징 Python 기반: DAG(Directed Acyclic Graph)를 Python 코드로 정의할 수 있어 유연성과 확장성이 뛰어나다. 스케줄링: 복잡한 워크플로우를 쉽게 스케줄링할 수 있다. 모니터링: 웹 인터페이스를 통해 작업 실행 상태를 실시간으로 모니터링할 수 있다. 확장성: 다양한 외부 시스템과 쉽게 통합할 수 있다. Airflow의 주요 구성 요소 DAG (Directed Acyclic Graph): ...

October 26, 2024 · 4 min · Me

RDBMS

관계형 데이터베이스 관리 시스템 (Relational Database Management System, RDBMS) 관계형 데이터베이스 관리 시스템 (RDBMS) 은 구조화된 데이터를 테이블 형태로 저장하며, SQL 을 통해 데이터 관계를 관리하는 시스템입니다. 2025 년 현재 클라우드 통합과 AI 기반 최적화가 주요 트렌드로 부상했으며, 기업의 디지털 인프라 핵심으로 자리잡았습니다. 1. 주제 분류 적절성 “Computer Science and Engineering > Backend Development > 데이터베이스 “ 분류는 타당합니다. RDBMS 는 백엔드 시스템에서 데이터 저장/검색의 근간을 이루며, 85% 이상의 기업 시스템이 여전히 RDBMS 를 주력으로 활용 중입니다 [4][18]. ...

October 24, 2024 · 52 min · Me

SQL (Structured Query Language)

SQL (Structured Query Language) 관계형 데이터베이스를 관리하고 조작하기 위한 표준화된 프로그래밍 언어. 데이터베이스에서 정보를 저장, 검색, 수정, 삭제하는 데 사용되며, 다양한 데이터베이스 시스템에서 널리 사용되고 있다. SQL(Structured Query Language)은 데이터베이스 관리 및 조작을 위해 사용되는 언어로, 다양한 키워드와 구문이 존재한다. SQL 구문은 기능에 따라 크게 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 데이터 제어 언어(DCL), 그리고 **트랜잭션 제어 언어(TCL)**로 분류된다. 요약 비교표 카테고리 주요 키워드 역할 DDL CREATE, ALTER, DROP 데이터베이스 구조 정의 및 변경 DML SELECT, INSERT, UPDATE, DELETE 데이터 조회 및 조작 DCL GRANT, REVOKE 사용자 권한 관리 TCL COMMIT, ROLLBACK, SAVEPOINT 트랜잭션 관리 및 데이터 무결성 유지 실무 팁 DDL은 데이터베이스 설계 단계에서 주로 사용되며 자주 변경되지 않는다. DML은 애플리케이션 개발 중 가장 많이 사용되며 트랜잭션 처리와 함께 사용해야 안전성을 보장할 수 있다. DCL은 보안이 중요한 환경에서 필수적으로 사용된다. TCL은 대규모 데이터 변경 작업이나 복잡한 트랜잭션 처리 시 유용하게 활용된다. 데이터 정의 언어(Data Definition Language, DDL) DDL은 데이터베이스의 구조를 정의하거나 변경하는 데 사용된다. 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 생성, 수정, 삭제하는 역할을 한다. ...

October 24, 2024 · 11 min · Me

Time-Series

Time-Series 시계열 데이터베이스(Time Series Database, TSDB)는 NoSQL 데이터베이스의 한 종류로, 시간에 따라 변화하는 데이터를 효율적으로 저장하고 관리하기 위해 특별히 설계된 데이터베이스 시스템이다. 시계열 데이터베이스는 시간에 따라 변화하는 대량의 데이터를 효율적으로 저장하고 분석하는 데 특화된 시스템이다. IoT, 금융, 모니터링 등 다양한 분야에서 활용되고 있으며, 빅데이터와 실시간 분석의 중요성이 증가함에 따라 그 활용도가 더욱 높아지고 있다. 각 시스템의 특성과 프로젝트의 요구사항을 고려하여 적절한 시계열 데이터베이스를 선택하는 것이 중요하다. 시계열 데이터베이스의 정의 시계열 데이터베이스는 ‘하나 이상의 시간’과 ‘하나 이상의 값’ 쌍을 통해 시계열을 저장하고 서비스하는데 최적화된 소프트웨어 시스템이다. 여기서 시계열은 일정 시간 간격으로 배치된 데이터들의 수열을 의미한다. ...

October 23, 2024 · 2 min · Me