728x90

CS 10

Static/Dynamic Library

□ 정적라이브러리(Static Library) : 정적 라이브러리는 프로그램이 "컴파일할 때 링크"되어 실행 파일에 포함됩니다. 링크 방식은 실행 파일을 생성할 때 이 라이브러리의 모든 코드가 포함됩니다. 따라서 프로그램이 실행될 때 외부 라이브러리 파일이 필요하지 않습니다. 장점 :  1. 외부 의존성 적음 (모든소스 컴파일 타임에 링크되어, 실행 시 추가적인 라이브러리 로드 불필요, 라이브러리 자체만 있으면 실행가능) 2. 초기 로드 속도에서 유리 (정적 라이브러리는 실행 파일에 포함되어 있기 때문 별도로 로드할 필요가 없어 초기 로드 시간이 빠름) 3. 실행 속도에서 유리 (프로그램 실행시 정적라이브러리함수는 직접참조되기 때문에 호출 오버헤드가 적음) 단점 :  1. 더 큰 실행 파일 크기 (각 프..

CS 2025.01.10

컴파일, 링크, 빌드 [CS]

목표컴파일, 링크, 빌드 전체 과정을 이해한다.컴파일, 컴파일러 개념링크, 링커 개념빌드, 빌드툴 개념    빌드 과정1-1 빌드과정 1-1그림 1번은 컴파일(compile)에 해당한다. 1-1그림 2번은 링크(Link)에 해당한다. 1번과 2번 두과정을 합쳐서 빌드(Build)라고 한다.* 소스코드(원시코드) : 컴퓨터 프로그램을 (사람이 읽을 수 있는) 프로그래밍 언어로 기술한 글을 말한다.* 목적코드(목적파일) : 컴파일러나 어셈블러가 소스코드 파일을 컴파일 또는 어셈블해서 생성하는 파일이다.     컴파일, 컴파일러란?컴파일(Complile) : 원시 코드에서 목적 코드로 옮기는 과정을 말한다.그림 1-1 1번을 뜻한다.다시말해서 고급 언어(java, c언어, python 등)에서 저급 언어(기계..

CS 2024.07.03

데이터 웨어하우스 [CS]

- 데이터 웨어하우스 : 데이터 웨어하우스는 데이터베이스 서버를 사용하여 조직의 데이터베이스에서 데이터를 가져오고 데이터 모델링, 데이터 수명주기 관리, 데이터 소스 통합 등을 위한 추가 기능을 제공한다. 데이터 웨어하우스는 가공된 데이터를 저장하고있으며, 이를 통해 바로 유저에게 분석 데이터 제공을 할 수 있는 구조이다. 반면 데이터 레이크는 가공되어 있지 않으며, 유저에게 제공하기 위해서는 전처리 과정을 거쳐야 한다. - 데이터 마트는 데이터 웨어하우스의 하위 섹션으로, 영업, 마케팅 또는 재무와 같은 부서 또는 사업부를 위해 분할되어 있다. 일부 데이터 마트는 오직 운영 목적으로만 생성되기도 한다. 데이터 웨어하우스가 기업 전반의 중앙 데이터 스토리지 역할을 한다면, 데이터 마트는 일부 선택된 사용..

CS 2023.06.11

Batch and Stream Processing [CS]

- 배치 프로세싱(Batch Processing)이란 한정된 대량의 데이터를 정해진 시간에 한번에 처리하는 것이다. 주로 다음과 같은 상황에 많이 쓰인다. (1) 데이터 처리가 실시간을 보장하지 않아도 될 때 (2) 데이터를 한번에 처리할 수 있을 때 (3) 무거운 처리를 할 때 ex) 매일 마다 웹 크롤링, 매달 1일의 생산량 소비량 예측, 매주 고객들에게 마케팅 이메일 전송 - 배치당 처리하는 데이터 수가 다르기 때문에 리소스가 비효율적으로 사용될 수 있다. - 스트림 프로세싱(Stream Processing)이란 이벤트가 생길 때 마다, 데이터가 들어올 때 마다 실시간으로 데이터를 처리하는 것이다. 주로 다음과 같은 상황에 많이 쓰인다. (1) 실시간을 보장해야할 때 (2) 데이터가 여러 소스로부터..

CS 2022.12.22

Data Governance [CS]

- 데이터 거버넌스(Data Governance)란 기업에서 사용하는 데이터의 가용성, 유용성, 통합성, 보안성을 관리하기 위한 정책과 프로세스를 다루는 것이다. 즉, 데이터 거버넌스는 데이터 관리를 의미한다. 데이터 관리에는 데이터 품질관리 뿐만 아니라 메타 데이터 관리, 데이터 수명주기 관리, 데이터 엑세스 및 권한 부여 등의 기능들이 포함된다. - 데이터 거버넌스가 발전하기 위해서는 인사이트를 도출하고 이를 다시 데이터화하는 것이 매우 중요하다. 또한 의미있는 데이터를 잘 축적하고 활용하여 정확한 예측을 할 수 있는 기술에 대한 활용 및 발전도 같이 수반되어야 한다. ref) https://newsroom.koscom.co.kr/17346

CS 2022.12.19

Index & B-Tree [CS]

- 인덱스란 DB에서 데이터의 저장, 수정, 삭제에 대한 성능을 희생시켜 검색 성능을 높여주는 방법이다. 인덱스의 가장 큰 특징은 데이터들이 정렬이 되어있다는 점이다. - 인덱스는 where 절에서 ‘자주 조회’하고 ‘수정 빈도’가 낮으며 ‘데이터 중복’이 적은 컬럼을 선택하는 것이 좋다. join 조건으로 자주 사용되는 컬럼도 인덱스로 사용하면 좋다. - 하지만 인덱스를 사용하는 것이 무조건 좋은 것은 아니다. 인덱스는 INSERT, UPDATE, DELETE 같은 DML에 취약하다. 데이터가 추가되거나 값이 바뀐다면 인덱스 테이블 내에 있는 값들을 다시 정렬을 해야 한다. 또한 인덱스를 관리하기 위해서는 DB에 저장공간이 추가로 필요하기 때문에 인덱스 생성은 마지막 수단으로 강구해야 할 문제이다. -..

CS 2022.12.14

Process & Thread[CS]

- 프로세스(Process)란 메모리에 올라와 실행중인 프로그램이며, 운영체제로부터 시스템 자원을 할당받는 작업의 단위이다. - 프로그램이 실행되면 프로세스로 변경된다. 프로세스 실행 과정은 다음과 같다. - 생성 상태 : 프로그램을 메모리에 가져와 실행 준비가 완료된 상태, PCB가 생성된다. - 준비 상태 : 프로세스가 메모리에 적재된 상태로, 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태 - 실행 상태 : 선택된 프로세스가 CPU를 사용하는 상태 - 대기 상태 : 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때 까지 기다리는 상태- - 완료 상태 : 프로세스가 종료된 상태, PCB가 삭제된다. - PCB(Process Control Block)은 프로세스의 정보를 포함..

CS 2022.12.14

Deadlock [CS]

- Deadlock이란 두 개 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업이 끝나기만을 기다리는 것이 영원히 끝나지 않는 상황을 말한다. - Deadlock은 4가지의 발생조건이 있다. 4가지 조건이 모두 만족해야 발생할 가능성(무조건 발생하는 것 아님)이 있으며, 하나라도 만족하지 않으면 Deadlock이 발생하지 않는다. (1) 상호 배제(Mutual Exclusion) : 한 자원에 대한 여러 프로세스 동시 접근 불가 (2) 점유 대기(Hold and Wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다림 (3) 비선점(No Preemption) : 프로세스는 다른 프로세스의 자원을 강제로 가져올 수 없음 (4) 순환 ..

CS 2022.12.14

ORM [CS]

- ORM(Object Relational Mapping)이란 객체-관계 매핑의 줄임말이다. 즉, 객체라는 개념을 구현한 클래스와 RDB에서 쓰이는 데이터인 테이블을 자동으로 매핑하는 것을 의미한다. 그러나 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다. 따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다. - ORM은 SQL문이 아닌 클래스의 매서드를 통해 DB를 조작할 수 있고, 객체로 작성되었기 때문에 재활용할 수 있다. 또한 매핑하는 정보가 명확하기 때문에 ERD를 보는 의존도를 낮출 수 있..

CS 2022.12.14

MSA [CS]

- MSA(Micro Service Architecture)란 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 형태이다. 아래와 같은 특징을 지닌다. (1) 마이크로 서비스는 스스로 돌아갈 수 있음 (2) 독립적으로 배포가 가능한 서비스임 (3) 각 서비스는 다른 서비스에 대한 의존적이 작아야 함 (4) 각 서비스는 개별 프로세스로 구동되며, REST API와 같은 가벼운 방식으로 통신되어야 함 - 위와 같은 특징으로 인해 서비스 확장성이 좋고, 클라우드 환경에 적합하다는 단점이 있다. 또한 에러 관리 측면에서도 부분적 서비스 장애에 대한 격리가 수월하다. - 하지만 서비스간 호출시 API를 사용하기 때문에 비용이 증가하며, 데이터 관리 관점에서 데이터가 여러..

CS 2022.12.14