소프트웨어 개발 1. 데이터 입·출력 구현

yuhyeonp·2020년 5월 16일
0

1. 배열

  • Array
    • 선형 구조(Linear Structure)
    • 동일한 자료형을 같은 크기로 나열
    • 순서 있음
      • 정적인 자료 구조로 기억장소 추가 어려움
      • 데이터 삭제 시 빈 공간이 남아 메모리 낭비
      • 첨자로 데이터 접근(사용 첨자 개수에 따라 n차원)
      • 반복 데이터 처리에 적합
      • 동일 변수 사용해서 간편

2. 선형 리스트

  • Linear List
  • 연속 리스트(Contiguous List): 배열 이용
    • 기억장소를 연속적으로 배정받아 이용 효율이 밀도가 1로 가장 좋음
    • 중간에 데이터 삽입하려면 자료 이동 필요
  • 연결 리스트(Linked List)

3. 연결 리스트

  • Linked List
  • 포인터(Pointer) 이용
    • 연속되지 않은 자료를 순서에 따라 노드의 포인터가 다음 위치를 가리킴
    • 노드의 삽입/삭제 쉬움
    • 포인터(링크)부분이 필요해서 기억 공간 이용 효율 나쁨
    • 포인터 찾는 시간 때문에 접근 속도 느림
    • 연결 끊어지면 노드 찾기 어려움

4. 스택

  • Stack
  • 한쪽으로만 입/출력 가능
    • 나중에 삽입된 자료가 먼저 삭제되는 후입선출(LIFO; Last In First Out)
  • 오버플로(Overflow): 기억 공간 찼는데 데이터 삽입
  • 언더플로(Unerflow): 데이터 없는데 삭제
  • TOP: 마지막 자료가 기억된 공간
  • Bottom: 스택의 밑바닥

5. 트리

  • Tree
    • 비선형 구조(Non-Linear Structure)인 그래프(Graph)의 특수 형태
    • 기억 공간인 노드(Node)를 링크(Link)가 연결
    • 정점(노드)과 선분(Branch, 가지)이 사이클을 이루지 않음
      • 가족 계보(족보), 조직도 등에 적합
  • 근 노드(Root Node): 트리 맨 위의 노드
  • 단말 노드(Terminal Node) / 잎 노드(Leaf Node): 자식이 없는 노드
  • 부모 노드(Parent Node): 연결된 이전 레벨의 노드
  • 자식 노드(Son Node): 다음 레벨의 노드
  • 형제 노드(Brother Node, Sibling): 부모가 같은 노드
  • 디그리(Dgree, 차수): 노드에서 뻗어 나온 가지의 수
  • 트리의 디그리: 노드들의 디그리 중 가장 큰 수

6. 데이터베이스

  • 조직에서 공동 사용될 데이터를 통합하고 저장하여 항상 사용될 수 있게 운영하는 자료 모임
  • 통합된 데이터(Integrated Data): 중복 배제
  • 저장된 데이터(Stored Data): 컴퓨터가 접근할 수 있게 매체에 저장
  • 운영 데이터(Operational Data): 고유 업무 수행에 필수적인 자료
  • 공용 데이터(Shared Data): 응용 시스템들이 공동 소유/유지

7. DBMS

  • DataBase Management System(데이터베이스 관리 시스템)
    • 사용자 요구에 따른 정보를 생성하고 데이터베이스를 구성/접근/유지관리하는 소프트웨어
    • 파일 시스템의 데이터 중복과 종속 문제를 해결
  • 정의 기능: 데이터 형(Type)과 구조에 대한 정의, 제약 조건 등을 명시
  • 조작 기능: 사용자가 데이터 검색, 갱신, 삽입, 삭제 등을 체계적으로 처리하는 인터페이스 제공
  • 제어 기능
    • 무결성: 작업이 정확히 수행되도록 제어
    • 권한(Authority) 기능: 정당한 사용자만 허가된 데이터에 접근하도록 보안(Security) 유지
    • 병행 제어(Concurrency Control): 여러 사용자의 동시 접근 시 처리 결과가 정확성 유지하도록

8. SQL

  • Structured Query Language
    • 데이터 입/출력 등 조작 작업 위해 사용(개발 코드 내에 SQL 코드를 넣어 소프트웨어 구현)
    • 데이터 구조 정의, 조작, 제어 기능을 갖춘 질의어(Query Language)
    • 관계형 데이터베이스(RDB, Relational DataBase) 지원
      • 관계대수(원하는 정보 검색 유도를 기술하는 절차적 언어)와 관계해석(정보 정의할 때 계산 수식 사용하여 연산 표현)에 기초를 둔 혼합 데이터 언어
  • 데이터 정의어(DDL; Data Define Language): SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의/변경/삭제
  • 데이터 조작어(DML; Data Manipulation Language): 저장 데이터를 질의어 통해 실질적 처리
  • 데이터 제어어(DCL; Data Control Language): 보안, 무결성, 회복, 병행 수행 제어 등 정의

9. ORM

  • Object-Relational Mapping
    • 객체지향 프로그래밍(OOP; Object-Oriented Programming)의 객체(Object)와 관계형(Relational) 데이터베이스의 데이터를 연결(Mapping)하는 기술
      • JPA
      • Hibernate
      • Django

10. 트랜잭션

  • Transaction
    • SQL을 통한 데이터베이스 조작 수행 시 하나의 논리적 기능을 위한 작업의 단위 혹은 한번에 수행될 일련의 연산
    • TCL(Transaction Control Language): 트랜잭션 제어하는 명령어
      • COMMIT: 트랜잭션 정상 종료 후 변경 내용을 데이터베이스에 반영
      • ROLLBACK: 트랜잭션 비정상 종료로 데이터베이스의 일관성이 깨지면 변경 작업 취소
      • SAVEPOINT(=CHECKPOINT): ROLLBACK할 위치인 저장점 지정

0개의 댓글