본문 바로가기

Publivate

(214)
일괄 처리 [데이터 중심 애플리케이션 설계 10장] 데이터 처리 방식 서비스(온라인 시스템): 클라이언트가 요청이 올 때까지 기다리는 방식 일괄 처리 시스템(오프라인 시스템): 큰 입력을 받아 처리하는 방식으로 사용자가 대기 하지 않고 주기적으로 실행됨 스트림 처리 시스템(준실시간 시스템): 온라인과 오프라인 사이로 요청에 대해 응답이 아닌 입력 데이터를 소비하여 출력 데이터 생산 유닉스 도구 일괄 처리 일반적인 프로그래밍 언어에선 메모리에 데이터를 올리고 작업을 하지만, 메모리 보다 큰 데이터셋을 자동으로 디스크로 보내고 자동으로 여러 CPU코어에서 병렬로 정렬한다. (메모리 부족 없이 큰 데이터셋을 처리 가능) 각 프로그램이 하나의 일만 하게 한다. 모든 출력이 다른 프로그램의 입력이 되게 한다. 맵리듀스와 분산 파일 시스템 맵리듀스: 맵퍼 + 리듀서..
일관성과 합의 [데이터 중심 애플리케이션 설계 9장] 선형성: 시스템에 데이터 복사본이 하나만 있고 모든 연산은 원자적인 것처럼 보이게 만드는 것 (최신성 보장) 유용한 예 잠금과 리더 선출 제약 조건과 유일성 보장 채널 간 타이밍 의존성 선형성과 가용성은 트레이드 오프가 있다. 선형성을 보장하려 하면 네트워크 문제 등에 약해지게 된다. CAP 정리가 이런 개념을 설명한다. 심지어 RAM조차도 선형적이지 않음 순서화 보장 인과성을 보존하는 데 도움을 준다. 인과성은 이벤트에 순서를 부과한다. 선형성: 전체 순서를 정할 수 있다. 인과성: 인과적인 관계가 있을 경우에만 순서를 비교할 수 있다. 선형성은 인과성을 내포한다. 일련번호나 타임스탬프를 써서 이벤트의 순서 정하는 식으로 구현된다. 노드별로 독립적인 일련번호 집합 생성 (홀짝) 각 연산에 물리적 시계에..
분산 시스템의 골칫거리 [데이터 중심 애플리케이션 설계 8장] 결함과 부분 장애 단일 컴퓨터에서의 소프트웨어는 항상 같은 결과를 내는 결정적이다. 완전하게 동작하거나 전체 장애가 발생한다. 분산 시스템에서는 부분 장애가 발생한다. (비결정적) 신뢰성 없는 구성 요소를 사용해 신뢰성 있는 시스템 구성한다. 오류 수정 코드 (error-correcting code): 데이터를 정확하게 전송하게 해줌 IP(Internet protocol)은 신뢰성이 없으나 TCP에서 신뢰성을 제공한다. 결함 감지 네트워크에선 몇 번 시도해보고 타임아웃이 발생하면 결함으로 감지 동기 네트워크 대 비동기 네트워크 전화는 동기 네트워크로 통화마다 회선을 만들어서 할당한다. 지연 시간 최대치가 보장이 돼서 제한있는 지연이라 한다. TCP는 비동기 네트워크로 패킷 교환 네트워크이다. 데이터 전송..
트랜잭션 [데이터 중심 애플리케이션 설계 7장] 애매모호한 트랜잭션의 개념 ACID A(원자성)은 어보트(abortability)가 더 어울린다. C(일관성)는 데이터베이스에서 달성할 수 있는 게 아니고 애플리케이션 속성이다. C는 약어를 만들기 위해서 사용됐고 중요하게 생각되지 않았다고 한다. I(격리성)은 성능 저하를 초래해서 아예 구현하지 않거나 완화된 것을 사용한다. D(지속성)은 신뢰성을 토대로 완벽한 지속성은 불가하다. 트랜잭션 격리: 동시성 문제를 감추기 위한 것으로 동시성이 없는 것처럼 한다. 대표적으로 직렬성 격리인데 현실적으로 비용이 크다. 커밋 후 읽기: 읽을 때 커밋된 데이터만 읽고, 쓸 때는 커밋된 데이터만 덮어쓴다. (더티 읽기, 더티 쓰기 방지) 더티 읽기: 커밋이나 어보트되지 않은 데이터를 읽는 것 로우 수준 잠금: 해당 ..
[U+] IPTV LG tv 공지사항 끄기 티비를 보다 보면 상단에 공지사항이 나오는데 너무 자주 나오고 아무 상관 없는 지역의 공지도 나와서 매우 불편하다. 일단 엘지 유플 티비에서 확인한 방법이다. 1. 홈 메뉴에서 TV앱스 선택2. 맨 아래에서 모든 앱 선택3. 앱 선택4. 모든 앱 보기5. 시스템 앱 보기6. 공지사항 선택(사진 못 찍음) 강제종료여기까지 하면 안 나오지만, 공지사항을 다시 켜면 또 반복해야 한다고 한다. 그래서 권한을 없애보려함 7. 뒤로 돌아가서 특수 앱 엑세스 선택8. 다른 앱 위에 표시9. 공지사항 허용하지 않음 선택좀 지켜봐야 하겠지만 일단은 안 뜨는 것 같다. #공지 #종료 #광고 #삭제 #끄기 #티비 #텔레비전 #tv #엘지 #유플
파티셔닝 [데이터 중심 애플리케이션 설계 6장] 파티셔닝 확장성 (복제와 비슷) 키-값 데이터 파티셔닝 키 범위 기준 파티셔닝: 특정 알파벳끼리 한 파티션에 넣는 형식 범위 스캔에 유리 특정 기준으로 검색 시, 핫스팟 유발 키의 해시값 기준 파티셔닝: 키를 해시 함수로 변환하여 분산시키는 파티셔닝 파티션끼리 균일하게 분산시키는 데 좋다. 범위 질의를 효과적으로 수행할 수 없다. 카산드라에서는 키의 첫부분만 해싱하고 나머지 컬럼은 SS테이블로 색인을 사용하여 첫번째 컬럼만 고정하면 나머지 컬럼에는 범위 스캔을 효율적으로 하게 한다. 핫스팟 완화: 보통 하나의 키에 데이터가 많은 경우 애플리케이션에서 해결: 키에 임의의 숫자등을 붙여서 분산 시킨다. → 읽기에 오버헤드가 생겨 일부 키에만 적용하는 게 좋다. 파티셔닝과 보조 색인 문서 기반 보조 색인 파티..
복제 [데이터 중심 애플리케이션 설계 5장] 동기식과 비동기식 동기식: 안정성이 높으니 느림 비동기식: 내구성이 약하기 때문에 나빠보이지만 분산을 위해선 어쩔 수 없는 선택 장애 복구 리더가 장애인 지 판단 → 새로운 리더 선출 → 새로운 리더 사용 리더가 변경되면서 그 동안의 쓰기를 수신 하지 못 하는 문제 발생 스플릿 브레인: 리더가 서로 자신이 리더인 줄 아는 상황 복제 로그 구문 기반 복제: 실제 사용된 insert, update, delete 등 그대로 사용 간편하지만 비결정적인 함수 문제나 성능 등에 영향이 있음 쓰기 전 로그(WAL) 저수준의 데이터를 기술함으로 엔진이 밀접하게 엮여 버전 등에 의존성이 높음 논리적 (로우 기반) 로그 엔진과의 분리를 위해 다른 로그 형식 사용 (RDB) 삽입된 로우는 전체, 삭제된 로우는 식별값, 갱신..
부호화와 발전 [데이터 중심 애플리케이션 설계 4장] 데이터 부호화 형식 부호화(직렬화, 마샬링): 인메모리 표현을 바이트열로 변환하는 작업 복호화(역직렬화, 파싱, 언마샬링): 바이트열을 표현으로 변환하는 작업 언어별 형식: 언어에서 제공하는 만큼 편리하지만, 특정 언어에 적합한 형식으로 다른 언어나 상위/하위 호환 등에 문제가 발생한다. JSON, XML: 수를 표현할 때 애매한 문제가 있다, 유니코드는 잘 지원하나 바이너리는 잘 지원하지 않아서 base64를 사용하게 된다. 이진부호화: json의 경우 여러가지 이진 부호화가 있었지만 널리 채택되진 못 했고, 대부분 성능상의 큰 이점은 없음 스리프트(Thrift)와 프로토콜 버퍼(Protocol Buffers) 같은 원리를 기반으로 함. 이름 대신 필드 태그를 사용함 required의 경우 이진 데이터..