반응형

Clustered vs NonClustered (index 개념)

Database에서 index의 구조는 크게 Clustered 와 NonClustered로 나눠집니다.

 

Clustered

Clustered index는 데이터가 테이블에 물리적으로 저장되는 순서를 정의합니다. 즉, Clustered index는 특정 컬럼을 기준으로 데이터들을 정렬시켜줍니다. 테이블 데이터는 오직 한 가지의 방법으로만 정렬되기 때문에 테이블 당 하나의 Clustered index가 존재합니다.

단점으로는 새로운 데이터를 삽입할 때는 많은 비용이 소모되는 담점이 존재합니다.

 

주로 사용될 때:

  • 테이블 데이터가 자주 업데이트 되지 않는 경우
  • 항상 정렬 된 방식으로 데이터를 반환해야하는 경우
  • 테이블은 정렬되어있기 때문에 ORDER BY 절을 활용해 모든 테이블 데이터를 스캔하지 않고 원하는 데이터를 조회할 경우
  • 읽기 작업이 월등히 많은 경우(Read 속도가 빠릅니다.)

 

NonClustered

NonClustered index는 군집화 되어있지 않은 index를 말합니다. 즉, 테이블에 저장된 순서에 따라 데이터를 정렬하지 않습니다. 또한 NonClustered index는 별도의 장소에 저장되어 사용됩니다. 그러므로 별도의 공간(약 10%)이 필요합니다.

 

주로 사용될 때:

  • where절이나 join 절과 같이 조건문을 활용하여 테이블을 필터링 하고자할 때
  • 데이터가 자주 업데이트 될 때
  • 특정 컬럼이 쿼리에서 자주사용 될 때
반응형

'DB' 카테고리의 다른 글

Procedure과 Function의 차이  (0) 2023.05.31
반응형
반응형

Procedure와 Function의 차이

  • Procedure는 로직을 기술하여 해당 업무 처리를 직접 하는 용도로 많이 사용되고, Function은 로직을 도와주는 목적으로 사용됩니다.
  • Procedure은 select, where문 등에서 사용이 불가능 하지만 Function은 사용 가능합니다.
  • Procedure은 클라이언트에서 값을 건네받아 서버에서 작업을 한 뒤 클라이언트에게 전달하지만, Function은 클라이언트에서 값을 건네 받고 서버에서 필요한 값을 가져와서 클라이언트에서 작업을 하고 반환합니다.

Procedure이란?

일련의 쿼리를 하나의 함수로 실행할 수 있는 쿼리의 집합입니다. 예를 들어 네이버에서 상품을 구매하기 위해서 로그인, 상품 선택, 상품 구매 등 여러 프로세스를 한 번의 procedure에 담아 실행 할 수 있습니다.

 

잠정

  1. 하나의 요청으로 여러 SQL문을 실행할 수 있습니다.
  2. 서버에서 실행되기 때문에 속도가 빠릅니다.
  3. 리턴값이 있을 수도, 없을 수도 있습니다.
  4. 여러개의 리턴값을 보낼 수 있습니다.

단점

  1. 재사용성이 좋지 않습니다.

코드

CREATE OR REPLACE PROCEDURE 프로시저 이름 ( 
	매개변수명1 [ IN || OUT || INOUT ] 데이터타입
	, 매개변수명2 [ IN || OUT || INOUT ] 데이터타입 ... 
) IS||AS 변수, 상수 등 선언 ( 선언부 ) 
BEGIN 실행 문장 ( 실행부 ) 
EXCEPTION 문장 //필수아님 
END ;

호출 방법

CALL 프로시저명(IN파라미터명, @OUT파라미터명)
EXECUTE 프로시저명(IN파라미터명, @OUT파라미터명)

 

Function이란?

각 프로세스를 수행하기 위해 필요한 기능들입니다.

Function은 리턴값이 필수입니다.

담점

  1. 클라이언트에서 실행되기 때문에 프로시저보다는 느리다

코드

CREATE OR REPLACE FUNCTION 함수 이름
     ( 매개변수명1 매개변수1타입,
       매개변수명2 매개변수2타입 ... )
  RETURN 데이터타입
  IS||AS
         변수, 상수 등 선언 ( 선언부 )
  BEGIN
         실행 문장 ( 실행부 )
         RETURN 반환값    //필수
         EXCEPTION 문장   //필수아님
  END ;

호출 방법

SELECT 함수명(IN 파라미터명) FROM DUAL;

 

참조

https://velog.io/@devjooj/Mysql-Function과-Procedure-차이

https://fomaios.tistory.com/entry/Oracle-함수Function와-프로시저Procedure-차이

반응형

'DB' 카테고리의 다른 글

Clustered vs NonClustered (index 개념)  (0) 2023.05.31
반응형
반응형

list 사용 방법

  • 리스트는 [] 기호를 사용하여 표현
  • L = [i for i in L if i % 3 == 0] 도 가능
  • del(L[2]) - 리스트 특정 인덱스 내용을 삭제
  • del(L) - 리스트 자체를 삭제
  • t = (1, 2, 3, 4, 5)
  • L = list(t) - 튜플(tuple), 집합(set)과 같은 다른 자료형을 리스트로 바꾸기 위해서는 list()를 사용
  • append(값) - 리스트에 값을 하나 추가
  • insert(인덱스, 값) - 인덱스 위치에 값을 하나 추가
  • extend(iterable) - iterable 인자를 넘겨 리스트에 추가
  • copy() - 리스트 복사 (리턴받아 사용)
  • remove(값) - 전달한 값을 삭제 (중복된 경우 처음 나오는 값을 삭제)
  • pop(인덱스) - 인덱스에 위치한 값을 리턴하면서 삭제 (인자가 없으면 맨 뒤 값을 pop)
  • clear() - 리스트 값 모두 삭제 (빈 리스트 생성)
  • count(값) - 인자로 전달한 값의 개수를 확인
  • len() - 리스트의 길이를 확인하기 위해서는  함수를 사용
  • index(인덱스) - 인덱스에 위치한 값을 확인
  • reverse() - 리스트에 들어있는 값을 역순(거꾸로)으로 변경
  • sort() - 리스트 내용을 정렬 (오름차순)(reverse=True를 인자로 전달하면 내림차순 정렬이 가능)
반응형

'Python' 카테고리의 다른 글

파이썬 lambda 사용시  (0) 2023.06.01
print 하면 <map object at 0x10446d880> 나올 때  (0) 2023.06.01
zip()  (0) 2023.05.03
combinations()  (0) 2023.05.03
[panda]info()  (0) 2023.04.26
반응형
반응형

문제

현재 Mac pro1에 vscode에서 javac를 통해 컴파일하고 나서 실행할려고 했는데 컴파일에서 cannot find symbol error가 발생했습니다. 원인은 package 때문에 발생했습니다.

 

해결

package를 제거해주거나 위치 설정을 잡아 줍니다.

반응형

'Java' 카테고리의 다른 글

Java 7 functions  (0) 2023.06.18
JDK, JRE, JVM이란?  (0) 2023.06.15
[ERROR]Illegal modifier for the interface field Observer.name; only public, static & final are permitted  (0) 2023.05.29
AOP이란?  (0) 2023.05.11
반응형
반응형

interface 생성 중 객체 생성 할 때 private으로 설정을 해서 Illegal modifier for the interface field Observer.name; only public, static & final are permitted 에러가 발생했습니다.

 

발생 원인은 interface는 외부로 공개되는 메소드를 정의하는 것인데 private 객체를 선언 했기 때문입니다.

error를 해결하는 방법은 private을 public, static & final 수정해주면 됩니다.

반응형

'Java' 카테고리의 다른 글

Java 7 functions  (0) 2023.06.18
JDK, JRE, JVM이란?  (0) 2023.06.15
[ERROR]cannot find symbol  (0) 2023.05.29
AOP이란?  (0) 2023.05.11
반응형

 

문제

postman에서 get 방식 호출하는데 

Cloud Agent Error: Can not send requests to reserved address. Make sure address is publicly accessible or select a different agent.

발생했습니다. 

이유는 postman에서 호출하는건 localhost가 아니라서 인거 같습니다.

 

해결

Desktop을 다운 받고 실행하니 해결되었습니다.

반응형

'IT' 카테고리의 다른 글

Build, Deploy, Complie  (0) 2023.06.13
WEB-INF와 META-INF 차이  (0) 2023.06.13
REST란?  (0) 2023.05.11
SOAP이란?  (0) 2023.05.11
[git]There isn’t anything to compare  (0) 2023.05.08
반응형

무인도 여행 문제

https://school.programmers.co.kr/learn/courses/30/lessons/154540?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

핵심 내용

지도를 나타내는 문자열 배열 maps가 매개변수로 주어질 때, 각 섬에서 최대 며칠씩 머무를 수 있는지 배열에 오름차순으로 담아 return 하는 solution 함수를 완성해주세요. 만약 지낼 수 있는 무인도가 없다면 -1을 배열에 담아 return 해주세요.

 

코드 및 분석(다른 분의 코드)

*주석은 해당 코드 위에 적는 방식으로 적겠습니다.

import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

class Solution {
    static int sum=0;
    
    public int[] solution(String[] maps) {
        List<Integer> list = new ArrayList<>();
        
        # 방문한 node를 기록할 객체 생성합니다.
        boolean[][] visited = new boolean[maps.length][maps[0].length()];
        
        # maps의 길이만큰 돌도록 for문 돌립니다.
        for(int i=0; i<maps.length; i++) {
        	for(int j=0; j<maps[i].length(); j++) {
        		
                node마다 dfs 함수를 실행합니다.
                dfs(maps, visited, i, j);
        		if(sum>0) {
        			list.add(sum);
        			sum=0;
        		}
        	}
        }
        
        # 조건 중 list가 0이면 -1 값을 return 합니다.
        if(list.size()==0) return new int[] {-1};
        
        int[] answer = new int[list.size()];
        for(int i=0; i<answer.length; i++) {
        	answer[i]=list.get(i);
        }
        
        # 배열을 오름차순으로 바꿔줍니다.
        Arrays.sort(answer);
        return answer;
    }
    
    public void dfs(String[] maps, boolean[][] visited, int i, int j) {
    	# 인덱스 값이 0 아래이거나 maps의 길이보다 크면 안되기 때문에 체크를 합니다.
        if(i<0 || j<0 || i>=maps.length || j>=maps[0].length()) return;
        
        # 2번째 조건으로 'X'이거나 벌써 사용한 node인지 체크 합니다.
    	if(maps[i].charAt(j) == 'X' || visited[i][j]) return;
    	else {
        	# visited[i][j] 값을 true로 바꿔줍니다.
    		visited[i][j]=true;
            # Ascii code를 사용해서 int로 형변환합니다. '0'의 아스키코드는 48입니다.
    		sum+=maps[i].charAt(j)-'0';
    	}
        
        # i와 j 전체를 탐색하도록 dfs를 호출해줍니다.
    	dfs(maps, visited, i+1, j);
    	dfs(maps, visited, i-1, j);
    	dfs(maps, visited, i, j+1);
    	dfs(maps, visited, i, j-1);
    }
}
반응형
반응형

문제

A company uses AWS Organizations to manage multiple AWS accounts for different departments. The management account has an Amazon S3 bucket that contains project reports. The company wants to limit access to this S3 bucket to only users of accounts within the organization in AWS Organizations. Which solution meets these requirements with the LEAST amount of operational overhead?

(한국어)

회사는 AWS Organizations를 사용하여 서로 다른 부서의 여러 AWS 계정을 관리합니다. 관리 계정에는 프로젝트 보고서가 포함된 Amazon S3 버킷이 있습니다. 회사는 이 S3 버킷에 대한 액세스를 AWS Organizations 내의 계정 사용자에게만 제한하고자 합니다. 가장 적은 운영 오버헤드로 이러한 요구 사항을 충족하는 솔루션은 무엇인가요?

 

A. Add the aws PrincipalOrgID global condition key with a reference to the organization ID to the S3 bucket policy.

B. Create an organizational unit (OU) for each department. Add the aws:PrincipalOrgPaths global condition key to the S3 bucket policy.

C. Use AWS CloudTrail to monitor the CreateAccount, InviteAccountToOrganization, LeaveOrganization, and RemoveAccountFromOrganization events. Update the S3 bucket policy accordingly.

D. Tag each user that needs access to the S3 bucket. Add the aws:PrincipalTag global condition key to the S3 bucket policy.

 

정답

A

 

chatGPT 정답

  1. Amazon S3 버킷 정책 사용: AWS Organizations 내의 계정 사용자에게만 액세스를 제한하기 위해 Amazon S3 버킷에 대한 정책을 설정할 수 있습니다. 정책을 통해 특정 AWS 계정 ID 또는 AWS Organizations의 조직 단위를 지정하여 액세스를 허용하거나 거부할 수 있습니다.
  2. 조직 단위의 정책 관리: AWS Organizations를 사용하여 조직 단위를 만들고 관리할 수 있습니다. 조직 단위에서 각 계정에 대한 액세스 정책을 구성하여 프로젝트 보고서를 포함한 Amazon S3 버킷에 대한 액세스를 제한할 수 있습니다.
  3. 권장사항: AWS Identity and Access Management (IAM)을 사용하여 AWS Organizations 내의 계정 사용자에 대한 권한을 관리하는 것이 좋습니다. 각 계정 사용자에 대한 IAM 정책을 설정하여 필요한 권한만 부여하고, Amazon S3 버킷에 대한 액세스를 조직 내의 계정 사용자에게 제한합니다.
반응형

'AWS > Solutions Architect - Associate SAA-C03' 카테고리의 다른 글

Amazon Athena  (0) 2023.05.21
S3 bucket  (0) 2023.05.21

+ Recent posts