목록2025/04/01 (4)
엔지니어 블로그

DataWarehouse데이터 웨어하우스는 대표적인 데이터 아키텍처입니다. 조직 내 의사결정을 지원하는 정보 관리 시스템을 말하며, 조직 내 여러 데이터를 공통의 형식으로 한데 모아 관리하고 분석 등을 통해 의사결정에 활용합니다.1989년 빌 인먼이 처음 고안했고, '경영진의 의사결정을 지원하는 주제 지향적이고 통합적이며 비휘발성이고 시간 변형적인 데이터 모임' 이라는 정의를 내렸습니다.데이터 웨어하우스는 MPP 시스템이 등장하면서 눈부신 발전을 거듭합니다. SQL을 지원하지만, MPP의 등장으로 대량의 데이터를 병렬스캔할 수 있고 고성능 집계와 통계 계산을 수행할 수 있습니다. 여기에 더하여 대규모 데이터에 대한 쿼리를 위해 행 기반 데이터베이스에서 열 기반 데이터베이스로 전환 되는 추세입니다.ETL은..
멀티스레딩 환경의 Race Condition과 동기화 방법Race Condition이란?멀티스레딩 환경에서는 Race Condition(경쟁 상태)이 발생할 수 있습니다. 이는 여러 프로세스나 스레드가 동시에 같은 데이터를 조작할 때, 접근 순서나 타이밍에 따라 작업의 결과가 달라질 수 있는 현상을 말합니다.동기화(Synchronization)의 개념동기화는 여러 프로세스나 스레드가 동시에 실행되더라도 공유 데이터의 일관성을 유지하기 위한 작업입니다.임계 영역(Critical Section)데이터 일관성을 보장하기 위해 단 하나의 프로세스 또는 스레드만 진입해 실행 가능한 영역을 임계 영역(Critical Section)이라고 합니다. 임계 영역 진입을 위한 상호 배제(Mutual Exclusion)를 ..
운영체제의 동기화를 공부하며 SpinLock,Mutex,Semaphore를 알게 되었고, python에서는 어떻게 구현되는지 궁금하여 직접 구현해봤습니다. 파이썬의 라이브러리를 활용했고, SpinLock은 라이브러리가 없어 mutex,semaphore만 다룰 예정입니다. 또, 각각의 개념에 대해서는 따로 포스팅을 할 것이기 때문에 본 글에서는 소개하지 않습니다.구현 환경Python 3.9.6구현 내용멀티 스레드 환경에서 숫자를 1씩 더해가는 작업을 통해 스레드 작업을 진행 후 결과 값을 비교총 4개의 스레드에서 10000000 번을 1씩 더하는 코드코드import threading#전역변수shared_counter_without_lock = 0 shared_counter_with_lock = 0#lock..

문제내용주어진 문자열 s를 파티션으로 나누면 되는 문제입니다. 여기서 파티션을 구분짓는 기준은 파티션 내 문자들이 각 파티션에서 최대 한번만 노출되어야합니다.풀이각 문자별로 for문을 이용하여 파티션 끝 값을 파악한 후에 해당 파티션 내 문자의 파티션이 가지고있는 파티션 범위가 포함되는지 확인한 후 길이를 반환하는 식으로 풀이했습니다.class Solution: def partitionLabels(self, s: str) -> list[int]: list = [0] * 26 #1.각각의 글자가 마지막으로 출현한 index를 파악한다. for i,char in enumerate(s): list[ord(char) - ord('a')] = i ..