항상 주변을 단정히 정돈하는 사람은 단지 찾기를 너무 귀찮아하는 사람이다. - 독일 속담 가장 기본적인 수준에서 데이터베이스는 두 가지 작업을 수행한다. 어떤 데이터를 받으면 데이터를 저장하고 나중에 그 데이터를 요청하면 다시 데이터를 제공한다. 2장에서 애플리케이션 개발자가 데이터베이스에 데이터를 제공하는 형식을 설명했다. 그리고 나중에 다시 요청할 수 있는 메커니즘인 데이터 모델과 질의 언어도 살펴봤다. 이번 장에서는 같은 내용을 데이터베이스 관점에서 살펴본다. 즉, 데이터베이스가 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법을 설명하겠다. 데이터베이스가 저장과 검색을 내부적으로 처리하는 방법을 애플리케이션 개발자가 주의해야 하는 이유는 무엇일까? 대개 애플리케이션 개발자가 ..
맵리듀스 질의 맵리듀스(MapReduce)는 많은 컴퓨터에서 대량의 데이터를 처리하기 위한 프로그래밍 모델로, 구글에 의해 널리 알려졌다. 몽고DB와 카우치DB를 포함한 일부 NoSQL 데이터 저장소는 제한 된 형태의 맵리듀스를 지원한다. 이 메커니즘은 많은 문서를 대상으로 읽기 전용(read-only) 질의를 수행할 때 사용한다. 전반적인 맵리듀스는 10장에서 자세히 설명하고 지금은 몽고DB의 모델사용에 대해 간단히 살펴본다. 맵리듀스는 선언형 질의 언어도 완전한 명령형 질의 API도 아닌 그 중간 정도에 있다. 질의 로직 처리 프레임워크가 반복적으로 호출하는 조각 코드로 표현한다. 맵리듀스는 여러 함수형 프로그래밍 언어에 있는 map(collect라고도 함)과 reduce(fold나 inject라고도..
내 언어의 한계는 내 세계의 한계를 의미한다. - 루트비히 비트겐슈타인 데이터 모델은 아마도 소프트웨어 개발에서 제일 중요한 부분일 것이다. 왜냐하면 데이터 모델은 소프트웨어가 어떻게 작성됐는지 뿐만 아니라 해결하려는 문제를 어떻게 생각해야 하는지에 대해서도 지대한 영향을 미치기 때문이다. 대부분의 애플리케이션은 하나의 데이터 모델을 다른 데이터 모델 위에 계층을 둬서 만든다. 각 계층의 핵심적인 문제는 다음 하위 계층 관점에서 데이터 모델을 표현하는 방법이다. 예를 들어보자. - 애플리케이션 개발자는 현실(사람, 조직, 상품, 행동, 자금 흐름, 센서 등)을 보고 객체나 데이터 구조, 그리고 이러한 데이터 구조를 다루는 API를 모델링한다. 이런 구조는 보통 애플리케이션에 특화돼 있다. - 데이터 구조..
오늘날 많은 애플리케이션은 계산 중심(compute-intensive)과는 다르게 데이터 중심(data-intensive)적이다. 이러한 애플리케이션의 경우 CPU 성능은 애플리케이션을 제한하는 요소가 아니며, 더 큰 문제는 보통 데이터의 양, 데이터의 복잡도, 데이터의 변화속도다. 일반적으로 데이터 중심 애플리케이션은 공통으로 필요로 하는 기능을 제공하는 표준 구성 요소(standard building block)으로 만든다. 예를 들어, 많은 애플리케이션은 다음을 필요로 한다. - 구동 애플리케이션이나 다른 애플리케이션에서 나중에 다시 데이터를 찾을 수 있게 데이터를 저장(데이터베이스) - 읽기 속도 향상을 위해 값비싼 수행 결과를 기억(캐시) - 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로..
이번에 살펴볼 내용은 효과적 시스템 설계 면접 공략법입니다. 총 네 가지 단계 나누어 접근합니다. 첫번째로는 문제 이해 및 설계 범위 확정, 두번째로는 개략적인 설계안 제시 및 동의 구하기, 세번째는 상세 설계, 4단계는 마무리 단계입니다. 크게 흐름을 보자면 추상에서 구체로 들어가고 구체에서 추상으로 다시 나오는 방법입니다. 좀 더 상세하게 설명하자면, 각 단계에서는 면접관의 동의를 구하거나 질문이 오갈 수 있습니다. 추상에서 구체로 넘어가기 전에 면접관들의 동의를 구하고 또는 질문을 통해 앞으로 나아갈 구체적인 방향 가닥을 잡습니다. 그리고 구체 단계에서는 개략적인 설계를 제시하고, 좀 더 심도있는 이야기로 넘어가기전에 동의를 구하고 더 깊은 구체 단계로 나아가게 됩니다. 이 단계에서는 개략적인 설계..
한 사람의 영향도가 너무 큰 시스템은 성공하기 어렵다. 초기설계가 완료되고 상당히 견고해지면 여러사람이 다양한 관점을 가지고 각각 실험을 진행하면서 테스트는 시작된다. - 도널드 커누스 요청, 응답, 질의, 결과 현대 데이터 시스템에서 가정하고 있는 데이터 처리 방식은 먼저 시스템에 요청하거나 지시를 보낸 후 잠시 뒤에 해당 시스템으로부터 결과를 반환받는 방식이다. 데이터베이스, 캐시, 검색 색인, 웹 서버 등 그 밖의 많은 시스템이 이 같은 방식으로 동작한다. 온라인 시스템은 브라우저가 특정 페이지를 요청하든 서비스가 원격 API를 호출하든 일반적으로 사람이 사용자로서 요청을 보내고 응답을 기다린다고 가정한다. 사용자는 오래 기다릴 수 없기 때문에 이런 시스템에서는 응답 시간 단축에 노력을 많이 기울인..
- Total
- Today
- Yesterday
- 이산 수학
- 항해99
- 로젠
- Arena
- 최단경로 알고리즘
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- Discrete Mathematics
- beginning javascript
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- grafana cloud
- 백준
- 아레나시뮬레이션
- paul wilton
- javascript
- 그라파나
- 시뮬레이션
- 명제논리
- 데이터 중심 애플리케이션 설계
- flutter
- Grafana
- arena simulation
- 아레나 시뮬레이션
- rosen
- Simulation
- Propositional and Predicate Logic
- 자바스크립트 예제
- 자바스크립트
- 대규모 시스템 설계 기초
- 이산수학
- 아레나
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |