지은이: 마크 랜돌프(Marc Randolph) 원제: THAT WILL NEVER WORK(2020) 쪽수: 468 옮긴이: 이선주 출판사: Denstory 출간일: 2020-05-01 ISBN: 9791185716923 정가: 18,000원 판매가: 16,200원(알라딘) 작년의 끝과 올해의 시작을 함께 한 책. 삼성, 현대, 디즈니, 애플, 테슬라와 같이 굴직한 대기업 혹은 그 창업주들의 창업 스토리를 담은 책은 굉장히 많다. 월터 아이작슨이 쓴 혹은 애슐리 반스가 쓴 등이 대표적이다. 여태까지 이런 창업 스토리를 재구성해 쓰여진 책을 여러 권 읽어 보았지만, 이 책은 다른 책들에 비해 손에서 놓고 싶지 않게끔 하는 여러가지 특징들이 있었다. 몇 가지를 꼽아보자면, 책을 정말 솔직하게 썼다. 책을 ..
웹이 왜 이런 스펙을 가지게 되었는지 (HTTP, URI, HTML) 이 스펙을 가지고 웹 서비스를 설계하는 방법 API: 프로그램을 위한 인터페이스이기 때문에 프로그램에서 다루기 쉬운 데이터 포맷 사용 Ex. XML, JSON API 로서의 웹: 웹 서비스 URI: HTML로 표현되는 온갖 정보를 가리킴 URI ↔ HTTP ↔ HTML — 심플함 웹 하이퍼미디어 Memex → Xanadu → HyperCard 문제점 단방향 링크 링크 단절 위험 버전 관리 못함 트랜스클루젼 지원 안 함 분산시스템 중앙 집중 → RCP(분산 시스템 실현 위한 기술) → CORBA, DCOM(RPC에서 객체중심으로) 문제점 성능 프로그래밍 언어 혼재, 데이터 형 변환 버전업 호환성 부하 분산 이를 웹으로 해결 팀 버너스 리..
모든 것은 시스템의 일부 - 맥락을 고려하자 기술 습득의 드라이퍼스 모델: 초보자 -> 전문가가 되어가는 5단계 과정 1단계: 규칙을 단순히 따름 2단계: 규칙을 조금씩 벗어나지만, 여전히 큰 그림에는 관심없음 3단계: 문제를 스스로 찾아서 해결하는 단계 4단계: 큰 그림을 보려고 노력하고, 자가 교정을 시도하고, 다른 사람의 경험으로부터 배우는 것이 가능(격언의 현실 적용 능력) 5단계: 더 나은 방법을 갈구하고, 직관을 활용한다. 중요한 것과 그렇지 않은 것을 구분하는 능력 규칙 -> 직관 모든 것을 고려하기 -> 중요한 것에 집중하기 유리되어 관찰하기 -> 시스템의 일부라는 것을 인식하기 R&D: Rip off and Duplicate 실습을 통한 진정한 경험 사려깊은 연습 + 10년 = 전문가 사..
인덱스 - 테이블 안의 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터베이스 객체 - 책에서 원하는 내용이 설명된 페이지를 목차나 색인을 통해 쉽게 찾는 것과 같은 원리 필요성 - 실제 데이터베이스 안의 테이블 데이터가 저장되는 곳은 디스크와 같은 보조기억장치 - SQL 실행 시 디스크로부터 필요한 데이터를 찾음 - 디스크 안의 데이터베이스 파일로부터 필요한 블록을 반복해서 주기억장치로 읽어오게 되는데, 문제는 디스크 접근 속도가 주기억장치 접근 속도보다 훨씬 느리다는 점 - 디스크 접근 횟수를 줄여 검색 속도를 높이기 위해 인덱스 사용 인덱스의 구조 - 대부분의 DBMS는 B-트리 구조의 인덱스 지원 - 루트노드, 중간 노드, 리프노드로 구성 - 리프노드들이 같은 레벨에 존재하는 균형 트리 - 리프 ..
정규화와 이상 현상 - 잘못된 스키마 정의는 원하지 않는 여러 이상 현상을 발생 - 잘못된 스카 정의를 바로 잡는 데이터베이스 설계 방법이 정규화 정규화의 필요성 - 잘못된 데이터베이스 설계는 여러 부작용 - 데이터 관리가 어려워지고, 일관성/무결성 훼손 - 부작용은 대부분 불필요한 데이터 중복 때문에 발생 - 좋은 설계는 데이터 중복을 최소화하는 형태로 릴레이션 스키마를 정의하는 것 이상 현상 - 릴레이션 처리 과정에서 불필요한 데이터 중복으로 인해 발생하는 부작용 - 이는 잘못된 릴레이션 스키마 설계 때문 종류 1) 삽입 이상 - 불필요한 데이터를 함께 입력하지 않고서는 원하는 데이터만 입력하는 것이 불가능한 상황 2) 갱신 이상 - 중복된 속성 값 중 일부가 수정되지 않을 경우 데이터 불일치가 발생..
트랜잭션 - 한 묶음으로 처리되어야 하는 SQL 문들의 집합 - 트랜잭션에 속한 SQL 문들은 모두 정상처리 되어야 트랜잭션이 완료될 수 있음 - 트랜잭션의 실행 결과를 데이터베이스에 최종적으로 반영하는 것을 커밋이라 함 - 실행 결과를 반영하지 않고, 취소하여 원래 상태로 되돌리는 것을 롤백이라 함 - 커밋되기 전까지는 데이터베이스에 완전하게 반영되었다고 할 수 없는 임시 실행 결과일 뿐 필요성 - 여러 사용자의 동시 접근성을 제어하고 장애 발생 시 안정적으로 데이터를 복구하기 위해 트랜잭션의 4가지 특성(ACID) 1) 원자성(Atomicity) - 트랜잭션 안의 SQL 명령문을 모두 성공적으로 실행하여 완료하거나 아니면 모두 철회하여 무효화해야함을 의미 2) 일관성(Consistency) - 데이터..
내장 함수 - SQL 명령문 안에서 검색 결과를 반환하거나 원하는 결과로 가공하는 SQL 함수 사용 가능 - DBMS가 제공하는 내장 함수와 사용자가 직접 정의하는 사용자 정의 함수로 구분 MySQL 주용 내장 함수 표 저장 프로시저 - 미리 작성하여 데이터베이스 안에 저장한 SQL 문의 묶음 - 독립된 프로그램으로 데이터베이스 안에 하나의 객체로 저장 - 보통 DBA가 데이터베이스 관리를 수행하기 위해 사용하는 기능들이 DBMS에 의해 저장 프로시저로 제공됨 - 직접 저장 프로시저를 정의하면, 복잡한 조건의 SQL 작업을 함수처럼 인자만 전달해서 실행 가능 - 최적화된 SQL문을 미리 데이터베이스에 작성해둘 수 있고, 복잡한 SQL문을 전달할 필요가 없어 네트워크 부하가 줄어들며 여러 응용 프로그램간의..
뷰 - 실제 데이터를 저장하지 않는 가상 테이블 - 사용자에게는 똑같은 테이블로 보이지만 CREATE TABLE 명령어로 만들어진 물리적인 기반 테이블과는 다름 - 테이블이 전체 조직의 관점에서 여러 사용자 요구를 수용하여 최적의 저장단위로서 만들어졌다면 뷰는 개인 관점에서 필요로 하는 접근 구조로서 자유롭게 정의할 수 있음 - 데이터베이스에 저장된 테이블 구조를 각 사용자별로 서로 다르게 볼 수 있도록 한다 - 뷰는 주로 기반 테이블로부터 정의되지만 또 다른 뷰를 기반으로도 정의될 수 있음 장점 1) 편의성, 재사용성 - 복잡한 질의문 작성이 쉽고 간단해짐 - 조인, 중첩 질의 등을 사용하여 뷰를 미리 생성하면, 복잡한 SQL문을 다시 작성할 필요가 없음 - 작성 빈도가 높거나 빈번하게 참조되는 검색 ..