전체보기(194)
-
MVCC
동시성 제어 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미합니다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 되며 이를 그래프로 나타내면 아래와 같습니다. 다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공합니다. 이렇게 동시성을 제어하는 방법에는 비관적 동시성 제어와 낙관적 동시성 제어가 있습니다. 비관적 동시성 제어 사용자들이 같은 데이터를 동시에 수정할 것이라고 가정 데이터를 읽는 시점에 Lock을 걸고, 트랜잭션이 완료될 때까지 이를 유지 SELECT 시점에 Lock을 거는..
2020.06.26 -
DB Index
DB Index란 DB Index는 데이터베이스 분야에 있어서 테이블에 대한 동작 속도를 높여주는 자료 구조를 말합니다. 인덱스는 테이블 내 1개 이상의 컬럼을 이용하여 생성할 수 있습니다. 인덱스는 주로 특정 값을 가지고 있는 컬럼 혹은 값을 빠르게 찾기 위해서 사용됩니다. 인덱스가 이용되지 않은 데이터베이스는 데이터를 검색할 때 전체 테이블에 걸쳐서 검색하기 때문에 테이블이 크면 클 수록 비용이 엄청나게 늘어납니다. 만약 테이블이 특정 컬럼에 대한 인덱스를 가지고 있다면, 모든 데이터를 조사하지 않고도 데이터 파일의 중간에서 검색 위치를 빠르게 잡아낼 수 있습니다. 이러한 Index는 Tree 구조로 이루어져 있습니다. 일반적으로 RDBMS에서 사용하는 Index는 B+ Tree라는 구조를 사용하고 ..
2020.06.19 -
Trigger
Trigger는 데이터베이스 내부의 특정 테이블에 INSERT, DELETE, UPDATE와 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 수행되는 저장프로시져입니다. 즉, 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징입니다. 예를 들어, [사원]테이블에 새로운 데이터가 들어오면 [급여]테이블에 새로운 데이터를 자동으로 생성하고 싶을 경우, [사원] 테이블에 트리거를 설정하여 구현할 수 있습니다. Trigger의 성능 오버헤드가 적음 Trigger를 실행하는데 걸리는 대부분의 시간은 다른 테이블을 참조하는데 사용 Trigger에 의해 참조되는 다른 테이블의 위치가 작업 시간을 결정 지음 Trigger의 제한 Trigger는 트래잭션 제어문을 사용..
2020.06.18 -
Apache Section 설정
파일 시스템 섹션 지시어에 포함된 지시어들은 지정한 파일 시스템 디렉토리와 그 하위 디렉토리에 적용됩니다. .htaccess 파일을 이용해도 결과는 똑같습니다. 다음 설정을 예로 들면, /var/web/dir1 이하 디렉토리에서 디렉토리 지시어 적용이 됩니다. Options +Indexes 지시어에 포함된 지시어들은 어떤 디렉토리에 있는지 관계 없이 지정한 이름을 가진 파일에 적용됩니다. 다음 예시를 보면, 파일이 어느 디렉토리에 있는지와 관계 없이 private.html이란 이름을 한 파일의 접근을 거부합니다. Require all denied 는 정규 표현식을 이용해 디렉토리에 대한 설정을 적용합니다. 다음 예시를 보면, '/www/' 디렉토리 하위의 숫자 3개로 구성된 이름의 모든 디..
2020.06.15 -
Spring Boot
Spring Boot란 Spring Boot는 자주 사용하는 프로젝트 조합을 미리 만들어 Spring을 더욱 쉽고 간단하게 사용하기 위해 만들어진 Java Framework의 Project입니다. Spring이 지원하는 라이브러리, 하위 프로젝트들이 늘어나면서 무거워지고 초기 설정이 많아 프로젝트 초기 설정을 할 때 많은 어려움이 있었습니다. 이러한 어려움을 해결하기 위해 만들어진 것이 Spring Boot입니다. Spring Boot는 최소한의 초기 Spring 구성으로 가능한 빠르게 시작하고 실행할 수 있도록 설계되었습니다. Spring Boot의 특징 CoC(Convention over Configuration) 웹 어플리케이션을 개발하고자 할 때 일일이 관련 라이브러리를 찾아 추가할 필요 없이 s..
2020.06.09 -
Apache ErrorDocument 설정
Apache 서버를 운영 중에 오류가 발생했을 때, 404 not foud error, 500 Internal Server Error 등의 에러 메시지가 그대로 노출됩니다. 개발 시 에러 메시지가 노출되면 오류 메시지를 바로 확인 가능하기 때문에 개발하는 입장에서는 수정 개발이 용이한 장점이 있습니다. 하지만 시스템 운영 시에는 일반 사용자가 알 수 없는 에러 메시지를 볼 필요가 없습니다. 또한 오류 발생 시 서버 경로도 노출되기 때문에 프로그램을 조금이라도 아는 사람이 의도치 않은 경로로 접속할 수도 있습니다. 이러한 상황을 방지하기 위해서는 오류 발생 시에 개발자가 의도한 화면이 보여지도록 처리해야 합니다. 이러한 처리는 Apache의 기본 설정을 해주는 httpd.conf 파일에서 할 수 있습니다...
2020.06.09