김상형의 SQL 정복 – 책 소개

‘초보 개발자’를 위한 SQL 핸드북 “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.” 도서 후기 데이터베이스에 관련된 책은 많다. 대학 강의 서적 처럼 모델링 같은 데이터베이스 이론에 집중된 책 부터 현업에 종사하는 DBA를 위해 DBMS를 매우 딥하게 알려주는 책 까지 데이터베이스에 관한 책은 많이 있다. 그리고 입문자를 위해 DBMS을 배제하고 SQL 문법만 소개하는 쉬운... » read more

JDBC의 Prepared Statement

NamedParameterJdbcTemplate NamedParameterJdbcTemplate query() 가장 정확한 사용법 Prepared Statement 일반 JdbcTemplate은 SQL을 실행할때 Prepared Statement 라는게 있는데,쌩 SQL을 사용하는게 아니라 SELECT * FROM user WHERE id = ? 이런식으로 일정 형식문자열로 SQL을 준비하는 것이다.저걸 Prepared Statement 라고 부른다.그러면, 저 쿼리를 DB가 받으면 무슨일을 하냐면. SQL을 파싱하여 대기 상태로 놓는다.→ 만약 기존에 동일한 SQL쿼리가 있었다면 그 쿼리캐시를... » read more

MyBatis와 Spring Boot (Annotation)

MariaDB Docker 설치 DBeaver 설치 DB 생성 boot 프로젝트 생성 mariadb driver setup application.properties insert하는 컨트롤러 작성 POST 테스트 Select기능 만들기 Mapper Controller GET 테스트 Insert 개선 보통 insert작업을 하면 0이나 1로 리턴값을 받기 보다는 전체의 값을 반환 받는다. 그러나 id의 경우 DB에서 auto increment기 때문에 별도의 작업이 필요하다. 객체를 그대로 반환하면 입력값 그대로 반환되지만... » read more

Database transaction

Transaction 트랜잭션의 개념 데이터베이스는 다수의 사용자가 동시에 사용하더라도 항상 모순이 없는 정확한 데이터를 유지해야 한다. 장애 상황에서 마찬가지다. DBMS는 데이터가 정확하고 일관된 상태를 유지할 수 있도록 다양한 기능을 제공하는데 그 중에 하나가 트랜잭션이다. 트랜잭션은 한 작업을 수행하는 데 필요한 데이터베이스의 연산들을 모아놓은 것으로 데이터베이스에서 논리적인 작업의 단위가 된다. 장애 발생시 복구하는 작업의 단위도 된다. 트랜젝션의... » read more

Database normalization

Normalization 정규화는 데이터베이스를 설계한 후 설계 결과물을 검증하기 위해 사용하기도 한다. 잘못 설계된 데이터베이스는 이상현상이 발생할 수 있다. 이상 현상 Insertion anomaly 삽입 이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 위 릴레이션에서 새로운 tuple을 삽입하려면 이벤트번호과 당첨여부까지 삽입해야 하는 이상현상. 갱신 이상 중복 tuple 중 일부만 변경하여 데이터가 불일치하게 되는 모순의... » read more

ERD and relation model conversion

데이터베이스 설계는 사용자들의 요구사항을 고려하여 데이터베이스를 생성하는 과정이다. 데이터베이스에 실제로 데이터가 저장되기 시작하면 구조를 변경하기 매우 어렵다. 저장된 데이터와 설계된 구조를 모두 지우고 데이터베이스 scheme을 재작성 해야하는 것은 물론, 어플리케이션에서 데이터베이스에 접근하는 코드 역시 수정이 필요하기 때문이다. 많은 라이브에서 데이터베이스에서 계속 사용중이기 때문에 일관성과 무결성을 지키며 무중단으로 migration 하는 것은 어렵다. RDB모델을 기반으로 두고 데이터베이스를... » read more

Relation Data Model

Relation Data model 릴레이션의 예시 Attribute 속성 : 각 데이터를 의미하는 이름 Tuple 투플 : entity instance, record. Domain 도메인 : 속성의 타입을 의미한다. 예를들어 age는 int로 정의할 수 있다. Null Degree 차수 : attribute의 갯수 여기서는 7개다 Cardinality 카디널리티 : tuple(entity instance)의 갯수 Relation의 특징 Tuple의 유일성 : 하나의 relation에는 동일한 tuple이 존재 할... » read more

Entity-Relationship model

Data modeling 데이터 모델링의 과정 개념적 모델링 : 추상화 과정을 통해 중요한 데이터를 추출해 나열한다. 논리적 모델링 : 나열한 데이터의 구조를 결정하고 표시한다. 이 과정을 굳이 분리하지 않고 데이터 모델링으로 이야기한다. 데이터 모델의 구성 데이터 모델은 데이터 모델리의 결과물을 표현하는 도구. 개념적 데이터 모델 : 사람이 이해할 수 있는 모델링을 통해 개념적 구조로 표현 논리적... » read more

NoSQL의 의의

NoSQL의 등장 배경 RDB는 오랜시간 대표적인 DBMS의 자리를 지켜왔다. 그러나 소셜서비스의 규모가 커짐에 따라 비정형 데이터를 이용하고자 하는 빅데이터 개념과 인프라 에코시스템도 클라우드 컴퓨팅의 바람이 불어오면서 기존의 RDB가 가진 단점들이 부각되기 시작했다. RDB를 유지하면서 스케일업 하는것은 한계가 있기 때문이다. 시대적 흐름이 NoSQL의 등장을 이끌었다. RDB의 특징인 ACID 일부를 포기 하고 스키마를 없앴다. 이로인해 비정형 데이터를... » read more

Database; 모델링 #2

오늘 한 것 1. 미디어 관련 모델링 #2 (MongoDB) 위와 같이 미디어 타입으로 언급된 것은 다음과 같은 고민이 있기 때문이다. 미디어와 글을 같은 타입으로 볼 것인가 → 전통적인 CMS와 다르게 모든 글을 가지고 올 때 개별 사진을 같이 가지고 왔으면 좋겠다. 즉, 글이 주가되는 CMS가 아니라 사진이 주를 이루는 CMS. 미디어에 캡션을 얼마나 부착할 것인가... » read more