책책책 책을 읽읍시다/프로그래밍
-
Real MySQL 8.0 4 - 쿼리 작성 및 최적화책책책 책을 읽읍시다/프로그래밍 2023. 5. 1. 22:45
MySQL 연산자와 내장 함수 숫자 숫자 값을 상수로 SQL에 사용할 때는 다른 DBMS와 마찬가지로 따옴표(' 또는 ") 없이 숫자 값을 입력하면 된다. 또한 문자열 형태로 따옴표를 사용하더라도 비교 대상이 숫자 값이거나 숫자 타입의 컬럼이면 MySQL 서버가 문자열 값을 숫자 값으로 자동 변환한다. 하지만 이처럼 숫자 값과 문자열 값을 비교할 때는 한 가지 주의할 사항이 있다. 서로 다른 타입으로 WHERE 조건 비교가 수행되는 다음 쿼리를 잠깐 살펴보자. SELECT * FROM tab_test WHERE number_cloumn='10001'; SELECT * FROM tab_test WHERE string_cloumn=10001; 위 쿼리와 같이 두 비교 대상이 문자열과 숫자 타입으로 다를 때는..
-
Real MySQL 8.0 3 : 옵티마이저와 힌트 그리고 실행계획책책책 책을 읽읍시다/프로그래밍 2023. 4. 29. 23:45
09 옵티마이저와 힌트Order by 처리(Using filesort)정렬 처리 방법 쿼리에 ORDER BY가 사용되면 반드시 다음 3가지 처리 방법 중 하나로 정렬이 처리된다. 일반적으로 아래쪽에 있는 정렬 방법으로 갈수록 처리 속도는 떨어진다.정렬 처리 방법실행 계획의 Extra 컬럼 내용인덱스를 사용한 정렬별도 표기 없음조인에서 드라이빙 테이블만 정렬"Using filesort" 메세지가 표시됨조인에서 조인 결과를 임시 테이블로 저장 후 정렬"Using temporary; Using filesort" 메세지가 표시됨 먼저 옵티마이저는 정렬 처리를 위해 인덱스를 이용할 수 있을지 검토할 것이다. 인덱스를 이용할 수 있다면 별도의 "Filesort" 과정 없이 인덱스를 순서대로 읽어서 결과를 반환한다...
-
Real MySql 8.0 1 : 쿼리 실행, 트랜잭션과 잠금책책책 책을 읽읍시다/프로그래밍 2023. 4. 27. 00:15
저자 : 백은빈, 이성욱들어가며 MySql 동작 원리를 자세하고 이해하기 쉽게 알려주는 책이다. 동작 원리를 이해하고 나니 백엔드 개발자로서 테이블 설계와 쿼리 작성을 어떻게 해야하는지 감이 잡혔다. 데이터를 저장하고 가공하는 백엔드 개발자에게는 반드시 읽어야할 책이다. MySql을 사용하는 개발자에게는 더할나위없이 좋고, 오라클이나 postgreSql과 같이 다른 진영에 있더라도 RDBMS를 MySql 예제를 통해 학습할 기회로 삼으면 좋다.MySql에 대해 A부터 Z까지 풀어주는 책이므로 설치, 클러스터링, 복제 등 상대적으로 관여도가 낮은(DBA에게 높은) 단원은 가볍게 읽고 넘어갔다. 개발하면서 자주 접하는 문제들 위주로 정리하였다. 다음부터는 발췌한 내용이다.04 아키텍처쿼리 실행 구조MySql..
-
엔터프라이즈 애플리케이션 아키텍처 패턴 3 - 데이터 전송 객체, 기본 패턴책책책 책을 읽읍시다/프로그래밍 2023. 3. 14. 23:43
15장. 분산 패턴 - 데이터 전송 객체 메서드 호출 횟수를 줄이기 위해 프로세스 간에 데이터를 전송하는 객체이다. 원격 파사드와 같은 원격 인터페이스를 사용할 때는 각 호출의 비용이 상당히 부담스럽다. 따라서 호출 횟수를 줄여야 하며, 이를 위해서는 각 호출에서 더 많은 데이터를 전송해야 한다. 한 가지 방법은 다수의 매개변수를 사용하는 것이다. 그러나 이 방식은 프로그램을 작성하기에는 상당히 불편하며, 자바와 같이 단일 값만 반환할 수 있는 언어에서는 아예 불가능하다. 이 문제를 해결하는 방법은 호출에 필요한 모든 데이터를 저장하는 데이터 전송 객체(Data Transfer Object)를 만들어 사용하는 것이다. 데이터 전송 객체는 직렬화가 가능해야 연결을 통해 전송할 수 있다. 일반적으로 데이터 ..
-
엔터프라이즈 애플리케이션 아키텍처 패턴 2 - 객체&관계형 매핑, 리포지토리, 프런트 컨트롤러책책책 책을 읽읍시다/프로그래밍 2023. 3. 13. 23:48
12장 객체-관계형 구조 패턴 : 식별자 필드 관계형 데이터베이스는 행을 다른 행과 구분하기 위해 기본 키라고 하는 키를 사용한다. 그러나 객체 시스템은 내부적으로 올바른 식별자를 보장하므로 인메모리 객체에는 이러한 키가 필요없다(C++의 경우 원시 메모리 위치를 활용함). 데이터베이스에서 데이터를 읽는 것은 간단하지만 데이터를 다시 기록하려면 데이터베이스와 인메모리 객체 시스템을 연결해야 한다. 식별자 필드(Identity Field)는 기본적으로 놀라울 만큼 단순하다. 관계형 데이터베이스의 기본 키를 객체의 필드에 저장하는 것이 전부다. 식별자 필드의 기본 개념은 아주 간단하지만 상당히 많은 복잡한 사항이 연관돼 있다. 키 선택 : 첫 번째 문제는 데이터베이스에 있는 어떤 종류의 키를 선택하느냐다. ..
-
엔터프라이즈 애플리케이션 아키텍처 패턴 1 - 계층 구조책책책 책을 읽읍시다/프로그래밍 2023. 3. 12. 01:31
저자 : 마틴 파울러 옮긴이 : 최민석 들어가며 흔히 접하는 디자인 패턴이 프로젝트의 수많은 코드 중 특정 문제를 다루기 위한 것이라면 이 책에 나오는 패턴들은 그보다 광범위하게 애플리케이션의 전반적인 문제를 다룬다. 전자의 해결 대상은 나무이고 후자의 것은 숲이다. 그리고 여기서 고민한 패턴들 대부분이 현재에는 프레임워크에 녹여져 있다. 초반부 내용은 JPA와 이를 구현한 Hibernate같은 ORM 기술에 적용되어 있고, 중반부는 MVC 프레임워크에서 찾아볼 수 있다. 지금으로서는 당연한 기술이지만 당시에 치열하게 반복 작업을 줄이려는 노력과 추상화에 힘쓴 덕분에 이렇게 편리하게 개발할 수 있지 않나 싶다. 내용을 하나하나 정리하기에는 비슷한 내용이 많고, 저수준의 프레임워크적인 내용이라 현재도 잘 ..
-
SQL AntiPatterns : 개발자가 알아야 할 25가지 SQL 함정과 해법QL책책책 책을 읽읍시다/프로그래밍 2023. 2. 23. 15:58
저자 : 빌 카윈 옮긴이 : 윤성준 DBA가 아닌 프로그래머의 애플리케이션 개발 레벨에서의 자주 잘못 쓰는 SQL문 방식이나 테이블 설계에 대해 문제점과 대안을 제시하는 책이다. 어디서 봤더라. 2년전에 애플리케이션 개발하는데 SQL 종속적이지 않게 이끌어주는 책으로 잘 못 보아 구매했었다. SQL AntiPatterns가 아닌 Anti SQL Patterns로 잘 못 본 것이었다. 당시 있던 회사 서비스의 심각한 DB 종속적인 구조 때문에 스트레스를 많이 받았었고, 어떻게 뜯어 고칠까를 계속 고민했었다. 비즈니스 로직의 반이 쿼리나 스토어드 프로시저에 있었고, 자바는 이렇게 나온 데이터를 매핑해주는 역할에 그치는 경우가 많았다. 몇백줄에 이르는 쿼리나 프로시저 수정은 항상 부담이었고, 테스트는 더더욱 ..
-
오브젝트 6 - 다형성, 서브타이핑, 일관된 협력책책책 책을 읽읍시다/프로그래밍 2023. 2. 14. 23:29
다형성 다형성의 의미와 종류 다형성(polymorphism)이라는 단어는 그리스어에서 '많은'을 의미하는 'poly'와 '형태'를 의미하는 'morph'의 합성어로 '많은 형태를 가질 수 있는 능력'을 의미한다. 컴퓨터 과학에서는 다형성을 하나의 추상 인터페이스에 대해 코드를 작성하고 이 추상 인터페이스에 대해 서로 다른 구현을 연결할 수 있는 능력으로 정의한다[Czanecki00]. 간단하게 말해서 다형성은 여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법이라고 할 수 있다. 객체지향 프로그래밍에서 사용되는 다형성은 아래와 같이 4가지로 분류할 수 있다. 유니버설(Universal 매개변수(Parametric) : 제네릭 프로그래밍과 관련이 높은데 클래스의 인스턴스 변수나 메서드의 메개..