일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 밑바닥부터 만드는 운영체제
- 텀블링 윈도우
- vm번역기
- 밑바닥부터 만드는 컴퓨팅 시스템
- 시간 윈도우
- InnoDB
- 스트리밍 아키텍쳐
- 구문 분석
- 안전하게 테이블 변경
- 필수 스크립트
- 핵심 데이터 모델링
- vm머신
- ec2
- s3
- 핵기계어
- 마운트
- jack 문법
- 실시간 스트리밍 데이터
- 도커
- 컴퓨터 아키텍쳐
- dff
- 스트리밍 데이터 아키텍쳐
- 운용 시 유용한 쿼리
- performance스키마
- Terraform
- 메모리 세그먼트
- 리눅스
- MySQL
- 스택머신
- nandtotetris
- Today
- Total
목록분류 전체보기 (97)
이것이 점프 투 공작소

스트리밍 시스템에서 모은 많은 데이터들은 시스템 안에서 효율적으로 분석되고 집계되어야합니다.아무래도 실시간이고 방대한 데이터를 대상으로 하는 만큼 '확률적인 알고리즘'이 많이 사용됩니다.또 대량의 데이터에 대해서 랜덤 추출, 카더널리티, 빈도, 이전 유입 여부를 확인하는 4개의 알고리즘들에 알아보겠습니다.무작위 샘플 데이터 추출 - 레저부아 샘플링(Reservior Sampling)스트림 데이터에서 무작위로 샘플 데이터 추출이 필요할 때가 있습니다.만약 시스템에서 분당 1,000만 건의 로그가 들어온다고 했을 때, 우리는 모든 로그를 다 메모리에 저장해서 빠르게 분석할수는 없습니다.이런 상황에서는 랜덤 표본 데이터를 추출해서 원하는 비즈니스 결과를 만들 수 있습니다. 레저부아 샘플링 알고리즘은 스트림 데..

실시간 데이터 처리를 공부하다가 윈도우 기법에 대해서 보게되었습니다,슬라이딩윈도우는 네트워크나 알고리즘을 공부하다 볼 수 있기에, 비교적 익숙했지만 텀블링 윈도우는 잘 몰랐습니다.스트림 시스템에서 두 기법에 어떤 차이가 있는지 또 어떻게 쓰이는지 한번 정리해보려 합니다!타임 스큐 (Time skew)프로그램을 만들고 운영하다 보면 시간을 다루는일이 참 많습니다.시스템에 진입한 시점을 말하는 스트림 시간(Stream time) 실제 이벤트가 발생한 이벤트 시간(Event time) 크게 두가지로 볼 수 있을 것 같습니다. 예를들어 스마트 워치에서 피트니스 데이터를 수집 할 때 스트리밍 시스템으로 데이터가 전송된다고 합시다.여기서 스트림 시간은 피트니스 데이터가 시스템의 어떤 단계에 들어온 시점이고, 이벤트..

이전 포스팅에 이어서 스트리밍 시스템에서 사용하는 패턴의 아키텍쳐를 공부해보고자 합니다.실시간 데이터 파이프라인 아키텍쳐를 보고 공부한 내용을 다룹니다!스트리밍 데이터 아키텍쳐스트리밍 아키텍쳐는 크게 6가지 단계로 나눌 수 있습니다.본 포스팅에서는 수집, 접근 단계에 대해 정리해 보려합니다.수집열심히 수집하고 분석한 데이터는 비즈니스에 맞게 적절하게 저장되어야합니다.장기 스토리지(Long-term storage)에 저장스트리밍 시스템에서 처리한 데이터를 S3, HDFS 또는 RDBMS와 같은 장기 저장소에 저장하는 경우가 있습니다.이는 주로 배치 또는 오프라인 접근을 위한 저장입니다. 분석단계에서 매시지를 보낼때 즉시 저장하거나, 배치로 장기 저장소에 저장할수도 있지만,배치로더를 통해 저장할수도 있습니다..

일반적인 스트리밍 시스템에서 사용하는 패턴의 아키텍쳐를 공부해보고자 합니다.실시간 데이터 파이프라인 아키텍쳐를 보고 공부한 내용을 다룹니다!스트리밍 데이터 아키텍쳐스트리밍 아키텍쳐는 크게 6가지 단계로 나눌 수 있습니다.수집 단계클라이언트에서 생성되는 데이터가 시스템에 들어오는 스트리밍 시스템의 첫 단계입니다.수집을 위한 몇가지 패턴들이 존재하며 이중 하나를 선택하여 사용합니다.요청/응답 패턴발행/구독 패턴단방향 패턴요청/확인응답 패턴스트림 패턴요청/응답 패턴 (Request/response pattern)클라이언트가 서버로 요청을 보내면 서버가 응답하는 웹 브라우저에서 자주 사용되는 일반적인 패턴입니다.반비동기(Half-async), 비동기(Full-async) 방식으로 요청/응답 패턴을 구현할 수 있..

이제부터 읽었던 책들에 대해서 블로그에 간단히 개인적인 후기를 남겨놓으려고 합니다.저의 첫 독서 후기는 유동오님의 책 '핵심 데이터 모델링' 후기입니다! 이 책을 선택한 이유?처음 회사에서 일을 하면서, 우리 시스템의 데이터 모델들이 과연 잘 정리되어 있는 걸까? 라는 의문이 들 때가 종종 있었습니다.하지만 그럴 때마다 저는 그저 "잘 되어 있겠지", "원래 이렇게 쓰는 거겠지.." 하면서 명확한 기준이 없는 상태로 사내 데이터 모델링들이막연하게 정답이라고 생각하고 받아들였습니다. 데이터의 효율적인 적재와 활용은 개발자의 중요한 업무 중 하나라고 생각했지만,부끄럽게도 저 스스로 데이터 모델링에 대해 본격적으로 공부하지 않았던 제 모습을 반성하기 위한 첫 시작으로 이 책을 결정했습니다. (쓰다보니까 생각..

RedBlackTree란?이진 탐색 트리를 사용하다 보면, 데이터들이 불균형하게 생성되는 경우가 있습니다.불균형한 상태의 이진 트리는 검색효율을 심각하게 저하시키는 원인이 됩니다.Red Black Tree는 이진트리에 몇가지 규칙들을 더 사용하여 데이터를 균형있게 쌓음으로서, 트리의 높이가 최소한으로 유지되게끔 하여검색효율을 보장합니다. 균형잡힌 구조 덕분에 Red Black Tree는 시간복잡도 O(LogN)을 유지합니다.RedBlackTree의 특징Red Black Tree의 특징은 아래와 같습니다.모든 노드는 빨간색이거나 검은색이다.Root노드는 검은색이다Leaf노드는 검은색이다.빨간색 노드의 자식들은 모두 검은색이다. (검은색 노드는 빨간색, 검은색 노드 모두 자식으로 가질 수 있다.)Root노드..

이 책의 마지막 장인 운영체제입니다.OS는 컴퓨터에서 실행되는 모든 프로그램을 지원해야하기에 효율이 매우 좋아야합니다.OS의 시간 및 공간 효율성이 높을수록 응용프로그램의 성능 또한 올라갑니다.운영체제는 보통 고수준언어로 작성되어 바이너리 형식으로 컴파일됩니다.let n = Keyboard.readInt("Enter a number : ") 위와 같은 명령어가 실행되면, 프롬프트에 Enter a number: 라는 문자열이 표시됩니다.그러려면 String 객체가 생성되고 각 글자를 char 값 배열로 초기화합니다.이후 문자열을 스크린에 한 번에 하나씩 렌더링하며, 다음 문자가 물리적으로 표시되어야하는 커서 위치를 업데이트합니다.또한 사용자가 키보드의 특정키를 누를때까지 기다리는 루프 또한 준비되어야하고 ..

컴파일러고수준 프로그램을 vm코드로 변경해주는 일종의 번역기입니다.고수준 언어는 객체와 배열등 다양한 추상적 개념들이 있지만 컴파일러의 vm코드에서는 스택과 가상 세그먼트만 사용 가능합니다.잭 컴파일러는 jack 코드를 vm 코드로 변환합니다. 각각의 파일들은 각각의 vm코드로 변환되며 (filename.jack -> fileName.vm)서브루틴(생성자, 메서드 등)들은 fileName.subName으로 변환됩니다. 앞장에서 다뤘던 요소 Tokenizer를 포함하여 총 5개의 모듈이 만들어져야 합니다. 1. JackCompiler입력된 jack 파일을 vm파일로 변환하는 핵심 모듈 , JackToknizer를 호출해여 입력을 전달하고 vm파일을 반환합니다.이후 SymbolTable, VMWriter를 ..

컴파일 과정은 크게 둘로 나뉩니다.먼저 프로그램의 구문(syntax)를 이해하고, 그 구문을 통해 프로그램의 의미(semantics)를 찾습니다.예를 들어 프로그램 코드를 분석(parsing)해서 배열을 선언하거나 객체를 조작하려고 한다는 사실을 파악했다고 하면,그 언어의 구문을 이용해 코드를 다시 표현 할 수 있습니다. 이를 구문 분석(syntac analysis)라고 부릅니다.구문 분석기는 tokenizer와 parser로 나뉩니다.두번째 과정인 코드 생성(code generation)은 다음장에서 다룹니다. 핵 플랫폼에서는 구문 분석기가 소스코드의 구문 구조를 반영하는 xml 마크업 파일을 출력하도록 하는 것 입니다.구문 분석기에서 만든 xml 파일을 code generator가 사용합니다.Toke..

이제는 핵 플랫폼의 고수준 언어 Jack이 드디어 나타났습니다.기본적으로 java, c++같은 객체기반 언어라고 합니다.상속은 지원하지 않지만, 여러가지 응용프로그램을 만들수 있다고합니다. 잭은 여기 플랫폼에서만 사용되는 언어이기에 잭을 학습한다기 보다는'컴파일러와 os를 개발할 때 지지대 역할을 하는 언어'정도로만 생각하고 학습하려합니다.Hello World컴파일된 잭 프로그램이 실행될 때는 항상 Main.main함수에서 실행됩니다.잭은 표준 클래스 라이브러기가 존재하며 이를 잭 OS라이브러리라고 합니다.절차적 프로그래밍과 배열 처리변수 할당 및 반복을 처리하는 전형적인 명령문들입니다.keyboard와 Output은 os라이브러리의 클래스입니다.잭에서 Array객체는 타입과 상관없이 모든 값들을 저장 ..