개발업무를 진행하다 보면 어느 순간에는 데이터베이스를 사용하게 됩니다. 데이터는 애플리케이션의 핵심이니깐요. 어느 정도 규모를 넘어서 데이터를 관리하는 시스템이 별도로 필요할 때 DBMS, 특히 관계형 DB를 먼저 떠올리게 됩니다.

개인적으로는 클라이언트에서만 사용한다면 SQLite, 서버로 이용될 경우에는 Postgresql이나 MS SQL Server를 선호합니다. 특별한 이유는 없습니다. 예전에 제가 공부할 때에는 mysql은 트랜잭션 지원이나 서브쿼리 등이 PostgreSQL에 비해 부실했기 때문입니다.

하지만 역시 오픈소스의 발전 속도는 참 빠르고 거침없습니다. 어느새 MySQL도 트랜잭션이나 고급 쿼리문에 이어 고가용성까지 지원하고 있고, 대용량 서비스에 활용되고 있다는 소식을 쉽게 접하게 되었습니다. 그래서 이번에 mysql을 중심으로 DB에 관한 지식을 재충전할 목적으로 이 책을 읽었습니다.

 

저는 1부와 2부는 설렁설렁 보았습니다. 이미 다른 DBMS를 많이 다뤄보았었기 때문에, mysql의 특이점만 살펴보면서 읽었습니다. DBMS를 처음 공부하시는 분들은 2부가 가장 중요합니다!!! 2부는 기본적인 데이터베이스 설계 및 SQL에 관한 내용을 담고 있습니다. 꽤 상세하게 단계별로 설명하고 있습니다. 웬만한 SQL 기본서적보다 괜찮다고 생각합니다.(현실적인 DB를 가지고 SQL을 설명하고 있어요.)

Learning mySQL.나비책

이 책은 크게 4부분으로 나뉩니다.

 

1부는  주로 설치에 관한 내용입니다. 이 부분은 조금 애매하다고 생각됩니다. 클라우드의 시대라 예전처럼 리눅스 패키지 관리자나 소스에서 컴파일하는 경우는 거의 없을 것 같습니다. 이런 아쉬움은  14장 클라우드 MySQL에서 조금 보완이 됩니다만, 정말 조금입니다. DBaaS내용을 다루는 게 20쪽 정도에 불과합니다. 그만큼 클라우드에서 DB 사용이 쉬운 거라고 생각해야 할까요?

 

2부는 관계형 데이터베이스 기본 내용을 익히는 부분입니다.

기본적인 SQL구문을 sakila DB를 가지고 배우게 됩니다. ER Diagram, 데이터 정규화, 기본 SQL의 DDL, DML 구문들을 mySQL 관점에서 배울 수 있습니다. 그리고 제약사항들이나 조인, 중첩 쿼리등을 배울 수 있습니다. 기본적인 내용이지만, 그래도 처음 찍먹하는 개발자들은 도움이 될 것입니다. 상세히 단계별로 다루고 있습니다.

 

3부와 4부는 운영 관점입니다. 실제 서비스 환경에서 mySQL을 사용할 때 만나게 될만한 시나리오들입니다. 3부는 DBA 관점의  이야기들이 많았던 것 같아요. 물론 트랜잭션 이야기도 있긴 한데, 사용자/권한 관리나 백업 복구, 서버 튜닝에 관한 내용이 담겨 있었어요.

 

4부는 개인적으로 이 책에서 재미있게 읽은 부분입니다.  mySQL을 사용하여 고가용성을 확보하기 위한 여러 가지 방법을 소개를 하고 있습니다. 3부는 DBA관점이라면 4부는 솔루션 아키텍처 관점에서 mySQL 관련 내용을 설명하고 있습니다. 

4부 로드밸런싱과 K8S환경의 클러스터링

이 책은 관계형 DBMS를 처음 접하시거나 MySQL전체 기능을 훑어보고 싶은 분들에게 좋은 All-In-One 서적이라 생각합니다. 수준으로 보면 초급 도서라 생각됩니다.

 

나름 열심히 정리하면서 :-) 공부했어요

 

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

 2023년에 C언어가 가지는 의미는 무엇일까? C언어는 절차적 프로그래밍 언어의 맹주인 1972년생 프로그래밍 언어이지만, 객체지향을 넘어 함수형 프로그래밍이라는 패러다임이 몰아치는 현 시기에 C언어는 어떤 가치와 지향을 가지고 개발자들에게 다가설 수 있을까? 물론 나야 C/C++계열의 언어를 가장 좋아하고 있지만, 이제는 다른 신생 모던(Modern) 언어들이 제공하는 문제인식 개념이나 편의성을 C언어는 어떻게 풀어내려고 접근하고 있을까? 하는 궁금점을 가지고 모던 C언어를 살펴보기 위해 이 책을 골랐다.

 이 책의 제목은 '전문가를 위한C'라고 번역되었고, 두께가 무려 900여 페이지에 달할 만큼 위압감을 주는 책이다.  원서의 제목은 "Extream C"이다.  C언어 역시 짝꿍 C++와 함께 발전을 거듭해왔다. C언어는 1989년 ANSI C 스펙이 확정된 이후에도 C95, 99, 11, 18을 넘어 23까지 발전을 해오고 있지만, 그닥 개발자 그룹의 많은 관심을 받지는 못했다.  전문가들이 보아야할 책으로 생각할수도 있겠지만, 이 책을 80% 정도 읽은 시점에서 나는 초급을 벗어난, 고급 개발자가 되고 싶은 컴파일러 방식의 언어 중급 개발자들에게 큰 도움이 될 수 있는 책이라 본다. 단순히 C언어 문법을 익히고자 한다면 이 책은 그 답이 아닐 가능성이 높다.

 

이 책은 크게 7부로 나뉘어진다.

1부와 2부는 컴파일러 언어인 C를 중심으로 어떻게 컴파일러가 실행파일을 만들어 가는지, 실행파일은 기본적으로 어떻게 동작하는지를 설명한다. 특히 4장 에서는 C코드가 목적파일을 거쳐 실행파일까지 변환되는 과정속에서 메모리/데이터가 어떤 식으로 펼쳐지는지를 소개한다.왜 스택과 힙이 있는지를 잘 설명하고 있고, 각 메모리 세그먼트의 역할과 분석 방법을 통해 C코드의 동작원리를 설명한다. 윈도우가 아니라 맥/리눅스를 중심으로 소개하는데에서 한때 윈도우 프로그래밍하면 C였던 시대가 아련하게 느껴졌다.

3부에서는 재미있게도 C언어이지만 객체지향이라는 개념을 다룬다. 사실 C언어에서도 객체지향이 가능하다. 다만 조금 불편할 뿐이지.. 저자는 OOP를 언어의 특징이 아니라 "문제를 생각하고 분석하는 방식"(P.254)으로 설명하면서 C와 C++의 관계까지 소개하고 있다.

4부에서는 유닉스를 소개하면서 커널와 사용자 모드에 대해 설명한다. 다시한번 윈도우에서 길을 잃은 C언어의 모습이 느껴져 시대의 변화가 느껴지기도 한다. 하지만 C가 여전히 임베디드 시장이나 게임엔진, 하드코어 영역에서 중요한 역할을 맡고 있구나 하는 생각도 든다.

5부와 6부는 모든 언어에서 화두가 되는 동시성/병렬성과 프로세스간 통신의 방법을 소개한다. 꽤 많은 분량을 할애하여 쓰레드 동기화 및 IPC, 소켓 통신을 다룬다. 다만 언어 설명서와 같이 아주 상세하게 다루지는 않는다.

7부는 테스트와 빌드시스템 이야기인데, 소프트웨어의 유지 보수 이야기라면 모듈 패키지 관리 솔루션인  vcpkgconan에 대한 설명까지 곁들여졌으면 더 좋을 것 같다.

 

이 책은 전체적으로 초/중급 개발자(초년~5년차) 정도의 개발자들이 개발의 경험을 바탕으로 지식을 좀 더 깊게 만들때 도움이 될만한 책이라 생각한다. 단순히 C언어 책으로 인식되기엔 아깝고, 컴파일러 언어를 사용하는 개발자라면 한번씩 읽으면서 C가 만들어내는 방식을 이해해 보는 것도 유용하리라 생각한다. 윈도우 프로그래밍과 관련해서는 다른 책을 더 읽어야 한다. 이 책은 그런 내용을 다루지는 않는다.

일본에서 만들어진 C언어 캐릭터

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

+ Recent posts