전체 글
-
도커와 쿠버네티스STUDY/Docker 2022. 10. 25. 23:59
애플리케이션 배포 환경 변화 Traditional Deployment(전통적 배포)는 오래전부터 쓰이던 가상화 이전 방식이다. 물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러가지 프로그램을 설치하는 방식이다. 가장 오래되고 단순한 방식이며 단일 목적 시스템이라면 별 무리가 없다. 하지만 이 방식은 한 대의 컴퓨터에서 모든 것을 처리하므로, 어떤 프로그램의 동작이 다른 프로그램의 동작을 간섭하거나, 특정 프로그램이 성능을 독점할 경우 또 다른 프로그램의 성능이 떨어지는 단점이 존재한다. 이에 대한 해결책은 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 것이 있다. 하지만 이 방법은 많은 비용이 든다. 이 문제를 해결하기 위해 등장한 것이 Virtualized Deployment(가상화 배포)이..
-
마이크로서비스 아키텍처STUDY/Docker 2022. 10. 18. 22:09
이전 애플리케이션 구축 방식에서는 모놀리식 아키텍처에 중점을 두었는데, 모놀리식 아키텍처는 애플리케이션에서 구축 가능한 모든 부분이 하나의 애플리케이션에 포함하는 방식이다. 이 방식의 단점은 애플리케이션이 커질수록 새로운 문제를 해결하고 새로운 기능을 추가하는 것이 어려워진다는 것인데, 이를 해결하기 위해 등장한 것이 마이크로서비스 아키텍처이다. 마이크로서비스 아키텍처는 시스템 전체가 하나의 목적을 지향하는 것은 모놀리식 아키텍처와 동일하지만 개별 기능을 하는 작은 서비스를 각각 개발해 연결하는 데 차이가 있다. 애플리케이션을 상호 독립적인 최소 구성 요소로 분할하는 방식으로, 모든 요소가 독립적이며 연동되어 동일한 테스크를 완수한다. 보안, 인증 등과 관련된 기능이 독립된 서비스를 구성하고 있으며 다른..
-
개발자를 위한 인덱스 생성과 SQL 작성 노하우 : 22-24STUDY/DB 2022. 8. 30. 21:16
- 오라클 에러 메시지 1. "ORA-00001: 유일성 제약조건에 위배됩니다" 테이블에 PK가 있거나 UNIQUE INDEX가 있을 때, 중복되게 INSERT 하면 발생한다. 2. "ORA-00942: 테이블 또는 뷰가 존재하지 않습니다" 개발자의 오타에 의한 경우가 가장 흔하지만, 실제로 테이블이 생성됐는지 확인이 필요하다. 또한 권한이 없을 때 발생하는 경우도 존재한다. 권한이 없는 경우에는 권한을 요청하거나 직접 권한을 부여할 수 있다. GRANT SELECT, INSERT, UPDATE, DELETE ON [테이블명] TO [유저명] 마지막으로 대소문자 사용에 의한 문제일 수 있다. 오라클은 대소문자 구분이 없으며 자동으로 테이블이 대문자로 생성되지만, 따옴표로 감싸서 소문자로 테이블을 생성할 ..
-
개발자를 위한 인덱스 생성과 SQL작성 노하우 : 18-20STUDY/DB 2022. 8. 15. 23:06
- 오라클 기능 1. FLASHBACK 오라클에서 삭제 혹은 갱신된 레코드는 commit 하기 전에는 rollback 명령어를 사용하면 원복이 가능했다. 만약 이미 commit 명령어가 실행돼 완전히 삭제 혹은 갱신됐다면, 지금까지는 레코드 원복이 불가능했지만, 오라클 10g 이후부터는 flashback 기능을 제공해 commit 이전 상태의 레코드도 조회할 수 있게 됐으며, 레코드 원복까지도 가능하다. commit/rollback 여부와 상관없이 한시적으로 데이터를 백업하는 기능을 지원해, 특정 시점의 데이터를 원복 가능하게 됐는데, flashback 기능은 오라클 서버에 부하를 주므로 사전에 설정된 제한 시간만큼만 지원된다. db_flashback_retention_target 에서 설정된 시간을 확..
-
개발자를 위한 인덱스 생성과 SQL작성 노하우 : 15-17STUDY/DB 2022. 8. 10. 22:24
- 유용한 오라클 힌트절 1. 접근 순서를 결정하는 힌트절 ORDERED : FROM 절에 나열된 테이블 순서대로 접근한다.(SQL문에 종속적) LEADING : 테이블 접근 순서를 명시적으로 표현한다.(SQL문에 독립적) SELECT /*+ ORDERED */ 컬럼들, ... FROM 고객 A, 주문 B WHERE A.고객번호 = B.고객번호 AND A.고객명 = ? AND B.주문일자 = ? SELECT /*+ LEADING(B A) */ 컬럼들, ... FROM 고객 A, 주문 B WHERE A.고객번호 = B.고객번호 AND A.고객명 = ? AND B.주문일자 = ? ORDERED 힌트절은 FROM절에 나열된 테이블 순으로 접근을 유도하지만, LEADING 힌트절은 테이블 접근 순서를 명시적으로..
-
개발자를 위한 인덱스 생성과 SQL 작성 노하우 : 12-14STUDY/DB 2022. 8. 1. 23:17
- 오라클의 조인 방식 관계형 데이터베이스에서 쿼리는 조인(Join) 없이 단독으로 사용하는 경우가 거의 없다. 대부분의 쿼리는 여러 테이블 간의 관계를 맻는 경우이고, 오라클의 조인은 이러한 테이블 간 관계에 있어서 어떤 방식으로 접근하는가에 대한 조인이다. 오라클에서의 조인은 방식에 따라 쿼리의 비용과 성능이 달라지기 때문에 중요하다. 조인 방식 Nested Loop Join : 순차적 루프에 의한 접근 방식, 소량 데이터 처리에 적합 Sort Merge Join : 정렬을 통한 접근 방식, 거의 사용하지 않음 Hash Join : 해시 함수를 이용한 접근 방식, 대량의 데이터 처리에 효율 Nested Loop Join(NL 조인) 보통 가장 흔하게 접할 수 있는 오라클 조인 방식으로 OLTP(Onl..
-
개발자를 위한 인덱스 생성과 SQL작성 노하우 : 9-11STUDY/DB 2022. 7. 25. 00:15
- 공정쿼리 작성법 공정쿼리란, 무엇을 어떻게 조회할지에 대한 내용을 담고 있고, 쿼리 자체만으로 인덱스 생성 위치와 실행계획을 알 수 있는 쿼리이다. 무엇을 어떻게 조회할지에 대한 내용을 모두 포함해서 쿼리를 작성하므로 공정쿼리로 작성한 쿼리에서는 쿼리의 결과뿐만 아니라 생성해야 할 인덱스 정보와 접근돼야 할 실행계획 정보까지 모두 알 수 있다. 오라클 CBO(Cost Based Optimizer) 방식은 통계정보를 이용해 비용을 계산한 후 SQL을 수행한다. 통계정보가 존재하고 비교적 정확하다면, 오라클은 대부분의 쿼리에서 올바르고 적절한 실행계획을 제공하고 쿼리를 수행한다. 만약 통계정보가 존재하지 않거나 잘못된 정보를 갖고 있다면 정확한 실행계획을 제공하지 못하고 쿼리 수행도 최적이지 않다. 올바..
-
개발자를 위한 인덱스 생성과 SQL작성 노하우 : 인덱스STUDY/DB 2022. 6. 29. 22:02
1. 인덱스는 분류이다. 분류의 특징 분류의 역사는 인류의 역사와 궤를 같아한다. 분류는 인간 세계뿐만 아니라 동물의 세계에서도 존재한다. 수많은 자료를 정리,관리,검색한다는 의미에서 분류는 DB 그 자체이다. 과거의 계층적인 분류부터 최근의 컴퓨터정보 분류에 이르기까지 분류는 지속적으로 발전했다. 체계적으로 정리된 자료는 검색 시간을 줄여 비용 절감으로 연결괸다. 이것이 분류의 힘이다. 물리적 분류의 특징 직접적이고 시각적인 분류 방식 인류 역사와 함께 널리 사용됨 현실 세계의 분류에서 적합 분류 대상과 분류 정보 일체형 동일한 시공간에서 오직 한 분류만 가능 분류 대상과 분류 정보는 1:1 관계 논리적 분류의 특징 간접적이고 추상적인 분류 방식 컴퓨터 사용과 더불어 폭넓게 사용 디지털 세상의 분류에 ..