SELET, FROM, WHERE - join 위의 SQL문을 해석하자면, instructor라는 relation에서 (from) dept_name이라는 attribute의 값이 Comp.sci이고 salary라는 attribute의 값이 80000이상인 tuple들의 (where) name이라는 attribute의 값을 모든 tuple에서 가져와라 (select) 가 됩니다. 반환되는 relation은 attribute가 name 하나이고 where 조건에 부합하는 tuple들의 집합일 것입니다. 여기서 지난번 살펴본 relation algebra와는 다르게 받아온 relation의 중복은 사라지지 않습니다. sql은 실제 컴퓨터에서 실행되는 언어이기 때문에 중복처리에서 오는 비용을 부담하지 않고, 중..
Relational algebra algebra는 대수라는 뜻으로 수 대신 문자를 사용하는 학문에서 유래된 말입니다. Relational algebra는 데이터베이스의 relation 연산에 사용되는 문자 또는 기호를 말합니다. relation연산은 relation, attribute, tuple의 값을 이용하여 또다른 relation을 만들어 내어 사용자에게 출력하는 연산입니다. Declarative vs Dunctional language Relational algebra는 기본적으로 functional language입니다. functional language란 declarative language와 같이 A = B + C 정의 하는 언어가 아니라 모두 함수 식으로 작동되는 언어입니다. 위 식을 f..
Relational model 데이터들을 어떻게 조직, 생성, 조작하는가 또한 어떻게 규칙을 줄 것인가에 따라 사용하는 데이터베이스가 사용하는 모델이 달라집니다. 우리가 보통 알고 있고, 사용하는 데이터베이스는 Relational model입니다. 추가적으로 Relation model을 생성하기 전에 디자인 단계의 모델을 Entity-Relationship data model(E-R model)이라고 합니다. C의 UML과 비슷한 개념이라고 생각하면 될 것 같습니다. . . . 이제 Relational model의 특징을 알아보겠습니다. 데이터는 relation이라고 불리는 테이블에 저장할 수 있습니다. tuple 하나의 튜플은 각 attribute를 나타내는 요소들의 집합을 말합니다. 집합이라고 해서 ..
Key 중복 되지 않는 Attribute DDL과 DML DDL(Data Definition Language) - 스키마를 정의 ex) 테이블 생성, 삭제 - create table instructor - drop table instructor DML(Data Manipulation Language) - 데이터 조회, 수정 query 문 ex) select (attribute1, attribute2, , ,) from (relation1, relation2, , , ) where (condition1, condition2 , , ,) Clause(select, from, where) select (attribute1, attribute2, , ,) from (relation1, relation2, , ,..
OS는 kernel, system utility, shell 이렇게 3가지 소프트웨어를 가지고 있습니다. OS의 구성 kernel - why use kernel 커널은 OS의 핵심적인 기능을 수행하는 코드로, 사용자가 컴퓨터 하드웨어를 어떻게 사용할 것인가를 결정해줍니다. 사용자가 프로그램을 실행시킨다는 것은 다음과 같이 세분화할 수 있습니다. 먼저 프로그램은 CPU에 계산을 명령하는 op-code(instruction)의 집합입니다. 그 op-code들은 disk에 존재하고, 그 데이터를 memory로 이동시켜야 CPU와의 요청과 응답을 빠르게 주고 받을 수 있습니다. 이 때 커널은 op-code(프로그램)이 위치할 memory 주소를 결정하고, 만약 프로그램이 시작된다면 그 op-code들이 CPU의..
컴퓨터 발전의 초창기에 CPU는 국가적 자원이었기 때문에 processor의 사용률을 최대한 늘리는 방향으로 OS가 발전했습니다. 최초의 OS는 Monitor로, I/O 처리에 의해 발생하는 CPU의 대기시간에 CPU가 다른 프로그램을 처리할 수 있도록 프로그램들을 실시간으로 감시하여 메모리상 주소를 재배치 하는 batch System을 사용했습니다. (Maximize processor use) [batch system - https://rekodo.tistory.com/11] 하지만 하드웨어의 성능이 개선될수록 컴퓨터의 가격이 싸지고 사람의 노동 가치가 비싸지면서, CPU가 사람이 수행하는 작업들에 대해 얼마나 빠른 시간안에 응답할 수 있는지가 중요해졌습니다. (Minimize response time..
OS - mediator, resource manager OS는 하드웨어와 application 사이에서 사용자 프로그램의 작업을 처리하기 위해 하드웨어에게 어떻게 명령해야 효율적인지 (cpu 명령, 메모리 주소 할당, I/O 발생 처리 등) 어떻게 컴퓨터 자원을 편리하게 사용할 수 있는지에 목적을 두고 발전해왔습니다. OS는 application을 실행할 수 있는 편리한 interface를 제공하고, 프로세스의 생성과 끝까지의 관리에 책임을 집니다. 또한 프로그래머에게 programming interface(java, python과 같은 언어)을 원활하게 이용할 수 있는 하드웨어 사이의 interface도 OS 수준에서 정의되어 있습니다. 그리고 여러가지 컴퓨터 자원과 처리 중인 데이터가 어디로 이동할..
CPU는 i/o device와 다음과 같은 방식으로 데이터를 주고받습니다. CPU와 device가 직접 데이터를 주고받는 것이 아니라 system bus라는 데이터 전송 라인과 I/O controller라는 하드웨어를 통해 데이터를 전달하게 됩니다. System bus - Address bus : 데이터의 출발 주소와 도착 주소를 전송합니다. - Data bus : 실제 데이터 정보를 전송합니다. - Control bus : read/write와 같은 각 위치에서의 데이터 처리에 필요한 명령을 전송합니다. I/O Controller CPU가 다양한 input처리 때문에 낭비되는 시간을 줄이기 위해서 CPU 대신 I/O device에 대한 처리를 하는 하드웨어입니다. i/o controller도 데이터, ..