목록Computer Science (11)
nathan_H
Intro 어플리케이션 개발을 함에 있어, 데이터베이스는 필수적으로 사용하게 된다. 그리고 데이터베이스도 SQL, NoSQL 중 선택의 갈림길에 놓이게 된다. SQL & NoSQL의 각 특징을 파악하고, 어떤 상황과 용도로 사용하는 것이 적절한지 정리하고자 한다. SQL SQL(Structured Query Language)은 데이터베이스 자체를 나타내는 용어는 아니다, 특정 유형의 데이터베이스와 상호 작용하기 위한 쿼리 언어이다. 그래서 정확히 이야기 하면, RDMBS에서 사용되는 쿼리 언어라고 보면 되는데, 설명을 위해 SQL을 RDBMS 의미로 같이 사용할 예정이다. RDBMS (관계형 데이터베이스) 특징 엄격한 스키마 : 정해진 데이터 스키마(구조)에 따라 데이터베이스 테이블에 저장된다. 관계 :..
Intro 프로세스와 쓰레드가 먼지는 알지만, 막상 말로 설명하려면 제대로 못하는 경우가 많다. 아는 것과 이해한 것은 다르기 때문에 이번에 명확하게 "이해"하고자 프로세스와 쓰레드에 대해 정리하고자 한다. 들어가기 전에 프로그램 & 프로세스 & 쓰레드 각 용어에 대한 의미를 파악하고 가자. 프로그램 : 작업을 위해 실행할 수 있는 파일. 프로세스 : 연속적으로 실행되고 있는 프로그램 스레드 : 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스 프로세스는 앞서 언급했던대로, "실행되고 있는" 프로그램이다. 즉 운영체제 메모리에 올라와 실행되고 있는 단위라고 보면 된다. 특징 프로세스는 독립된 메모리 영역을 가지고 있다. Heap, Data, Code(text), Stack Heap : 프로세스가 실행되..
Intro 개발을 하다보면, 동기 / 비동기, Blocking & Non-Blocking 라는 용어는 한 번쯤 들어봤을 것이다. 그러나, 동기 / 비동기 & Blocking / Non-Blocking 각각의 내용을 제대로 명확하게 설명하기란 쉽지가 않다. 그래서 하나씩 뜯어 보면서, 어떤 목적으로 사용하는지에 대해 정리하고자 한다. Blocking I/O Application단에서는 I / O 작업을 직접 실행시킬 수 없다. 그래서 System_call로 Kernel을 통해 작업을 수행할 수 있다. system_call을 하게 되면 context-swtiching이 발생하면서 작업이 수행된다. 여기서 Blocking I / O을 통해 작업을 수행할 경우에는, 실행한 함수가 반환될 때까지 "대기"하고 있는..
What is the Internet? 컴퓨터, 핸드폰, 스마트 Tv 등등 지금 시대는 인터넷이 사용 안되는 곳이 거의 없고, 인터넷을 통해 많은 사람들이 서로 연결되고 소통을 할 수 있다. 그렇다면 과연 '인터넷'은 무엇이고 어떻게 동작하고 수 많은 데이터는 어떻게 주고 받게 되는 것 일까?? 인터넷 인터넷은 Network of networks로 수 많은 Network가 연결된 하나의 망이라고 보면 됨. 여기서 Network는 다양한 Protocols을 통해 Message을 주고 받으면서 Control되게 되어 있음. 프로토콜 프로토콜은 네트워크에서만 사용하는 용어가 아니라 범용적으로 사용하는 용어인데, 인간도 암묵적으로 하나의 프로토콜을 가지고 소통을 하고 있음. Person 1: 안녕~ Person..
이번 포스팅은 지난 트랜잭션 포스팅의 연장선으로 트랜잭션이 어떤 방식으로 관리되는지에 대한 내용을 담고자 한다. 병행 수행과 병행 제어 DBMS는 여러 사용자가 데이터베이스를 동시에 공유할 수 있도록 여러 개의 트랜잭션이 동시에 수행되는 병행 수행을 지원을 하기 되는데, 병행 수행은 실제로 여러 트랜잭션들이 차례로 번갈아 수행되는 인터리빙 방식을 진행함. 병행 수행을 하더라도 각 트랜잭션이 다른 트랜잭션의 방해를 받지 않고 정확한 수행 결과를 얻을 수 있도록 제어해야 함. 서로 다른 데이터를 사용하여 연산을 수행하는 경우에는 괜찮지만, 같은 데이터에 접근하여 변경하려고 할 때 문제가 발생함. 여러 개의 트랜잭션이 병행 수행하면서 같은 데이터 접근하여 연산을 실행하더라도, 문제가 발생하지 않고 정확한 수행..
데이터 베이스는 우리가 흔히 사용하는 파일 시스템과는 달리 기본적으로 4가지 특징이 존재한다. 1) 실시간 접근성 2) 계속적인 변화 3) 동시 공유 4) 내용에 따른 참조 이외에도 디비의 장점이라고 볼 수 있는 부분으로는 데이터의 일관성과 지속성이라고 볼 수 있다. 하지만 보통 DBA나 데이터 베이스를 깊게 다루지 않는 이상. 개발을 하는 입장에서는 DBMS가 어떻게 데이터의 일관성과 지속성을 관리하는지에 잘 모르는 경우가 많다. (나도 자세히 알지는 못한다.) 그리고 아직까지 짧은 나의 개발 경험상 개발자 입장에서는 질의에 대한 성능 최적화 부분에만 튜닝을 잘해주면 됐다. 그러나, DBMS가 어떻게 동작하고, 데이터를 관리하는지에 대해 한층 깊은 이해도가 생긴다면, 추후 데이터베이스를 활용한 개발 측..
Index 란? 나는 현재 노션을 적극 활용해 내가 공부하는 내용 정리를 많이 하는 편이다. 그리고 작성 때마다 항상 위와 같이 content 별로 바로 찾아서 갈 수 있도록 보여주는 색인 기능을 자주 활용한다. 만약 색인을 사용하지 않는다면, 데이터 삽입이라는 부분을 보고 싶을 때 스크롤을 쭉 내려야 하는 번거로움이 생긴다. 즉 색인(Index) 기능은 "내가 원하는 부분에 쉽고 빠르게 찾아서 전달해주는 역할"을 한다. 그리고 데이터 베이스에서도 색인이라는 기능은 똑같이 "정보 검색"에 있어 성능을 최적화시켜줄 수 있는 유용한 도구로 많이 사용된다. 왜 DB에서 Index를 사용해야 할까? 다시 한번 디비 관점에서 "왜" 인덱스를 사용해야 하는지에 이야기해보면, 위 예시서 SELECT 문을 활용해 SC..
큐는 스택 자료구조와 달리 FIFO (First-In First-Out)- 선입 선출 특징으로 넣을 때에는 한 쪽 끝에서 밀어 넣어야 한다. -> enqueue 연산 꺼낼 때에는 반대 쪽에서 뽑아 꺼내야하는 제약 -> dequeue 연산 즉 enqueue로 삽입된 원소가 가장 나중에 dequeue로 빠져나온다는 것이다. 추상적 자료구조 구현 method size() - 현재 큐에 들어 있는 데이터 원소의 수 O(1) isEmpty() - 현재 큐가 비어 있는지 판단 O(1) enqueue(x) - 데이터 원소 큐에 추가 O(1) dequeue - 큐에 맨 앞에 저장된 데이터 원소 제기 or 반환 O(n) peek() - 큐의 맨앞에 저장된 데이터 원소 반환(제거 x) O(1) dequeue 시간 복잡도 ..