정규화 데이터 모델링에서 정규화(Normalization)는 가장 기초적이지만 필수적으로 이뤄져야 하는 작업이다. 성능상 문제로 반정규(Denormalization)를 하기도 하지만, 정규화가 왜 필요한지는 필수적으로 알아야 한다. 예를들어서, 연락처 정보를 저장하는 데이터베이스를 구축한다고 생각해보자. 아래와 같이 구축할 수 있다. 1. 제 1 정규형 : 모든 속성은 받드시 하나의 값을 가져야 한다. * 문제 발생 - 연락처 정보에서 집전화, 핸드폰 번호 구별 어려움 - 원하는 속성 값을 추출하기 어려움 - tel을 검색조건으로 검색할 경우, WHERE TEL LIKE '%011-1234-3333%'
1. 도커파일(Dockerfile) Dockerfile은Docker 에서 이미지를 생성하기 위한 용도로 작성하는 파일이다. 도커 이미지에 대한 정보를 기술해 둔 템플릿이라고 보면된다. Dockerfile에는 컨테이너에서 수행해야할 작업들을 명시한는데, 이 작업을 Dockerfile에 정의하기 위해서는 Dockerfile에서 쓰이는 명령어를 알아야 한다. - Docker 공식 문서 확인 docker build [옵션] [작성한 docekrfile 경로] 2. 도커파일 예시 실습 * docker file 생성 - /home/vagrant/dockerfile FROM centos:7 RUN touch /tmp/test.txt RUN echo hello centos RUN sleep 2s RUN cal * do..
1. 컨테이너로부터 도커 이미지 만들기 docker container commit [옵션] 컨테이너 식별자 [이미지[:태그명]] ex) docker container comit [ -a "hong kildong] " [kildong/]test_image[:1.0] 생성된 도커이미지의 메타 데이터는 docker image inspect 로 확인할수 있다 컨테이너 실행후 변경된 부분은 docker container diff 명령으로 확인할수 있다. docker container diff container이름 2. 컨테이너를 tar 파일로 출력 docker container export httpd > httpd.tar tar -tf httpd.tar 명령어로 확인 tar 파일로 부터 docker image 생..
Docker 컨테이너(container)는 격리된 환경에서 돌아가기 때문에 기본적으로 다른 컨테이너와의 통신이 불가능하다. 하지만 여러 개의 컨테이너를 하나의 Docker 네트워크(network)에 연결시키면 서로 통신이 가능해진다. 또한 보안상으로 격리 시키는게 좋기 떄문에 사용자들은 DB를 아예 접근 하지 못하도록 설정해놓고 Apache Container가 DB에 접근하도록 한다. 이렇게 해야 보안적으로 안전하다. 실제 서비스는 아래와 구조와 같다고 보면된다. 아래에서 이런 환경을 어떻게 만드는지 살펴보겠다. 1. Apache Container 올림 vagrant@ubuntu:~$ docker run -d --name=apache httpd 2. OS 올림 (바로꺼지지 않도록) vagrant@ubun..
도커를 사용하는 이유? 도커는 컨테이너 가상화 기술을 제공하여 애플리케이션을 가볍고 빠르게 배포 및 실행할 수 있도록 도와줍니다. 이를 통해 다음과 같은 이점을 얻을 수 있습니다. 1) 일관성 있는 환경 구성 도커는 애플리케이션을 동일한 환경에서 실행하므로, 시스템 구성이 달라지더라도 애플리케이션의 동작이 예측 가능합니다. 이를 통해 애플리케이션 배포와 관리를 단순화할 수 있습니다. 2) 빠른 배포 도커는 애플리케이션을 컨테이너로 패키징하므로, 이를 호스트 운영체제와 독립적으로 배포할 수 있습니다. 도커는 이미지 내용을 레이어 단위로 구성하며, 중복되는 레이어를 재 사용할 수 있어서 애플리케이션 배포가 매우 빠르다. 이를 통해 배포 속도를 높이고, 문제가 발생했을 때 롤백이 빠르게 이루어질 수 있습니다...
도커 환경 구성 가성머신 설치 리눅스 - centos 7버전 이상 / ubuntu 18.04 ~ 22.x 버전 이상 사용 Ubuntu Bionic 18.04 (LTS) https://docs.docker.com/engine/install/ubuntu/ https://www.virtualbox.org/wiki/Download_Old_Builds - virtualbox 다운로드 https://hub.docker.com/ vagrant 설치 https://www.vagrantup.com/ => AMD64 다운로드 다운로드 후 버전 확인 vagrant image 를 활용하여 docker 설치 mswindow 에서 powershell 실행후 임의의 디렉토리 생성후 아래처럼 파일 다운로드 wget http://tw..
📋 Oracle Partition Table Partition -오라클 파티션테이블은 하나의 큰 테이블을 물리적으로 나눠놓은 것입니다. -물리적으로 나눠놨지만, 논리적으로는 하나의 테이블로 간주됩니다. -왼쪽 그림처럼 Sales 테이블에 1월데이터부터 5월데이터까지 하나의 통테이블에 몰아서 넣을수 있습니다. -하지만, 파티션테이블을 사용하게되면 오른쪽 그림처럼 월마다 다른 세그먼트에 Sales 데이터를 나눠서 넣을 수 있습니다. -이렇게 나눠서 넣어놔도 사용자는 1월~5월치 데이터가 마치 하나의 Sales 테이블에 들어있는 것처럼 사용할 수 있습니다. -오라클에서는 Object, Segment 라는 개념을 사용합니다. 저장공간을 가지는 개념이 Segment 에 해당합니다. -즉, 위 파티션된 Sales ..
1. pwd (print working dierctory) : 현재 작업중인 디렉토리 정보 출력 $ pwd 2. cd (Change directory) : 경로이동, 상대 경로, 절대 경로 이동 가능 $ cd .. $ cd /home/test/work 3. ls (list) -- $ ls [옵션] [파일/디렉토리] -l : 파일들을 나열할때 자세히 출력한다. -a : 경로안의 모든 파일을 나열한다.(숨김파일도 포함) -R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력한다. -h : 파일크기를 해석파기 편하게 출력한다. -r : 출력 결과를 내림차순으로 정렬한다. -t : 출력 결과를 파일이 수정된 시간을 기준으로 정렬한다. $ ls -l 파일에 대한 정보를 자세하게 보여준다. 사용자의 권한, 소..
불필요한 NVL 피하기 * NULL value에 대한 오류를 방지하기 위하여 불필요한 NVL 함수를 사용하여 DBMS의 부하 유발함. # (1) NVL() : 100 + NVL() : 100 + SUM() : 1 = 201번 SELECT SUM(ISNULL(COL1, 0) + ISNULL(COL2, 0)) FROM TABLE_A; # (2) SUM() : 1 + SUM() : 1+NVL() : 2 = 4번 SELECT ISNULL(SUM(COL1),0) + ISNULL(SUM(COL2, 0) FROM TABLE_A; > (1)의 경우 함수사용 횟수는 NVL() : 100 + NVL() : 100 + SUM() : 1 = 201번 > (2)의 경우 함수사용 횟수는 SUM() : 1 + SUM() : 1+N..
Oracle 데이터베이스는 HTTP Listener Port 번호가 8080으로 기본으로 되어 있어 Apache tomcat 과 충돌하는 경우가 발생한다. 따라서 포트 번호를 변경해주는게 좋다. 1) sqlplus 접속 2) conn system - system 으로 접속한다. - 설정한 비밀번호 입력 3) exec DBMS_XDB.SETHTTPPORT("원하는 포트 번호"); "PL/SQL 처리가 정상적으로 완료되었습니다." 가 뜨면 정상적으로 포트번호가 바뀐것이다.