
📖성능 데이터 모델링의 개요 성능 데이터 모델링의 정의 일반적으로 성능이라고 하면 데이터 조회의 성능을 의미함. (데이터 입력, 수정, 삭제는 일시적이고 빈번하지 않고 단건 처리가 많은 반면 데이터 조회의 경우 반복적이고 빈번하며 여러 건을 처리하는 경우가 많기 때문) 성능 데이터 모델링이란 데이터 베이스 성능 향상을 목적으로 설계 단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다. 성능 데이터 모델링 수행 시점 프로젝트 수행 중에 있어 사전에 할수록 비용이 들지 않는다. 특히 분석&설계 단계에서 데이터 모델 성능을 고려한 데이터 모델링을 수행할 경우 성능 저하에 따른 재업무(Rework) 비용을 최소화할 수 있다. 분석&설계 단계에서 데이터베이스 처리 성능..

데이터 모델링의 이해 모델링의 정의 Webster 사전 복잡한 현실 세계를 단순화시켜 표현하는 것. 모델이란 사물 또는 사건에 관한 양상(Aspect)이나 관점(Perpective)을 연관된 사람이나 그룹을 위하여 명확하게 하는 것. 모델링의 특징 추상화, 단순화, 명확화 정보 시스템 구축에서는 모델링을 계획, 분석, 설계할 때 업무를 분석하고 설계하는데 이용하고 이후 구축, 운영 단계에서는 변경과 관리의 목적으로 이용. 모델링의 세 가지 관점 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지, 데이터간의 관계는 무엇인지에 대해 모델링하는 방법 프로세스 관점 : 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야하는지를 모델링하는 방법 데이터와 프로세스의 상관관점 : 업무가 처리하는 일의 방법에 따라..

💡구현 목표 영화(Movie)와 회원(Member)이 있고 회원이 영화에 대한 리뷰(Review)를 기록하는 시나리오를 기반으로 프로젝트를 구성함. 한 편의 영화는 여러 회원의 평가가 행해질 수 있다. 한 명의 회원은 여러 영화에 대해 평점을 줄 수 있다. 💡다대다 관계의 특징 다대다 관계(M:N)는 논리적 설계와 실제 테이블 설계가 다르게 됨. 영화 엔티티와 회원 엔티티는 양쪽 모두 독립적인 엔티티로 설계가 가능함.(대부분 명사인 경우) 사람에 해당하는 회원 입장에서는 여러 편의 영화를 평가한다는 구조가 됨. 영화 입장에서는 한 편의 영화는 여러 회원이 존재한다는 관계가 성립하게 됨. 다대다(M:N)를 해결하기 위해서는 실제 테이블 설계에 매핑(mapping) 테이블을 사용함. (=연결 테이블) 여기에..

🤍MariaDB 설치와 데이터베이스 생성 MariaDB는 MySQL과 거의 동일한 기능을 제공하면서 완전한 오픈 소스라는 장점이 있다. MariaDB를 통해 상용화된 서비스를 개발하고 운영하여도 라이센스 비용 걱정X, AWS와 연동 시에도 최소한의 비용으로 운영이 가능함. 1. 먼저 MariaDB를 설치해 준다. 나는 이미 설치되어 있어서 이 과정은 생략했다. 2. ROOT 계정 패스워드 기억하기, UTF-8 세팅 중요!! 3. HeidiSQL 프로그램을 실행해서 ROOT 계정 정보를 입력 후 접속 4.신규 데이터베이스를 bootex라는 이름으로 생성한다. 5. 사용자 인증 및 권한 관리를 선택 후, bootuser라는 이름으로 계정을 생성하고 해당 데이터베이스에 모든 권한을 추가하고 저장한다. 🤍Spr..

12월 중순부터 2월말까지 열심히 학원 팀프로젝트를 진행했다. 진행하면서 느낀 점은 웹 개발과 DB가 정말 뗄레야 뗄 수 없는 관계구나...생각했다...ㅎㅎ 코드 한줄 한줄 짜는 것만큼 쿼리문 한줄 한줄 짜는 것도 정말 어렵고 복잡했는데 스프링부트에서는 JPA라는 새로운 데이터베이스 기술을 사용하고 있다고 한다. 쿠팡, 우아한형제들 등 자사 서비스를 개발하는 곳에서는 SpringBoot&JPA를 전사 표준으로 사용하고 있다고 한다. 🤍JPA란? 기존 데이터베이스 방식은 객체지향 프로그래밍에서 조금 벗어난, 데이터베이스 모델링에만 집중하는 방향이었다. JPA는 이런 문제점을 해결하기 위해 등장했다. 관계형 데이터베이스 - 객체지향 프로그래밍 언어 2개 영역을 중간에서 패러다임 일치를 시켜주기 위한 기술. ..

계층형 질의(Hierachical query) 1. 계층형 질의 -테이블에 계층형 데이터가 존재하는 경우 조회하기 위해 계층형 질의를 사용 -계층형 데이터 : 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말함. 쉽게 말해서 학교 데이터를 조회하면 6학년부터 1학년 순서로 혹은 1학년부터 6학년 순서로 조회하는 것.... 2. 오라클 계층형 SQL select from table wher start 조건: 계층 구조 전개의 시작 위치를 지정하는 구문. 루트 데이터 지정함. connect by prior A and B: connect by -전개될 자식 데이터를 지정하는 구문. prior (PK,자식) = (FK, 부모) -계층 구조에서 부모 데이터에서 자식 데이터 방향으로 전개 prior..

세션(Session) 1. 세션 1)클라이언트가 서버에 접속해있는 동안 그 상태를 유지하는 것이 목적임. 2)웹 브라우저를 통해 서버 접속 => 처리 => 웹 브라우저를 닫아 서버와의 접속을 종료하는 하나의 단위를 세션이라고 한다. 3)HTTP는 기본적으로 일회성 연결 -> 웹 클라이언트 하나하나를 기억할 수 없다. 개인화된 서비스를 제공하려면 웹 클라이언트를 웹 서버에서 인식하고 있어야 한다. =>웹 클라이언트가 '내가 누구다'라는 데이터를 요청마다 실어보내야 한다. 2. 세션 설정 확인 Dynamic Web Project 생성 시 Generate web.xml deployment descriptor 체크 web.xml에 세션 유효 시간 설정 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..
DataSource 이용해 데이터베이스 연동 1) ConnectionPool 등장 배경 -애플리케이션에서 DB 연결 과정에 시간이 많이 걸림(기존 연동 방법 문제점) ==>미리 Connection 객체를 생성한 후 미리 데이터베이스 연결을 맺음, 애플리케이션은 DB 연동 작업 발생시 이 Connection 객체를 이용해서 작업. 2)JNDI(Java Naming and Directory Interface) -필요한 자원을 키/값(key/value)쌍으로 저장한 후 필요할 때 키를 이용해 값을 얻는 방법. -커넥션 풀에 적용 -톰캣 컨테이너가 ConnectionPool 객체를 생성하면 이 객체에 대한 JNDI 이름(key)을 미리 설정해놓음. -그러면 웹 애플리케이션에서 DB와 연동 작업할 때 이 JNDI..