SELECT thread_id, name, type, processlist_user, processlist_host FROM performance_schema.threads ORDER BY type, thread_id; 1) MySQL 엔진 아키텍처 MySQL은 C API, JDBC, ODBC, .NET 표준 드라이버를 제공하며 각종 언어를 지원한다. MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분할 수 있다. ● MySQL 엔진 클라이언트로부터 접속 및 쿼리요청을 처리하는 커넥션 핸들러와 SQL파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 주로 이룬다. MySQL은 표준 SQL 문법 (ANSI SQL)을 지원하기 때문에 타 DBMS와 호환된다. ● 스토리지 엔진 MySQL..
1. 사용자 식별 MySQL의 사용자는 사용자의 접속지점 (클라이언트가 실행된 호스트명 혹은 도메인 또는 IP 주소)이 계정의 일부가 된다. 'cdt'@'127.0.0.1' 이면 서버와 같은 IP에서 cdt라는 아이디로 접속할 수 있다는 것을 의미한다. 만약 모든 IP를 접속 허용 가능하게 하고 싶다면 'cdt'@'%' 로 진행하면 된다. 만약 'cdt'@'%'와 'cdt'@'192.168.0.1' 이있다면 우선 순위는 조금 더 명확한 주소를 가진 'cdt'@'192.168.0.1'로 접속을 시도하므로 유의하여야 한다. 2. 사용자 계정 관리 1) 시스템 계정과 일반 계정 MySQL은 SYSTEM_USER 권한 여부에 따라서 시스템 계정과 일반 계정을 구분한다. 일반적으로 시스템 계정은 데이터베이스 서버..
MySQL :: Download MySQL Installer 에서 용량이 큰 msi 파일을 다운을 받는다. 설치 파일을 실행 후 Custom을 선택하여 My SQL Server MySql Shell MySQL Router를 설치하자. 이후 설정들은 책에 나와있는데로 설정하고 설치하였다. windows에서는 cmd에서 MySql명령어를 치려면 환경변수를 등록을 해주어야한다. 내 PC 우클릭 -> 속성 -> 고급 시스템 설정 -> 환경 변수 -> 시스템 변수의 Path 수정 C:\Program Files\MySQL\MySQL Server 8.0\bin (사용자마다 다를 수 있음) 등록 하면 끝난다. 1) 초기화 책에서 첫부분에 알려주는 초기화를 진행한다. ##linux mysqld --defaults-fil..
프로그래머는 객체지향 프로그램을 작성하기 위해서 동적 모델과 정적 모델을 그려야 한다. 동적모델은 프로그램 실행 구조를 표현하는 움직이는 모델이며 객체와 협력 으로 구성되고 정적모델은 코드의 구조를 담는 고정 모델이며 타입과 관계로 구성된다. 동적모델을 토대 위에 정적 모델을 설계해서 변경에 유연한 코드를 만들어야 한다. 1) 동적 모델과 정적 모델 객체의 행동이 코드를 결정한다. 객체가 외부에 전달하는 행동이 중요하기 때문에 동적 모델이 정적모델을 결정하게 만들어야한다. 만약 정적 모델이 협력에 적합하지 않다면 정적 모델을 지속적으로 개선해야한다. 그러나, 객체가 제공하는 행동 측면에서 적절한 정적 모델을 고려하더라도 변경이 고려되지 않는다면 유지보수하기가 어려워진다. 2) 도메인 모델과 구현 도메인이..
1) 다양한 타입 계층 구현 ● 클래스를 이용한 타입 계층 구현 타입을 구현할 수 있는 방법이 단 한가지 방법만 존재하는 경우 타입과 클래스를 동일하게 취급한다. 만약 Car라는 클래스와 인터페이스는 동일하지만 다른방식으로 구현해야 하는 객체가 필요하다면 즉, 구현은 다르지만 동일한 타입으로 분류되는 객체가 필요하면 상속을 이용하면 된다. 그러나, 자식클래스를 부모 클래스의 구현에 강하게 결합시키기 때문에 구체 클래스를 상속받는 것을 피하고 추상 클래스, 인터페이스를 이용해야한다. 그리고 대부분의 언어에서의 클래스의 다중 상속을 지원하지 않기 때문에 다양한 타입으로 사용이 불가능하다. ● 인터페이스를 이용한 타입계층 구현 위에서 발생하는 다중 상속 지원하지 않는 문제와, 결합도 문제를 피할 수 있는 방법..
1) 협력과 계약 계약에 의한 설계 라이브러리를 사용한다면 Contract.Requires(IsSatisfied(schedule)); 와 같이 제약조건을 명시적으로 표기할 수 있다. 이는 주석과 다르게 시간의 흐름에 따라 같이 움직이며, 실행중에도 체크할 수 있다. 계약은 일반적으로 다음과 같은 특성이 있다. ● 각 계약 당사는 계약으로부터 이익을 기대하고 이익을 얻기 위해 의무를 이행한다. ● 각 계약 당사자의 이익과 의무는 계약서에 문서화 된다. 이 계약 이라는 아이디어를 통해 객체 협력 방식에 적용한 아이디어가 있다. 다음 내용을 살펴보자. 2) 계약에 의한 설계 계약의 의한 설계 개념은 "인터페이스에 대해 프로그래밍하라"는 원칙을 확장한 것이다. 다음 자바코드를 보자 가시성 / 반환 타입 / 메서..
1) 디자인 패턴과 설계 재사용 패턴의 분류 ● 아키텍처 패턴: 미리 정의된 서브 시스템을 제공, 각 서브시스템 책임을 정의, 서브시스템간 조직화하는 규칙과 가이드라인을 포함한다. - 소프트웨어의 전체적인 구조 결정 ● 분석 패턴: 업무 모델링 시에 발견되는 공통적인 구조를 표현하는 개념들의 집합 - 도메인 내의 개념적인 문제 해결에 초점 ● 디자인 패턴: 협력하는 컴포넌들 사이에서 반복적으로 발생하는 구조를 서술 - 특정한 설계문제를 해결하는 것을 목적으로 한다. ● 이디엄 패턴: 특정 언어에만 국한된 패턴으로 주어진 언어의 기능을 사용해 컴포넌트, 혹은 컴포넌트 간의 특정 측면을 구현하는 방법을 서술 - 객체가 스스로 자신을 참조하는 객체들의 개수를 카운트해서 더이상 참조되지 않을 경우 스스로를 삭제..
1) 핸드폰 과금 시스템 변경하기 기본정책을 추가하기 위해 BasicRatePolicy를 추상화(슈퍼타입)하고 FixedFeePolicy(고정요금) TimeOfDayDiscountPolicy(시간대별 요금) DayOfWeekDiscountPolicy(요일별 요금) DurationDiscountPolicy(구간별 요금) 을 서브타입으로 구현화 한다. 이 후 통화기간을 일자별로 정리하는 전문가 DateTimeInterval 와 각 구현된 요금정책 Policy 그리고 각 요금규칙 Rule이 요금을 계산해준다. 이때, 생겨나는 Rule을 주의해야한다. 클라이언트가 요구하는 슈퍼타입과 별개로 사전조건이 계속 추가되고 있다. 시간대별, 요일별, 구간별 -> 고정요금을 제외한 사전 조건이 다르다. 결국, 클라이언트는..