소프트웨어 개발(데이터 입출력 구현)

2025. 2. 11. 13:58자격증

반응형
1. 논리 데이터 저장소 확인 (1)자료구조 개념 : 컴퓨터상 자료의 효율적으로 저장하기 위해 만들어진 논리적 구조
①선형 구조: 데이터를 연속적으로 연결한 자료 구조 ②비선형 구조: 데이터를 비연속적으로 연결한 자료 구조


(2)리스트의 종류 ①선형 리스트 (Linear list) ②연결 리스트 (Linked list)
(3)스택 Stack 개념 : LIFO Last-In / First-Out 마지막에 들어간게 먼저 나온다. [PUSH] [POP] (계산기 + - * / )
①삽입  ②삭제
③스택 응용 분야
1. 인터럽트의 처리
2. 함수 호출 (재귀): 함수 호출 시 현재 진행 중인 명령어 주소를 스택에 저장
3. 후위표현 연산-PostFix
4. 깊이 우선 탐색 DFS; Depth-First Search : 깊이 내려갈 때마다 스택에 PUSH하고, 더 이상 깊이 갈 곳이 없을 경우 스택에서 POP한 노드와 인접한 노드를 찾음.
(인터럽트란? 키보드 입력을 한다든가 아니면 전원이 꺼진다든가 이런 상황에서 예상치 못한 상황이 생겼을 때 컴퓨터가 처리하는 것.
스택에서 저장했던 상태를 불러와서 실행을 하게 된다.) (함수호출=메서드=서브루틴-프로시저)
(4) Queue 개념 : FIFO First-In / First-Out 처음에 들어간게 먼저 나온다.
(5)데크 Deque; Double Ended Queue 개념 : 데크는 큐의 양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조 이다.
(6)트리 개념 : 데이터들을 계층화 시킨 자료 구조
  차수(Degree)는 전체 트리 구조에서 자식 노드 개수가 몇 개인지 찾는다. D 3. B 2, A 2.
(7)트리 순회 방법
①전위 순회 ②중위 순회 ③후위 순회
 
PreFix(전위) InFix(중위) 사람이 이해 할 수 있는 식 – PostFix(후위)
공통 a * ( b + c ) * d
1-1  InFix à PreFix
①계산 순서에 맞춰서 ( )괄호를 해 준다. (( A * ( b + C )) * d
PreFix 연산자-피연산자-피연산자로 묶어 준다. ( * ( * a ( + b c ) ) ) d )
③괄호를 없애 준다. * * a + b c d
1-2  PreFix à InFix
PreFix 연산자-피연산자-피연산자로 묶어 준다 ( * ( * a ( + b c ) ) d ).
InFix 피연산자-연산자-피연산자로 바꿔 준다. ( a * ( b + c ) ) * d
③괄호를 정리해 준다. a * ( b + c ) * d
2-1  InFix à PostFix
①계산 순서에 맞춰서 ( )괄호를 해 준다. ((a*(b+c))*d
PostFix 피연산자-피연산자-연산자로 묶어 준다. (a(bc+)*)d*
③괄호를 없애 준다.  a b c+ * d *
2-2  PostFix à InFix
PostFix 피연산자-피연산자-연산자로 묶는다. ( a ( b c + ) * ) d *
InFix 피연산자-연산자-피연산자로 바꿔 준다. ( a * ( b + c ) ) * d
③괄호를 정리해 준다.  a * ( b + c ) * d
(8)이진 탐색 트리 Binary Search Tree 유형
노드가 왼쪽이나 오른쪽 한 곳만 존재하게 될 경우 효율이 떨어진다. à ①포화 이진 트리, 완전 이진 트리, 편향 이진 트리
편향 이진 트리의 편향된 트리를 방지하기 위해 스스로 균형을 잡는 이진 탐색 트리 à AVL 트리 ③2-3 트리 ④레드-블랙 트리
(9)그래프Graphd의 유형 (노드와 노드를 연결하는 간선을 하나로 모아 놓은 자료 구조)
방향 그래프 n(n-1) 무방향 그래프 n(n-1)/2
(10)그래프 탐색 방법
①깊이 우선 탐색 DFS; Depth-First Search-스택 : 깊이 우선으로 찾아 내려 간다.
②너비 우선 탐색 BFS; Breadth-First Search- : 넓이를 우선으로 찾아 간다.
(11)논리 데이터저장소 구조 (개체 Entity , 속성Attribute , 관계Relationship )
반응형
2. 물리 데이터 저장소 설계 (1)물리 데이터 저장소 개념 : DBMS의 특성을 고려하여 데이터베이스 저장 구조 물리 데이터 모델로 변환하기 위한 데이터 저장소
정규화 : 테이블을 쪼개는 작업이 정규화이다. 정규화를 하면서 조인이라는 연산 때문에 속도가 느려진다. à 반정규화 수행 방법 : 정규화를 수행하는 테이블에 대해서 다시 원래대로(합친다) 돌린다.
(2)물리데이터 저장소 모델 변환
①테이블 통합 : 정규화된(분할)테이블을 조인을 하면 하나의 테이블이 된다. 반정규화(통합)
②테이블 분할 : 테이블이 너무 크면 시간이 오래 걸린다. 그래서 분할을 한다. 수평 분할, 수직 분할
③중복 테이블 추가 : 특집진행 1. 정 부분만 포함하는 테이블 추가 2. 진행 테이블 3. 계 테이블 (성능 측면 유리)
(기존에 있던 테이블에다가 다른 테이블들을 추가. 중복 테이블 추가, 저장 측면에서는 두 번 저장되기 때문에 중복이라고 볼 수 있지만 실제 운영상에서는 좀 더 빠른 연산을 할 수 있기 때문에 정규화(분할)를 많이 활용 한다.)
④컬럼 중복화 : 조인 성능 향상을 위한 중복 허용
인덱스 : 인덱스에서 먼저 한번 찾고, 그다음에 그것에 해당되는 데이터를 찾아간다면 빠르게 검색할 수 있다.
: 1. 비슷한 데이터들끼리 한곳에 모아 놓은 구조. 2. 분할된 테이블을 하나의 가상의 테이블 형태로 필요한 부분만 뽑아서 사용
3. A테이블과 B테이블을 서로 조인해서 사용해야 하지만. 조인하지 않고 뷰에서 바로 사용할 수 있게끔 한다. 편하게 사용, 개발 효율, 보안적으로도 좋아진다. 쿼리도 단순해 진다.
클러스터 : 비슷한 데이터들끼리 한곳에 모아 놓는 구조.
(3)파티션의 종류 (레해리컴라)
①범위 분할 Range Partitioning : 1월 데이터, 2월 데이터, 3월 데이터 등 월 단위로 쪼개서 파티션을 구분
②해시 분할 Hash Partitioning : 데이터의 날짜를 3으로 나눴을 때 나머지가 0이면 1번 파티션, 나머지가 1이면 2번 파티션, 너머지가 2이면 3번 파티션 이런 식으로 해시 함수를 돌렸을 때 그 결과에 따라 몇 번 파티션으로 갈지 정해지는 게 해시 파티션.
③목록 분할 List Partitioning : 서울, 대전, 대구, 부산 이런 식의 파티션이 있다고 했을 때, 주소가 서울시 ** **, 대전시 ** **,서울, 대전,  파티션으로 분류, 이런 식으로 나누는 것을 리스트이다.
④조합 분할 Composite Partitioning : 레인지, 해시, 리스트 중에 보통 2가지를 조합하면 컴포지트 파티셔닝 이라고 한다.
⑤라운드로빈 파티셔닝 Round Robin Partitioning : 데이터가 저장될 때마다 처음에 들어온 것을 1번 파티션, 두번째 들어온 건 2번 파티션, 세 번째 들어온 것은 3번 파티션 이렇게 나누는 것을 라운드 로빈 파티셔닝 이라고 한다.
(4)파티션의 장점 (성경SK백가)
능 향상 ② 합 감소 ③업 가능 ④ 용성 향상
(5)ORM; Object-Relational Mapping (객체 관계 맵핑) : 관계형 데이터베이스와 객체지향 프로그래밍 언어 간 호환되지 않는 데이터를 변환하는 프로그래밍 기법, (Database에는 테이블만 존재하고 객체(Java Code)를 서로 매핑해줄 때 ORM 사용.)
(4)트랜잭션 인터페이스의 특징 (ACID) 트랜잭션이란: )은행 데이터 기록
①원자성 Atomicity : 트랜잭션 연산을 데이터베이스에 모두에 반영 또는 반영하지 말아야 한다. (계좌이체 도중 장애 발생시)
②일관성 Consistency : 트랜잭션이 실행을 성공적으로 완료할시 일관성 있는 DB 상태 유지 (계좌이체 10원 보냈을 때 10원 받아야 함)
③격리성 Isolation : 둘 이상 트랜잭션 동시 실행시 한 개의 트랜잭션만 접근 돼야 한다.
④영속성 Durability : 성공적으로 완료된 트랜잭션 결과는 영구적으로 반영 (계좌이체시 통장계좌는 지속적, 영구적 반영돼 보존)
⑤트랜잭션 인터페이스 대표적인 사례 JDBC-Java database connectivity, ODBC-Open Database connectivity
3. 데이터 조작 프로시저 작성 (1)프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
(2)PL/SQL : 표준 SQL을 기본으로 Oracle에서 개발한 데이터 조작 언어
①컴파일 불필요 ②모듈화 가능 ③절차적 언어사용 ④에러 처리
(3)PL/SQL을 활용한 저장형 객체 활용 (프함패트)
① 프로시저 :  쿼리들을 모아 놓은 것
② 함수 : 무언가 값을 얻고 싶을 때 사용하는 것. 예) 계좌번호가 있는데 누구 것인지 알고 싶을 때 사용
③ 패키지 : 프로시저 함수들을 효율적으로 관리하는 집합
④ 트리거 : 데이터베이스 사용시 삭제나 삽입 이런 행위가 발생을 하게 되면 그때 뭘 해라라고 정의를 하는 것 (방아쇠)
4. 데이터 조작 프로시저 최적화 (1)SQL 성능 개선 절차 (옵티마이저 : SQL문을 처리, 실행, 계획, 비용을 추정하여 최적의 실행 계획을 수립하는 DBMS의 핵심 엔진
①문제 있는 SQL식별 ②옵티마이저 통계 확인 ③SQL문 재구성 ④인덱스 재구성 ⑤실행계획 유지관리
(2)소스 코드 인스펙션 : 데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선

 

반응형