프로그래밍 175

[데이터베이스] 트랜잭션에 대해서

트랜잭션이란 하나의 논리적인 작업 단위를 이루는 여러 연산들의 집합을 말한다. 예를들어, 한 계좌의 돈을 다른 계좌로 이체하는 계좌 이체 작업은 각 계좌의 잔고를 변경하는 두 개의 갱신 연산으로 구성되어있는 하나의 트랜잭션이다. 트랜잭션이 지녀야할 기본 속성 (ACID 성질) Atomicity (원자성) 어떤 오류가 발생했을 경우에는 미완료된 트랜잭션이 부분적인 영향까지 모두 되돌려야 한다. 즉 트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 한다. 일부만 수행된 상태가 되어서는 안됨 -> all or nothing 원자성을 보장하기 위한 아이디어는 데이터베이스 시스템이 트랜잭션이 갱신하는 데이터의 예전 값을 기록하는데 이 정보는 로그(log)라고 불리는 파일에 기록된다. Consistency ..

[IntelliJ] 스프링 프로젝트 초기 세팅하기 - (1)

인텔리J를 실행한다. 처음 new Project를 선택 후 Maven을 골라준다. 넥스트 때린다. groupId와 artifactId는 본인이 원하는 대로 우측 하단에 메이븐 자동추가할 것인지를 묻는다. 할 때마다 build하기 귀찮으므로 오토로 해준다. 그리고 pom.xml에 스프링에 관련된 dependency들을 추가해준다. org.springframework spring-webmvc 4.3.1.RELEASE org.springframework spring-web 4.3.1.RELEASE javax.servlet servlet-api 2.5 그럼 이렇게 External Libraries에 자동으로 jar파일들이 들어오게 된다. File -> Project Structure로 들어간다. Facets에 ..

IntelliJ에서 JDBC 테스트하기

JDBC (Java Database Connectivity)의 정의 - 자바를 이용한 데이터베이스 접속과 SQL문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법과 절차에 관한 규약- 자바 프로그램내에서 SQL문을 실행하기 위한 자바 API- SQL 과 프로그래밍 언어의 통합 접근 중 한 형태 JDBC를 이용한 데이터베이스 연결 방법 import java.sql.* -> 드라이버 로드 -> Connection객체 생성 -> Statement 객체를 생성 및 질의 수행 -> SQL문에 결과물이 있다면 ResultSet 객체 생성 -> 모든 객체 닫기 코드를 보면서 살펴보자. 인텔리제이를 실행시킨다. 이클립스에서 해도 상관없다. 자바 프로젝트를 하나 생성한다. 그리고 데이터베이스 드라이..

[네트워크] TCP 멀티플렉싱 이해하기

멀티플렉싱이란? 하나의 통신 채널을 통해서 둘 이상의 데이터를 전송하는데 사용되는 기술이다. 기본적으로 멀티플렉싱이란 여러 개를 하나로 묶어 다중화 시킨다는 뜻이다. 코드에서 볼 것은 여러 개의 channel을 하나로 묶어서 사용하는 것인데, 이 방법을 입출력에 적용한다. 여기서 입출력 버퍼를 사용하게 된다. Blocking mode로 동작하는 것들과는 달리 멀티플렉싱은 Non-Blocking Mode로 동작하게 된다. I/O blocking : I/O의 효율을 높이기 위해 디스크에서 읽어오는 data를 운영체제의 kernel 버퍼 에 저장한 후, 버퍼가 꽉 차면 프로세스의 버퍼로 옮기는데, data가 kernel 버퍼로 저장되는 동안 프로세스의(정확하게는 I/O를 요청한 thread가) blocking..

[오라클] DDL & DML

DDL 예제를 돌려보자. 기본 생성된 베이스테이블과 데이터는 http://pjh3749.tistory.com/156 여기서 sql파일을 받아서 developer에 때려넣자. create table history1 as select * from emp 데이터도 이렇게 똑같이 복사된다. 그렇다면 안의 데이터는 없이 그냥 테이블만 복사하려면 어떻게 해야할까? create table history2 as select * from emp where 1=0 이렇게 칼럼만 있고 데이터는 복사가 되지 않음을 알 수 있다. # 테이블 구조 살펴보기 desc history1 # 제약 조건 Constraint Database에 테이블 레벨에서 특정한 규칙을 설정해둠예상치 못한 데이터의 손실이나 일관성을 어기는 데이터의 추가..

[소프트웨어공학] 프로젝트 관리와 비용추정

소프트웨어 관리는 소프트웨어 공학의 필수적인 부분이다. 좋은 관리라고 해서 프로젝트의 성공을 보장할 수는 없다. 그러나 나쁜 관리는 프로젝트를 실패로 이끈다. 소프트웨어 관리자는 프로젝트 개발을 계획하고 일정을 관리하는 책임을 진다. 소프트웨어 관리자는 다른 공학과 구별된다. 1. 소프트웨어 제품은 형태가 없다. 소프트웨어 제품 관리자는 프로젝트 진척사항을 볼 수 없다. 그들은 프로젝트 진척사항을 점검할 수 있는 문서를 생성하는 사람에게 의존한다. 2. 표준화된 프로세스가 없다. 소프트웨어 프로세스는 조직에 따라 매우 가변적이다. 3. 대규모 소프트웨어 프로젝트는 대개 일회성(one-off)프로세스이다. 대규모 소프트웨어 프로젝트는 대개 어 방향에서 이전 프로젝트와 다르다. 이런 문제 때문에 소프트웨어 ..

[오라클] Grouping 과 Subquery

저번 시간에 Aggregation 을 했는데 이것은 집계함수라고도 하며 이 결과는 하나의 row만 남게 된다. 그러므로 Grouping을 해주어야 같이 쓸 수 있다. # Grouping 이렇게 deptno로 grouping을 해주면 AVG를 쓰는데 문제가 없다. SELECT job, avg(sal), max(sal), min(sal) FROM emp GROUP BY job 직업별 평균 월급과 최대월급 최소월급을 구하고 싶다. 저 뒤에 group by를 써주지 않는다면 이렇게 sql에러가 날 것이다. ORA-00937: 단일 그룹의 그룹 함수가 아닙니다 00937. 00000 - "not a single-group group function" select deptno, count(*) from emp gr..

[오라클] Join문과 Aggregation

이전에는 select에 대해 자세히 알아보았다. 그 때에 쓴 테이블들을 똑같이 써서 join문을 공부해보자. Join 조인이란 둘 이상의 테이블을 합쳐서 하나의 큰 테이블로 만드는 방법 필요성 : 관계형 모델에서는 데이터의 일관성이나 효율을 위하여 데이터의 중복을 최소화한다. fk를 이용하여 참조한다. 여기서 테이블부터 만드는 과정이 초반에 있으므로 파일을 다운받고 참조해서 테이블을 셋팅하자. http://pjh3749.tistory.com/156 그럼 시작하기 전에 emp테이블과 dept테이블의 칼럼부터 확인해보자. emp테이블 dept테이블 그리고 어떤 join들이 있는지 살펴보자. Cross Join (Cartesian Product) : 모든 가능한 쌍이 나타남 Inner Join : Join 조..

[소프트웨어공학] Agile Software Development (애자일 개발 방식)

Agile Software Development Agile : 기민한, 민첩한 애자일 개발 방식에 대해 알아보자. 개념은 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 방법과 지나치게 많은 개발 방법들에서 중간점을 찾고자 하는 방법론이다. 기존의 폭포수모델 같은 전통적인 방법론과의 차이는 less-document-oriented 즉, 문서를 통한 개발 방법이 아니라 code-oriented인 실질적인 코딩을 통한 방법론이다. ● "Rapid" development and delivery is now often the most important requirement for software systems. 비지니스 변화가 빠르고, 요구사항의 변화가 빈번하므로 안정적인 소프트웨어 요구사항을 생성해 내는것이..

[ERD] eXERD 설치와 회원가입 모델링 하는 법

eXERD 는 경력자 뿐만 아니라 초보자도 데이터베이스 설계를 직관적이고, 쉽고, 빠르게 하도록 개발된 이클립스 기반 지능형 모델링 도구이다. 여러 DBMS를 지원한다. Oracle, MS SQL, IBM DB2, PostgreSQL, MySQL을 대상으로 포워드/리버스 엔지니어링을 지원한다. ui도 깔끔하고 직관적이고 매우 좋은 툴이다. 그리고 공부용으로는 무료이다. 당연히 기업유저는 돈을 내야한다. 홈페이지에 들어가서 개인 사용자 무료다운로드를 클릭하여 다운로드를 받자. http://ko.exerd.com/ 다운로드를 클릭하여 개인 사용자를 받아서 설치를 진행한다. 여기서 팁은 저기 설치경로를 C던 D던 편한곳에 exerd폴더를 하나 만들어서 설치를 한다. 그리고 나중에 밑에 처럼 workspace를..

반응형