전체 702

시스템아키텍처의 정의

시스템 아키텍처의 정의 - 하드웨어와 소프트웨어 아키텍처를 기반으로 시스템이 서비스를 제공하기 위한 아키텍처 - 광의의 정의로는 Technical Architecture, Data Architecture, Application Architecture로 구분 - 협의의 정의로는 Technical Architecture를 의미하며 세부적으로 서버, 스토리지, 네트워크, 보안으로 구분 광의의 시스템아키텍처 정의 1. 기술 아키텍처 : 서버, 네트워크, 보안, 하드웨어 구조, 미들웨어의 배포 구조를 정의 2. 데이터 아키텍처 : 데이터의 무결성을 보장하기 위해 정의 3. 응용 아키텍처 : 정보시스템의 소프트웨어 컴포넌트들 간의 관계 및 제약사항 정의 협의의 시스템아키텍처 정의 1. 서버 - 정보시스템의 계산 능..

NoSQL

NoSQL이란 - 기존의 관계형 데이터베이스의 한게를 벗어나 비정형, 초고용량 데이터 처리를 위해 만들어짐 - 쓰기속도에 중점을 둠 - 다수 서버에 데이터 복제,분산,저장 등 수평적 확장이 가능 NoSQL특징 1. 대용량 데이터 처리 : 페타바이터 수준의 데이터 처리 수용 가능 2. 유연한 스키마 사용 3. 저렴한 클러스터 구성 : 다수 서버를 통한 수평적인 확장 및 데이터 복제 및 분산 저장 가능 4. 높은 가용성 제공 5. 탄력성 : 시스템 일부 장애에도 불구하고 시스템에 접근하는 클라이언트, 응용시스템의 다운타임이 없도록 함 6. 질의가능 : 수십 대에서 수천 대 규모로 구성된 시스템에서도 데이터의 특성에 맞게 효율적으로 데이터를 검색/처리 할 수 있음 7. 높은 확장성 NoSQL종류 1. Key-..

DB/[이론] 2022.03.11

ETL (Operational Data Store, Data WareHouse, Data Mart)

ETL 1. 단어뜻 ETL : extraction, Transformation, Loading (데이터의 이동 및 변환) 2. 과정 Operational Data Store(ODS) => Data WareHouse(DW) => Data Mart 3. 정의 데이터에 대한 추가 작업을 위해 다양한 데이터 원천(source)들로 부터 데이터를 추출, 통합한 데이터베이스. 실시간, 실시간 근접, 원자성을 지닌 하위수준 데이터 저장을 위해 설계 4. 단계 (1) 인터페이스 : 다양한 데이터 원천들로부터 데이터를 획득하는 단계. 실시간 근접실시간, OLAP질의를 지원하기 위해 실시간 데이터 복제 기술 사용 (2) 데이터 스태이징 : 트래잭션 데이터들이 추출되어 하나 이상의 스태이징 테이블에 저장되는 단계 (3) 데..

DB/[이론] 2022.03.11

데이터베이스 장애 복구 방법

로그기반 기법 - 로그파일을 이용한 복구 - redo, undo사용 - 느림 검사점(check point) - 로그파일과 검사점을 이용한 복구 - 로그기반보다 상대적으로 복구속도가 빠름 - undo 사용 그림자 페이징 기법 - 그림자 페이지 테이블을 이용한 복구 - undo간단, redo불필요 - 로그 기반 or 검사점 기반과 함께 사용 - 그림자 페이지 테이블 복사, 기록하는데 따른 오버헤드 발생 - 복사 및 백업본에서 복구하므로 복구 속도가 빠름

DB/[이론] 2022.03.10

데이터 복구

데이터복구란? 데이터베이스 운영 도중 예기치 못한 장애가 발생할 경우 데이터베이스 장애 발생 이전으로 일관성과 무결성을 복원하는것 데이터베이스 장애 유형 1. 트랜젝션 장애 - 논리적 오류 : 내부적은 오류로 트랜젝션 완료 불가 - 시스템 오류 : Deadlock 등의 오류 조건으로 활성 트랜잭션을 강제로 종료 2. 시스템 장애 - 전원, 하드웨어, 소프트웨어 등의 고장 - 시스템 장애로 인해 저장 내용이 영향 받지 않도록 무결성 체크 3. 디스크 장애 - 디스크 스토리지의 일부 또는 전체가 붕괴 - 가장 최근의 덤프와 로그를 이용하여 덤프 이후에 완결된 트랜젝션을 재실행 4. 사용자 장애 - 사용자들의 데이터베이스에 대한 이해 부족으로 발생 - DBA가 데이터베이스를 관리하다 발생하는 실수 데이터베..

DB/[이론] 2022.03.10

교착상태

교착상태(Deadlock) 정의 - 다중 트랜잭션 데이터베이스 시스템에서 다수 트랜젝션이 특정 자원의 할당을 무한정 기다리고 있는 상태 - 교착 상태에 있는 트랜젝션은 실행을 끝낼 수 없으며 시스템 자원이 묶여있어서 다른 작업을 시작하는것도 불가능. - 예시 : T1은 T2가 X를 언락하기를 기다리고, T2는 T1이 Y를 언락 하기를 기다리고 있는 상황 교착상태 발생 원인 - 상호 배제 : 프로세스들이 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용하지 못함 - 점유와 대기 : 프로세스가 어떤 자원을 할당받아 점유하고 있으면서 다른 자원을 요구 - 비선점 : 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없으며 점유하고 있는 프로세스 자신만 해제가능 - 환형대기 : 프로세스..

DB/[이론] 2022.03.10

동시성 제어

동시성 제어란 - 다중 사용자 환경을 지원하는 데이터베이스 시스템에 여러 트랜젝션들이 성공적으로 동시에 실행될 수 있도록 하는것 - 트랜젝션의 직렬화를 수행(트랜젝션이 동시에 수행되더라도 그 결과가 순차적으로 수행되도록 만듦) - 무결성보장, 공유도 최대, 응답시간 최소, 시스템 활동의 최대 보장 동시성 제어 하지 않을 경우 문제점 - 갱신 손실 : 이전 트렌젝션이 종료하기 전에 다른 트랜젝션이 갱신 값을 덮어 쓰는 경우 - 오손 데이터 읽기 : 트랜젝션의 중간 수행결과를 다른 트랜잭션이 참조 - 모순성 : DB가 일관성이 없는 상태로 남음 - 연쇄복귀 : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소불가능 - 반복할 수 없는 읽기 : ..

DB/[이론] 2022.03.10

[백준]2473 세용액 투포인터

풀이 https://sosoeasy.tistory.com/540 에서 숫자 두개의 특정합을 구했다면 이번문제는 세 숫자를 구한다. 풀이법은 다음과 같다. 1. 제일 왼쪽 숫자(first)를 잡는다 2. first 오른쪽 부분에서 투포인터를 적용한다 first left right -2 6 -97 -6 98 3. 1. first를 전체에 대해서 O(N)번, 2.투포인터 부분이 O(N)이므로 O(N^2)으로 풀린다. (N은 최대 5000이므로) 소스코드 import sys N=int(input()) L=list(map(int,sys.stdin.readline().split())) L.sort() min_sum = 9876543210 ans=[0,0,0] for i in range(N-2): first = ..

알고리즘/search 2022.03.07

[백준]2470 두용액 투포인터

풀이 정렬되어 있는 수열에서 특정합을 구하는 문제류는 투포인터를 떠올리자 1. 숫자를 정렬한다. 2. 양쪽 끝에 숫자를 시작 left, right로 잡는다 3. 두 숫자의 합의 절댓값이 min보다 작으면 min을 갱신 4. 두 숫자의 합이 음수이면 left를 +1, 양수이면 right를 -1, 0이면 바로 종료 소스코드 import sys N=int(input()) L=list(map(int,sys.stdin.readline().split())) L.sort() left = 0 right = N-1 min_sum = 9876543210 ans=[0,N-1] while(left

알고리즘/search 2022.03.07

이분탐색 upperbound, lowerbound 정석#2343기타레슨

upperbound, lowerbound 1. 정의 upperbound : 처음으로 target 초과의 값이 나오는 것! lowerbound : 처음으로 target 이상의 값이 나오는 것! 2. 예시 target이 3일때 lowerbound numbers upperbound 5 v 3 3 v 3 2 1 3. 문제에서의 활용 대부분의 lowerbound, upperbound 문제는 trade-off 관계에 있는 두 값(1.최소최대화 조건, 2.제한조건)이 주어진다. 이를 표로 정리하면 다음과 같다 lowerbound 1. 최소최대화 조건 2.제한 조건 upperbound c 5 v b 3 3 v a 3 2 1 제한조건=3에서 최솟값을 찾아야 하면 lowerbound를 사용하여 최솟값인 a를 찾고, 최..

알고리즘/search 2022.03.06

정규화 수행과정 #도부이결다조

정규화 수행과정 -1차 정규화 : 원자값 아닌 도메인 분해(도) -2차 정규화 : 부분 함수 종속 제거(부) -3차정규화 : 이행함수종속 제거(이) -보이스-코드 정규화 : 결정자가 후보키가 아닌 것 제거(결) -4차정규화 : 다치종속 제거(다) -5차정규화 : 조인종속 제거(조) 1차 정규화 - 하나의 컬럼에 원자값을 갖도록 조정 - 예시 2차 정규화 - 부분함수 종속 제거 - 기본키의 일부가 다른 컬럼과 종속 - 예시 3차 정규화 - 이행함수 종속 - 예시 - 물론 학번->학부->등록금을 거치지 않고도, 등록금은 학부에 종속된다(학번에을 알면 해당 학생의 등록금을 무조건 알 수 있기 때문이다.) 하지만 의미적으로 등록금은 학부에 종속적으로 결정되는 것이 맞다. 따라서 이를 분리해 주어야 하는 것이다...

DB/[이론] 2022.03.05

이상현상

샘플 테이블 삽입이상 - 어떤 정보를 삽입하고자 할 때 원하지 않는 정보까지 함께 삽입해야하는 현상 - 샘플테이블에서 (학과명=경영정보, 학과사무실=경영관)이라는 정보를 넣을 때 기본키인 학번이 NULL이 되면 안되므로 경영정보 소속인학생의 학번과 함께 학과명과 학과사무실 정보를 삽입해야함 삭제이상 - 어떤 정보를 삭제하고자 할 때 필요한 정보까지 함께 삭제되는 현상 - 학번=3333인 학생을 삭제할 때 해당 학생이 물리학과에 소속된 유일한 학생이면 물리학과의 사무실이 자연관 이라는 정보도 함께 삭제됨 수정이상(갱신이상) - 어떤 정보를 수정하고자 할 때 동일한 내용의 여러 건의 데이터에서 반복 수정해야 되는 현상 - 컴퓨터공학과의 사무실이 변경되면 컴퓨터공학과 학생 수만큼 사무실 column을 수정해야함

DB/[이론] 2022.03.05

fatal: Authentication failed for ... 오류

fatal: Authentication failed for git push를 했을 때 다음과 같은 오류가 발생했을 때 해결 방법을 알아본다 remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/ 해결 1. 깃허브의 오른쪽위 프로필 사진을 누른 후 setting에 들어간다 2. 왼쪽아래의 Developer settings를 누른다 3. 왼쪽아래의 Personal access tokens를 누른다. 4. 오른쪽에 Generate new token을 누른다 5. Note에는 아무거나쓰고 아래에 repo를 체크해준다. 이후 초록색 Generate token을 누른다 6. 노란색부분에 토큰이 생겼을 것이..

CLI/깃허브 2022.03.03

XML, HTML

XML - 인간과 응용프로그램간, 혹은 응용프로그램 간에 정보를 쉽게 교환하기 위해 만든 데이터 교환 포멧 - 데이터를 저장하고 전달할 목적으로 만들어진 언어 - 데이터를 설명하는 태그를 사용자 마음대로 정의할 수 있음 HTML - 웹페이지의 구조를 만드는데 사용되는 언어 - 데이터를 어떻게 표현할지를 정의하는 언어 - 태그로 구성이 됨

[백준]13023 ABCDE dfs, 시간초과

풀이 일반적인 dfs문제인데 재귀를 타는 함수의 파라미터의 타입에 따라 시간초과가 발생하는 문제였다. 소스코드1 (시간초과) dfs로 재귀가 들어갈때, visited라는 리스트를 파라미터로 쓰면 함수를 호출할때 계속 리스트를 달고 다녀야 한다 이 부분이 시간이 오래 걸린것으로 보인다 import sys N,M = map(int,input().split()) graph={i:[] for i in range(N)} for i in range(M): a,b = map(int,sys.stdin.readline().rstrip().split()) graph[a].append(b) graph[b].append(a) ans=0 def dfs(node,visited): global ans # print(node,vis..

알고리즘/search 2022.03.01

프로그래밍 언어들의 특징

자바스크립트 - 페이지 일부 효과추가, 게임, 애니메이션, 웹 인터페이스 효과적 제어 - 대화식 웹페이지 개발에 효과적 코틀린 - 안드로이드 스튜디오를 제작한 jetbrain이 개발한 함수형 언어 - 안드로이드 공식 프로그래밍 언어로 채택되어 안드로이드 개발에 최적화 - 자바와 매우 유사하며 간결함 스위프트 - 애플에서 개발을 위한 프로그래밍 언어 - ios, macOS 개발등에 최적화 됨 - 단순하고 쉬움