기술 서적

    3장. 저장소와 검색

    3장. 저장소와 검색

    개요데이베이스가 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법을 확인한다.로그 구조 저장소 엔진과 페이지 지향 저장소 엔진에 대해서 알아본다. 데이터베이스를 강력하게 만드는 데이터 구조색인(Index)은 데이터베이스에서 특정 키의 값을 효율적으로 찾을 수 있는 방법이다.색인은 기본 데이터에서 파생된 추가적인 구조이기 때 쓰기 과정에서 오버헤드가 주로 발생한다. (데이터를 쓸 때마다 색인도 함께 갱신해야 하기 때문이다.)해시 색인데이터 파일에 오프셋을 추가하는 전략키/값 저장소에서 가장 간단한 색인 전략은 키를 데이터 파일의 바이트 오프셋에 매핑해 인메모리 해시 맵을 유지하는 전략이다.키/값 쌍이 추가될 때마다 방금 기록한 데이터의 오프셋을 반영하고 맵을 갱신한다.디스크 공간이 유..

    2장. 데이터 모델과 질의 언어

    2장. 데이터 모델과 질의 언어

    개요데이터 저장과 질의를 위한 다양한 범용 데이터 모델을 알아보자.관계형 모델, 문서 모델, 그래프 기반 모델을 비교해보자.관계형 모델과 문서 모델관계형 모델: 데이터가 관계(테이블)로 구성되고 각 관계는 순서 없는 튜플(Row)의 모음관계형 모델은 관계형 데이터베이스(RDBMS)로 발전했으며 정규화된 구조를 데이터를 저장하고 질의할 때 사용되었다.관계형 모델의 목표는 정리된 인터페이스 뒤로 구현 세부사항을 숨기는 것이다.NoSQL의 탄생NoSQL의 등장 배경은 다음과 같다.대규모 데이터셋이나 쓰기 연산에 대한 처리량을 관계형 데이터베이스보다 쉽게 도달할 수 있게하는 확장성의 필요도관계형 모델에서 지원하지 않는 특수 질의 동작제한적인 관계형 스키마에 비해 동적이고 표현력이 풍부한 데이터 모델에 대한 바람..

    1장. 사용자 수에 따른 규모 확장성

    1장. 사용자 수에 따른 규모 확장성

    개요단일 사용자에서 다수의 사용자를 커버할 수 있는 시스템 확장에 대해 알아본다.단일 서버단일 서버 사용 시 사용자의 요청 흐름사용자는 도메인 주소를 이용해 웹사이트 접속DNS(Domain Name Service)를 이용해 도메인 주소 → IP 주소 변환DNS가 반환한 IP 주소로 HTTP 요청을 전달웹 서버는 HTML 페이지 혹은 JSON 결과를 응답데이터베이스서버는 웹 계층(트래픽 처리를 위한 웹 서버)과 데이터 계층(데이터베이스)을 구분하는 것이 좋다.계층을 분리함으로써 각각을 독립적으로 확장할 수 있다.데이터베이스의 선택데이터베이스는 크게 관계형 데이터베이스와 비-관계형 데이터베이스 사이에서 선택한다.관계형 데이터베이스(RDB): MySQL, PostgreSQL 등비-관계형 데이터베이스(NoSQL..

    3장. 다형성과 추상 타입

    3장. 다형성과 추상 타입

    상속 개요상속(Inheritance): 한 타입을 그대로 사용하면서 구현을 추가할 수 있도록 하는 방법상속 대상이 되는 클래스 = 상위(super) 클래스, 부모(parent) 클래스상속을 받는 클래스 = 하위(sub)클래스, 자식(child)클래스자식 클래스는 부모 클래스에 정의된 구현을 물려 받는다.private 접근 제어자가 명시된 메소드, 필드를 제외하고 물려받는다.재정의(Overriding): 하위 클래스에서 상위 클래스에 정의된 메소드를 새로 구현하는 것메소드를 오버라이딩하면, 메소드 실행 시 상위 타입 메소드가 아닌 재정의한 하위 타입 메소드가 실행된다다형성과 상속다형성(Polymorphism): 한 객체가 여러 가지 모습(타입)을 갖는 것, 한 객체가 여러 타입을 가질 수 있는 것정적 타입..

    2장. 객체 지향

    2장. 객체 지향

    "개발자가 반드시 정복해야할 객체 지향과 디자인 패턴" 서적 기록절차 지향과 객체 지향절차 지향 프로그래밍절차 지향 프로그래밍(Procedural Oriented): 데이터를 조작하는 코드를 별도로 분리해 함수나 프로시저로 만들어 프로그램을 구성하는 방법절차 지향 프로그래밍은 데이터를 중심으로 프로시저가 구성된다. 프로시저에 의해 발생한 데이터를 다른 프로시저와 공유해 사용하기 때문에 다음과 같은 단점이 있다.데이터 타입이나 의미가 변경될 때 의존하는 프로시저가 함께 수정되어야 한다.같은 데이터를 각 프로시저들이 다른 의미로 사용하는 경우가 생긴다.코드의 수정이 어려워지며 새로운 기능을 추가하는데 비용이 많이 든다.객체 지향 프로그래밍객체 지향 프로그래밍(Object Oriented): 데이터와 데이터와..