만약 서버 개발자로 후임이 들어온다고 했을 때
단 하나의 책을 추천해야 한다면
난 주저없이 이 책을 추천할 것 같습니다.
MySQL를 소개하거나 기능을 설명하는 책은 정말 많이 있지만
이 책처럼 대규모 서비스(저자는 일본의 Mobage 서비스의 경험이 있는듯 하다)의 경험을
바탕으로 쓰여진 책은 매우 드문거 같고,
경험에 우러나오는 정말 중요한 조언들이 책의 곳곳에 있는 듯하기 때문입니다.
특히 Chapter12의 빅 데이터 시대의 데이터베이스 설계는 만약 모바일 게임의 서버를 개발
한다면 반드시 한번은 읽어보길 추천하고 싶네요
레이블이 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술인 게시물을 표시합니다. 모든 게시물 표시
레이블이 웹 프로그래머를 위한 데이터베이스를 지탱하는 기술인 게시물을 표시합니다. 모든 게시물 표시
2015년 2월 3일 화요일
2015년 2월 1일 일요일
웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 Chapter10 ~ Chapter12
이번에는 평소 관심이 있었던 주제들이라
챕터 10 ~ 12 까지 단숨에 읽었습니다.
특히 챕터 11에서 나왔던 데이터베이스 기술의 현재와 미래가 매우 흥미로웠는데요
이 책이 2012년 기준이라서 그럴수도 있지만
NoSQL 보다는 MySQL에 더 신뢰를 보이는 것처럼 보이고
최근 MongoDB의 재평가(?) 문제점등이 나오는 상황에서는
저도 MongoDB의 도입은 다음으로 미루어야하지 않나 생각됩니다.
특히 서비스가 진행되면서
고민이 되었던 트랜잭션 테이블이 증가하는 부분에서는
레인지 파티셔닝으로 어느정도 해결될 수 있을거 같습니다.
챕터 10 ~ 12 까지 단숨에 읽었습니다.
특히 챕터 11에서 나왔던 데이터베이스 기술의 현재와 미래가 매우 흥미로웠는데요
이 책이 2012년 기준이라서 그럴수도 있지만
NoSQL 보다는 MySQL에 더 신뢰를 보이는 것처럼 보이고
최근 MongoDB의 재평가(?) 문제점등이 나오는 상황에서는
저도 MongoDB의 도입은 다음으로 미루어야하지 않나 생각됩니다.
특히 서비스가 진행되면서
고민이 되었던 트랜잭션 테이블이 증가하는 부분에서는
레인지 파티셔닝으로 어느정도 해결될 수 있을거 같습니다.
2015년 1월 31일 토요일
웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 Chapter09
MySQL은
1. 클라이언트 접속시 쓰레드 할당
2. 쿼리 캐쉬
3. SQL 구문 파싱 처리
4. 최적화
로 실행된다고 합니다.
특히 이중에서 쿼리 캐쉬가 흥미를 끄는데요
실행된 SELECT 문이 이전과 세세한 부분까지 다르지 않다면 미리 캐시해 놓은 검색 결과를 반환한다는 것입니다.
대용량 DB 지원에 고민하고 있는 저에게는 희소식인데요
그러나 아무리 InnoDB의 성능이 개량되었고 다양한 메모리 캐싱이 지원된다 하더라도
트랜잭션 기반의 성능은 당연히 한계가 있다고 생각합니다.
(그래서 지금 리눅스를 깔고 레디스를 도입하고 있습니다 ㅎㅎ;;)
결국 서버는 다양한 시도와 시행착오라는 결론이네요
지금 몽고DB에 대한 고민을 계속하고 있는데 (스키마가 없다니!!!) 역시 써보고 결론을 내야할 것 같습니다.
1. 클라이언트 접속시 쓰레드 할당
2. 쿼리 캐쉬
3. SQL 구문 파싱 처리
4. 최적화
로 실행된다고 합니다.
특히 이중에서 쿼리 캐쉬가 흥미를 끄는데요
실행된 SELECT 문이 이전과 세세한 부분까지 다르지 않다면 미리 캐시해 놓은 검색 결과를 반환한다는 것입니다.
대용량 DB 지원에 고민하고 있는 저에게는 희소식인데요
그러나 아무리 InnoDB의 성능이 개량되었고 다양한 메모리 캐싱이 지원된다 하더라도
트랜잭션 기반의 성능은 당연히 한계가 있다고 생각합니다.
(그래서 지금 리눅스를 깔고 레디스를 도입하고 있습니다 ㅎㅎ;;)
결국 서버는 다양한 시도와 시행착오라는 결론이네요
지금 몽고DB에 대한 고민을 계속하고 있는데 (스키마가 없다니!!!) 역시 써보고 결론을 내야할 것 같습니다.
2015년 1월 30일 금요일
웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 Chapter08
이번 챕터는 데이터 베이스의 다양한 리스크에 대한 조언??
이 있는 챕터였습니다.
프로그램 쪽 철학과 비슷한 부분이 있는데요
1. 단순해야 한다.
2. 검증된 기술을 써라
등이죠
특히 1번 단순해야 한다는 너무나 중요한 부분이죠
그리고 가장 어려운 부분이기도 합니다.
단순하게 하는 가장 큰 어려움은
기능을 구현함에 있어서 수많은 시행착오를 거치게 되는데
이 대단히 복잡한 일을 구현하는데 맞추어졌던 머리속 로직이
이걸 다시 쉽게 구현한다는 로직으로 전환될려면
보통일이 아니며
또다른 고민으로 출발해야 한다는 것이죠
단순하게 해야한다라는건
너무나 중요한 철학이지만
명백하게 비용과 시간이 들어가는 작업입니다.
그리고 이 비용을 감수할 수 있는 조직이나 회사가
바로 강력한 소프트웨어 회사인 것이죠
그리고 검증된 기술을 써라 라는 부분은
개인적인 경험상 너무나도 동의하는 부분입니다.
옛날 언리얼3 초창기 버전을 썼는데요
하하
돈내고 베타 테스트한다라는 이야기가 유행이었습니다.
물론 너무나도 훌륭한 엔진이지만
소프트 웨어산업에서 초기버전이란
리스크를 감당할 수 있는 역량의 회사 및 조직에서 다룰 수 있는 범위이지 않나 생각듭니다.
특히 요즘 한창 떠오르는 몽고DB(스키마를 쓰지 않는다는게 너무나도 매력적이지만 .ㅠ.ㅠ)의 경우
물론 대단히 우수한 프로그램이지만
신중하게 접근해야 하는 부분도 많은게 사실이라고 생각합니다.
이 있는 챕터였습니다.
프로그램 쪽 철학과 비슷한 부분이 있는데요
1. 단순해야 한다.
2. 검증된 기술을 써라
등이죠
특히 1번 단순해야 한다는 너무나 중요한 부분이죠
그리고 가장 어려운 부분이기도 합니다.
단순하게 하는 가장 큰 어려움은
기능을 구현함에 있어서 수많은 시행착오를 거치게 되는데
이 대단히 복잡한 일을 구현하는데 맞추어졌던 머리속 로직이
이걸 다시 쉽게 구현한다는 로직으로 전환될려면
보통일이 아니며
또다른 고민으로 출발해야 한다는 것이죠
단순하게 해야한다라는건
너무나 중요한 철학이지만
명백하게 비용과 시간이 들어가는 작업입니다.
그리고 이 비용을 감수할 수 있는 조직이나 회사가
바로 강력한 소프트웨어 회사인 것이죠
그리고 검증된 기술을 써라 라는 부분은
개인적인 경험상 너무나도 동의하는 부분입니다.
옛날 언리얼3 초창기 버전을 썼는데요
하하
돈내고 베타 테스트한다라는 이야기가 유행이었습니다.
물론 너무나도 훌륭한 엔진이지만
소프트 웨어산업에서 초기버전이란
리스크를 감당할 수 있는 역량의 회사 및 조직에서 다룰 수 있는 범위이지 않나 생각듭니다.
특히 요즘 한창 떠오르는 몽고DB(스키마를 쓰지 않는다는게 너무나도 매력적이지만 .ㅠ.ㅠ)의 경우
물론 대단히 우수한 프로그램이지만
신중하게 접근해야 하는 부분도 많은게 사실이라고 생각합니다.
웹 프로그래머를 위한 데이터베이스를 지탱하는 기술 Chapter01 ~ Chapter 07
지금 보고있는 책입니다.
MySQL을 기본으로 쓰여져 있으며,
기본서적들에서 자세하게 다루지 않은 부분들을 심도있게 다루는것 같아 개인적으로 만족도가 높은 편이거 같네요
여태까지 읽는 부분중에서
트랜잭션에 대해 상세히 다룬것이 인상적이네요
저는 몇개의 레이블을 다중으로 처리할 때만 트랜잭션이 필요할 줄 알았는데
책을 읽어보니 하나의 레이블(Update, Insert 등)을 처리할때도 내부적으로 다양한 로직이 구동되기 때문에 트랜잭션으로 처리하는게 필요하다는 것을 알게 되었습니다.
그리고 여러 부분에서( 인덱스 처리, InnoDB의 레이블 단위 락 등 ) 간과하고 넘어갔을 경우 매우 아쉬운 부분들이 잘 정리되어 있어서
만약 DB에 관해 조금 더 알고 싶으신 분들이라면 이책을 정말 추천합니다
피드 구독하기:
글 (Atom)