본문 바로가기

CS 백엔드

(28)
프로그래밍 패러다임 1. 프로그래밍 패러다임 전체적인 프로그래밍 방식을 의미한다. 프로그램은 순차, 분기, 반복, 참조로 구성되어 있으며, 프로그램 개발을 위하여 전략을 수립해야 한다. 위의 전략은 쉽게 말해서, 어떤 언어를 사용할 것인가, 프로그래밍에서 어떤 것을 지향하고, 지양할지 와 같은 다양한 방법을 가리키는데, 이러한 전략들이 바로 프로그래밍 패러다임이다. 프로그래밍 패러다임은 선언형과 명령형으로 나뉜다. 선언형 : 함수형프로그래밍 명령형 : 절차지향적, 객체지향적 프로그래밍 2. 선언형과 함수형 프로그래밍 " 선언형 프로그래밍 " 무엇을 어떻게 해결해야는가에 집중하는 패러다임이며 해결방법은 컴퓨터에게 위임하는 방법이다. (1) 함수형 프로그래밍 최소 단위가 함수이며, 함수를 통하여 새로운 데이터들을 만들어가며 ..
[자료구조] 그래프(Graph) 와 트리(Tree) 위 그림을 보면 트리는 그래프에 종속되어 있는 것을 알 수 있다. 즉, 그래프는 트리의 기능을 구사할 수 있다는 말이 된다. 1. 그래프 (Graph) 그래프란 무엇일까? 노드(하나의 점)와 간선으로 이루어진 자료구조이다. 위 말을 쉽게 풀어보면, 노드와 노드 간을 연결하는 간선으로 구성된 자료구조라는 말로 볼 수 있다. 이러한 그래프에는 어떤 특징이 있을까? 그래프는 순환 또는 비순환 구조를 가질 수 있다. 방향을 가질 수도 있고 가지지 않을 수도 있다. 부모와 자식 관계가 없고 모든 노드가 평등하다. 무방향과 양방향이 가능하다. 2. 트리 (Tree) 트리란 무엇일까? 트리는 그래프 중 하나로 그래프 구조의 특징처럼 노드와 간선으로 이루어진 자료구조이다. 하지만 트리는, 두 개의 노드 사이에 반드시 ..
[DB] INDEX 인덱스 1. 데이터베이스에 있어서 인덱스란? 데이터베이스의 모든 테이블을 검색해서 원하는 결과를 가져오려면 시간이 오래 걸린다. 그래서 컬럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어서 검색 및 정렬 속도를 향상시키는 목적으로 만든다. 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가하거나 수정, 삭제하는 경우에는 쿼리문 실행 속도가 느려지는 문제가 있다. 즉, 인덱스는 DB에서 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이다. 인덱스의 장점 테이블의 검색 및 정렬 속도 향상 그룹화 작업의 속도 향상 인덱스의 단점 파일 크기가 늘어난다 데이터의 CUD 성능 감소 인덱스 생성 후 데이터 변형이 계속 이루어지면, ..
[DB] SQL과 NoSQL 데이터 베이스란 간단하게 말하면 데이터의 모음을 의미한다. 우리는 데이터를 체계적으로 관리하고 싶을 때, 이러한 데이터베이스를 활용하게 된다. 데이터를 조직화하여서 관리하게 되면, 대량의 데이터도 효율적으로 관리할 수 있는 장점이 생긴다. 그렇다면 데이터베이스는 어떤 것들이 있으며, 어떤 형태들이 있을까? 대표적으로 관계형 데이터베이스와 비관계형 데이터베이스가 있을 것이다... 1. 관계형 데이터베이스 RDB 엑셀과 유사한 2차원의 테이블 형식으로 구성되며 속성과 값을 이용하여 데이터를 정의하고 저장, 관리하는 데이터베이스다. 관계형 데이터베이스는 테이블의 구조와 데이터 타입 등을 사전에 정의하고 그에 맞는 형태를 가진 데이터만 삽입할 수 있다. 관계형 데이터베이스 관리 시스템 (RDBMS) 종류 MyS..
[DB] 트랜잭션의 격리수준 1. 트랜잭션 격리 수준 동시에 DB에 접근할 때 그 접근을 어떻게 제어할지에 대한 설정 레벨(고립도)이 높아질수록 고립도가 올라가서 더 확실한 처리가 가능해지지만 동시에 수행될 수 있는 트랜잭션을 순서대로 처리하게 되어 속도가 느려지게 된다. 2. 트랜잭션의 격리 수준 단계 (1) Read Uncommitted 트랜잭션에서 처리 중인 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다. SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸리지 않는다. 발생할 수 있는 문제점 Dirty Read Non-Repeatable Read Phantom Read (2) Read Committed 트랜잭션이 커밋되어 확정된 데이터만 다른 트랜잭션이 읽도록 허용한다. 발생할 수 있는..
[DB] 트랜잭션 1.트랜잭션 데이터베이스가 데이터를 읽거나 쓰는 최소 단위 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 데이터베이스에 접근하는 방법은 장고의 ORM을 이용한 쿼리가 있는데, 이 쿼리들이 하나로 묶인 단위 2. 트랜잭션 특징 (1) 원자성(Atomicity) 트랜잭션 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함 (2) 일관성(Consistency) 트랜잭션이 실행을 성공적으로 완료시 언제나 일관성 있는 데이터베이스 상태로 변환됨 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함 (3) 독립성, 격리성(Is..
[DB] 데이터 베이스 정규화 1. 정규화(Normalization) 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, DB 저장용량 역시 줄일 수 있다. 이러한 정규화는 테이블을 분해하는 단계가 있는데, 테이블을 어떻게 분해되는지에 따라 정규화 단계가 달라진다. 디비의 정규화가 진행되면 기존의 릴레이션이 분해가 된다. 하지만 분해된 릴레이션은 무손실 조인을 무조건적으로 보장해야한다. 여기서 무손실 조인은 분해된 릴레이션은 다시 결합하더라도 분해 전 결과랑 같아야 한다. (1) 제 1 정규화 테이블의 컬럼이 원자값(Atomic Vlue, 하나의 값)을 갖도록 테이블을 분리하는 것. 취미 테이블에서 추신수와 박세리는 여러 개의 취미를 가지고 있기 때문에 제 1정규형을..
[DB] 데이터 베이스(Database)의 기본 1. 데이터 베이스 데이터 혹은 정보를 체계적으로 관리하기 위해 저장되어있는 데이터의 집합이다. 2. 데이터 베이스의 특징 독립성 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다. 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다. 무결성 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다 보안성 인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다. 일관성 연관된 정..