본문 바로가기

Study9

[견고한 데이터엔지니어링] - 2장 데이터 엔지니어링 수명 주기 1. 데이터 엔지니어링 수명주기데이터 엔지니어링 수명 주기수명 주기 단계들과 드러나지 않는 요소로 나뉨 1-1 데이터 수명주기 VS 데이터 엔지니어링 수명 주기데이터 엔지니어링 수명 주기는 데이터 수명 주기의 하위집합데이터 수명 주기: 데이터 전체의 수명을 포괄데이터 엔지니어링 수명 주기: 데이터 엔지니어가 제어하는 단계에 초점1-2 데이터 생성원천 시스템(source system)은 데이터 엔지니어링 수명 주기에 사용하는 데이터 원본데이터 소비에 사용되지만 시스템 자체를 소유하거나 제어하진 않음DE는 원천 시스템에 대해 실무적 이해가 필요원천으로부터 데이터 생성하는 방법을 이해상호 작용하는 원천 시스템의 한계를 이해데이터 파이프라인 변경 사항에 대해 원천 시스템 소유자와 소통 라인 유지 필요원천 시스템.. 2026. 1. 28.
[데이터중심 애플리케이션 설계] - 6장 파티셔닝 06장: 파티셔닝1. 파티셔닝과 복제2. 키-값 데이터 파티셔닝2.1 키 범위 기준 파티셔닝2.2 키의 해시값 기준 파티셔닝2.3 쏠린 작업부하와 핫스팟 완화3. 파티셔닝과 보조 색인3.1 문서 기준 보조 색인 파티셔닝3.2 용어 기준 보조 색인 파티셔닝4. 파티션 재균형화4.1 재균형화 전략4.2 운영: 자동 재균형화와 수동 재균형화5. 요청 라우팅5.1 병렬 질의 실행 6장 파티셔닝샤딩이란 데이터셋이 너무 크거나 질의 처리량이 매우 높다면 복제만으로 부족함데이터를 파티션으로 쪼갤 필요가 있음 파티션이라는 용어로 가장 많이 사용함다른용어로 사용하는 경우는1. 샤드(shard): 몽고DB, 엘라스틱 서치, 솔라클라우드2. 리전(region): HBase3. 태블릿(tablet): 빅테이블4. 브이노드(v.. 2026. 1. 21.
[데이터중심 애플리케이션 설계] - 5장 복제 복제: 네트워크로 연결된 여러장비에 동일한 데이터의 복사본을 유지한다는 의미노드 간 변경을 복제하기 위한 세 가지 인기 있는 알고리즘(단일 리더, 다중 리더, 리더없는 복제)가 있으며 이번 장에서 살펴볼 것임. 데이터베이스의 복사본을 저장하는 각 노드를 복제 서버라고 함. 그중 하나를 리더(마스터 or 프라이머리), 나머지를 팔로워(복제 서버, 슬레이브) 라고 함.클라이언트는 리더에 쓰기 요청을 하고 리더는 로컬 저장소에 새로운 데이터를 기록. 리더는 복제로그나 변경 스트림의 형태로 팔로워에게 변경 내용을 전송, 팔로워는 복사본을 갱신한다. 읽기는 팔로워에게 질의 하지만 쓰기는 리더에게만 허용됨. 동기식 대 비동기식 복제그림 5-2. 한 팔로워는 동기식. 다른 팔로워는 비동기식인 리더 기반 복제동기식 복.. 2026. 1. 21.
[데이터중심 애플리케이션 설계] - 4장 부호화와 발전 부호화와 발전 Encoding & Evolution여러가지 이유로 Application은 변하게 된다. 그리고. Application 기능을 변경하기 위해서는 저장하는 데이터도 변경해야 한다. 서버,클라이언트 측 어플리케이션이 계속 유동적으로 변하기 때문에 예전 버전 코드와 새로운 버전 코드,이전의 데이터 타입과 새로운 데이터 타입이 모든 시스템에서 공존할 수 있기 때문에 상/하위 호환성을 고려해야 한다. 상/하위 호환성에 대해 직관적으로 이해할 수 있는 그림출저:https://stevenheidel.medium.com/backward-vs-forward-compatibility-9c03c3db15c9 하위 호환성 Backward CompatibilityBackward compatibility means.. 2026. 1. 19.
[LEETCODE 150] - 121 Best Time to Buy and Sell Stock II LeetCode의 122번 문제인 "Best Time to Buy and Sell Stock II" 문제이다 이 문제도 이전 121번문제와 비슷하게 그리디 알고리즘을 통해서 푸는 방식이다.알고리즘을 풀면서 가장 중요한게 " 가격이 오르는 구간의 이익을 전부 더하면, 여러번 사고 팔아 얻을수 있는 최대 이익과 같아진다" 라는 개념을 알고있어야 한다. 정답 코드(Python)class Solution: def maxProfit(self, prices: List[int]) -> int: profit = 0 for i in range(1, len(prices)): if prices[i] > prices[i - 1]: profit += (prices[i] - pr.. 2026. 1. 18.
[데이터중심 애플리케이션 설계] - 3장 저장소와 검색 3장 핵심 내용저장소 엔진 개념로그 구조 계열 저장소 엔진 & 페이지 지향 계열 저장소 엔진데이터 베이스를 강력하게 만드는 데이터 구조많은 데이터베이스는 내부적으로 추가 전용 데이터 파일인 로그를 사용한다.처음부터 끝까지 스캔하는 방식을 비효율적 O(n) -> 특정 키의 값을 효율적으로 찾기 위한 색인 필요 색인:데이터 위치 효율적 탐색 목적의 부가 메타 데이터. 질의 성능 개선 목적으로, 쓰기 성능에 부정적 영향해시 색인해시 맵으로 구현eg) 비트캐스트 엔진 : 인메모리 해시 맵 사용. 각 키의 값이 자주 갱신되는 상황에 적합. Riak의 기본 저장소 엔진.특정 크기 세그먼트 -> 컴팩션 & 머지를 통해 메모리 효율적 관리컴팩션: 로그 내 중복 키를 버리고 각 키의 최신 갱신 값만 유지컴팩션 & 세.. 2026. 1. 18.