Computer Science
-
[OS] 운영체제와 컴퓨터Computer Science/OS 2024. 9. 11. 21:08
운영체제사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스로 한정된 메모리나 시스템 자원을 효율적으로 분배한다. 펌웨어(firmware): 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없음 운영체제의 역할CPU 스케줄링과 프로세스 관리메모리 관리디스크 파일 관리I/O 디바이스 관리 운영체제의 구조 GUI(Graphical User Interface)대신 CUI(Command line User Interface)가 있을 수도 있음 시스템콜운영체제가 커널에 접근하기 위한 인터페이스, 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용 I/O 요청으로 fs.readFile() 이라는 파일 시스템의 파일을 읽는 함수가 발동했다고 해보자.이 때 유저 모드에서 파일을 읽지 않고 커널 모..
-
[Database] 인덱스Computer Science/Database 2024. 8. 12. 20:47
인덱스데이터를 빠르게 찾을 수 있는 하나의 장치모든 요소에 접근할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수 확장성으로 효율적임대수확장성: 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것 B-트리인덱스는 보통 B-트리라는 자료구조로 이루어져 있음루트 노드, 리프 노드, 브랜치 노드로 나뉨 인덱스 만드는 방법MySQL클러스터형 인덱스 와 세컨더리 인덱스 로 나뉨클러스터형 인덱스 : 레코드들의 물리적인 저장 순서가 인덱스 순서와 동일하게 되도록 구성된 인덱스인덱스의 리프 노드가 곧 데이터 레코드인덱스 자체에 데이터가 포함됨사전과 유사보조 인덱스보다 검색 속도 빠름동일하거나 인접한 키 값 가진 레코드들은 물리적으로도 인접하게 저장되어 성능 향상데이터의 입력/수정/삭제는 더 느림테이블당 하나..
-
[Data Structure] 우선순위 큐(Priority Queue)와 힙(Heap)Computer Science/Data Structure 2024. 7. 7. 14:36
우선순위 큐와 힙은 서로 밀접하게 관련된 자료 구조다. 우선순위 큐는 추상적인 개념으로서 다양한 방식으로 구현될 수 있으며, 힙은 그 중에서도 매우 효율적인 구현 방식 중 하나다. 우선순위 큐(Priority Queue)우선순위 큐는 각 요소가 우선순위를 가지며, 높은 우선순위를 가진 요소가 낮은 우선순위를 가진 요소보다 먼저 처리되는 자료 구조다. 이를 통해 데이터가 삽입되는 순서와 상관없이 항상 가장 높은 우선순위를 가진 요소를 효율적으로 찾아낼 수 있다. 주요 연산삽입(Insertion): 새로운 요소를 우선순위 큐에 추가삭제(Deletion): 우선순위가 가장 높은 요소를 큐에서 제거우선순위 확인(Peek): 우선순위가 가장 높은 요소를 제거하지 않고 반환 힙(Heap)힙은 완전 이진 트리 ..
-
[Database] 데이터베이스의 종류Computer Science/Database 2024. 6. 3. 15:14
관계형 데이터베이스행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스SQL이라는 언어를 써서 조작MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등 MySQL대부분의 운영체제와 호환되며 현재 가장 많이 사용C, C++로 만들어짐모듈식 아키텍처 -> 스토리지 엔진을 쉽게 바꿀 수 있음쿼리 캐시 지원 PostgreSQLMySQL 다음으로 선호하는 데이터베이스디스크 조각이 차지하는 영역을 회수할 수 있음, VACUUMJSON으로도 데이터에 접근 가능 NoSQL 데이터베이스"Not only SQL" 이라는 슬로건에서 생겨난 데이터베이스SQL을 사용하지 않음MongoDB, redis 등 mongoDBJSON을 통해 데이터에 접근키-값 데이터 모델에서 확장된 도큐먼트 기반..
-
[Database] 트랜잭션과 무결성Computer Science/Database 2024. 5. 30. 15:18
트랜잭션트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. 데이터베이스에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. 트랜잭션의 특징원자성트랜잭션이 데이터베이스에 모두 반영되거나 반영되지 않아야 함트랜잭션을 커밋했는데, 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장해야 함커밋과 롤백: 데이터의 무결성 보장커밋(Commit): 모든 부분작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영함롤백(Rollback): 부분 작업이 실패하면 트랜잭션 실행 전으로 되돌림일관성트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 함고립성트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장해야 함지속성성공적으로 수..
-
[Database] ERD와 정규화 과정Computer Science/Database 2024. 5. 28. 14:50
ERDERD(Entity Relationship Diagram)는 릴레이션 간의 관계들을 정의한 것으로, 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 한다. ERD의 중요성ERD는 시스템 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다. 데이터베이스를 구축한 이후에도 디버깅 또는 프로세스 재설계가 필요한 경우에 설계도 역할을 한다. 때문에 서비스를 구축한다면 가장 먼저 신경 써야 할 부분으로, 이 부분을 신경쓰지 않고 서비스를 구축한다면 단단하지 않은 골조로 건물을 짓는 것과 같다. 예시 정규화 과정정규화 과정은 릴레이션을 여러 개로 분리하는 과정이다. 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스에 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적..
-
[DataBase] 데이터베이스의 기본Computer Science/Database 2024. 5. 21. 16:42
데이터베이스는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되어 있는 데이터의 모음이다. 해당 데이터베이스를 제어, 관리하는 통합시스템을 DBMS(DataBase Management Sysrem)라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 또한, 데이터베이스는 실시간 접근과 동시 공유가 가능하다. 엔티티엔티티는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다. ex) 회원 릴레이션릴레이션은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다. 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다. 관계형 테이터베이스에서는 '테이블'이라고 하며, NoSQL 데..
-
[Network] 계층 간 데이터 송수신 과정Computer Science/Network 2024. 4. 22. 17:58
클라이언트가 서버에 데이터를 요청하면 다음과 같은 과정이 일어난다. 1. 애플리케이션 계층에서 전송 계층으로 클라이언트가 보내는 요청 값들이 캡슐화 과정을 거쳐 전달된다. 2. 링크 계층을 통해 서버와 통신을 한다. 3. 서버의 링크 계층에서 애플리케이션 계층까지 비캡슐화 과정을 거쳐 데이터가 전송된다. 캡슐화 캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 데이터를 삽입하는 과정을 말한다. 1. 애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 '세그먼트' 또는 '데이터그램'화 되며 TCP(L4) 헤더가 붙여진다. 2. 인터넷 계층으로 가면서 IP(L3) 헤더가 붙여지며 '패킷'화 된다. 3. 링크 계층으로 가면서 프레임 헤더와 프레임 트레일러가 붙어 '..