반응형

독서 33

[데이터 중심 애플리케이션 설계] 3장

핵심 내용 로그 구조화 관점에서 파일에 추가와 오래된 파일의 삭제만 허용하고 한 번 쓰여진 파일은 절대 갱신하지 않는다. 비트캐스크, SS테이블, LSM 트리, 레벨 DB, 카산드라, HBase, 루씬 등이 이 그룹에 속한다. 임의 접근 쓰기를 체계적으로 디스크에 순차 쓰기로 바꾼다 하드드라이브와 SSD의 성능 특성에 맞춰 쓰기 처리량을 높이는 것이 가능하다 제자리 갱신 관점에서 덮어쓰기 할 수 있는 고정 크기 페이지의 셋으로 디스크를 다룬다. 이 관점에서 가장 큰 예가 B 트리다. B 트리는 모든 주요 관계형 데이터베이스와 많은 비정형 데이터베이스에서도 사용한다. 배운 내용 1. 정렬되어 있으면 적어도 두가지 값 사이에 있다는 것만으로도 이진 탐색이 가능해진다. 인덱스가 범위를 나타내는 페이지로 구성되..

독서 2023.11.13

[리팩토링] 2 ~ 5장

enrichPerformance 메서드에서 shallow copy한 Performance 객체에 동적으로 play라는 필드를 추가해버리는데 자바에서는 어떻게 구현하셨는지 궁금합니다(p.56) PerformanceVo 별도로 정의Performance 클래스에 추가  데이터베이스 리팩토링 or 마이그레이션 시 얼마나 작은 단계로 나눠서 릴리스 하시는지 궁금합니다(p.99) flyway 사용DBA 검수 이후 주로 오전에 배포합니다. 락이 걸리거나 큰 작업의 경우에는 새벽에 배포합니다.DBA에게 요청합니다. 2주에 한번씩 주기적으로 한번에 배포합니다.  모든 상황에서 기능 추가와 리팩토링을 독립적으로 분리하여 커밋하기에는 너무 피곤해질 것 같은데..그럼 기능 추가를 진행하며 마음에 들지않는 코드여도 일단 내버려..

독서 2023.04.15

[리팩토링] 1장

부정관사 사용하는 이유가 뭘까?(p.34) 자바 스크립트는 동적 타입 언어이기 때문에 타입을 변수명으로 쉽게 확인할 수 있게 된다실제로 헝가리안 표기법을 사용하는 팀이 있다고 한다  playFor 함수는 단순히 인덱스를 통해 배열의 값을 가져오는 것 같은데, 함수 추출하는 의미가 무엇일까?(p.35) 1. 함수로 추출하는 이유는 변경점을 최소화하기 위해서2. 추상화 레벨을 맞추기 위해서 (인덱스에 접근하는 것은 낮은 레벨이다)  for 루프 한번이면 될 일을 for 루프 두번으로 돌리는 것이 성능에는 크게 상관이 없다(p.39) 상관 있더라도 리팩토링과 성능 개선은 분리해서 접근하는 것이 맞다실제 테스트 결과 O(n), O(4n)이 1.5~2배 정도 차이난다컴파일러 성능이 많이 좋아졌기에 클린 코드를 작..

독서 2023.04.04

[웹 개발자를 위한 대규모 서비스를 지탱하는 기술] 1장. 대규모 서비스의 전체 그림 파악하기

세 줄 요약 대규모 서비스를 개발하면 확장성 및 부하 분산, 다중성, 효율적 운용과 협업 등의 다양한 문제에 직면하게 된다 이를 해결하기 위해서는 서버 용도에 맞는 하드웨어, 로드밸런서와 가동감시 기능을 갖춘 소프트웨어를 도입하고, 서버 정보관리 시스템을 개발하는 시도를 지속해야 한다 서버/인프라 측면의 시스템 구성뿐만 아니라 애플리케이션의 각종 로직이나 DB 스키마 등도 재검토해서 비효율적인 부분을 서서히 배제하는 등의 노력도 뒤따라야 한다    대규모 서비스 1. 확장성 확보, 부하분산 필요 대량의 액세스가 있는 서비스에서는 서버 1대로 처리할 수 없는 부하를 어떻게 처리할 것인지가 가장 큰 문제다 이 문제에 대한 전략의 기초는 스케일아웃 이다 스케일아웃 : 서버를 횡으로 전개, 즉 서버의 역할을 분..

독서 2022.03.16

[개발자를 위한 인덱스 생성과 SQL 작성 노하우] 인덱스는 논리적 분류이다

세 줄 요약 물리적 분류는 동일한 시공간에서 오직 한 분류만 가능하며, 분류 대상과 분류 정보는 일대일 관계이다 논리적 분류는 동일한 시공간에서 동시에 다양한 분류가 가능하며, 분류 대상과 분류 정보는 일대다 관계이다 따라서 DB에서는 논리적 분류를 사용하며, 분류 대상(테이블) 과 분류 정보(인덱스) 를 분리했다     물리적 분류와 논리적 분류                             물리적 분류                                   논리적 분류직접적이고 시각적인 분류 방식간접적이고 추상적인 분류 방식인류 역사와 함께 널리 사용됨컴퓨터 사용과 더불어 폭넓게 사용현실 세계의 분류에서 적합디지털 세상의 분류에 적합분류 대상과 분류 정보 일체형분류 대상과 분류 정보 분리동일..

독서 2022.03.16

[개발자를 위한 인덱스 생성과 SQL 작성 노하우] 오라클 블록 옵션

세 줄 요약 블록 공간을 효율적으로 관리하기 위해 PCTFREE, PCTUSED 옵션을 사용한다 PCTFREE의 기본값은 10%, PCTUSED 기본값은 40%이며, 대부분의 DBA는 그대로 사용한다 단, 요즘에는 오라클 내부에서 PCTUSED를 자동으로 제어하므로 PCTFREE만 설정해주면 된다    PCTFREE 와 PCTUSED 블록 옵션 블록데이터 I/O의 가장 작은 단위이자 할당될 수 있는 공간의 가장 작은 단위결국 블록이란 저장의 기본 단위이고, 운반(조회)의 최소 단위라 할 수 있다 PCTFREE변경 작업에 따라 데이터 블록에 저장된 로우 데이터의 행 크기가 증가할 상황에 대비한 여유 공간기본값은 10% PCTUSED블록 재사용 여부를 결정하는 요소로서, 데이터가 사용하는 공간이 설정값 이하..

독서 2022.03.16

[데이터베이스 개론] 회복과 병행 제어

트랜잭션  정의 하나의 작업을 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것 데이터베이스에 장애가 발생했을 때, 데이터를 복구하는 작업의 단위이다  특성 1. 원자성 Atomicity 트랜잭션을 구성하는 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야 한다는 all-or-nothing 방식 트랜잭션이 원자이므로 쪼개져서 반은 되고 반은 안되는건 불가능  2. 일관성 Consistency 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관된 상태를 유지해야 함을 의미 질량 보존의 법칙 같은 느낌  3. 격리성 Isolation 현재 수행 중인 트랜잭션이 완료될 때까지 트랜잭션이 생성한 중간 연산 결과에 다른 트랜잭션들이 접근할 수 없음을 의미  트랜잭션이 동시에 수행되지만 독립적으로..

독서 2022.03.15

[데이터베이스 개론] 데이터베이스 설계

데이터베이스 설계  데이터베이스 설계 단계 1단계  : 요구 사항 분석 수집한 요구 사항을 분석하여 그 결과를 요구 사항 명세서로 작성하는 단계 2단계 : 개념적 설계 명세서를 바탕으로 DBMS에 독립적인 개념적 데이터 모델으로 표현하는 단계일반적으로 E-R 모델을 많이 사용한다개체와 속성, 관계를 추출하고 E-R 다이어그램을 작성한다 3단계 : 논리적 설계 개념적 구조를 기반으로 적합한 DBMS를 선정하는 단계관계 데이터 모델을 사용한다면 E-R 다이어그램을 릴레이션 스키마로 변환하는 작업을 수행한다릴레이션 스키마 변환 규칙규칙 1. 모든 개체는 릴레이션으로 변환한다규칙 2. 다대다 관계는 릴레이션으로 변환한다규칙 3. 일대다 관계는 외래키로 표현한다          - 일반적인 일대다 관계는 외래키로..

독서 2022.03.15

[데이터베이스 개론] 데이터베이스 언어 SQL

SQL의 소개 정의 : SQL (Structured Query Language)은 관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 언어  기능에 따른 분류데이터 정의어 : 테이블을 생성하고, 변경 제거하는 기능을 제공데이터 조작어 : 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정, 삭제, 검색하는 기능 제공데이터 제어어 : 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 제공하는 언어  SQL을 이용한 데이터 정의 테이블 생성 CREATE TABLE 테이블_이름 ( 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값] [PRIMARY KEY (속성_리스트)] // 기본키는 NOT NULL 표기해주는 것..

독서 2022.03.11

[데이터베이스 개론] 데이터 모델과 연산

데이터 모델링  데이터 모델링과 데이터 모델의 개념 데이터 모델링 : 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정, 추상화 작업이 필요하다 개념적 모델링 : 현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업논리적 모델링 : 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업  데이터 모델 : 데이터 모델링의 결과물을 표현하는 도구로 개념적 데이터 모델과 논리적 데이터 모델이 있다 구성 요소- 데이터 구조 : 자주 변하지 않고 정적이다- 연산 : 값이 연산에 의해 변경될 수 있어 동적이다- 제약조건 : 구조적 측면의 제약 사항과 연산을 적용하는 경우 허용할 수 있는 의미적 측면의 제약 사항이 있다 데이터베이스 설계 = 개념적 데이터..

독서 2022.03.07
반응형