일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 실습
- command not found
- Unreal
- 1253번
- 백준
- SQL
- Linux
- hackerank
- C++
- OS
- UActor
- 언리얼 플러그인
- 셰그먼트트리
- Security
- 오손데이터읽기
- FBX
- 1759번
- objtofbx
- 2단계로킹
- 언리얼 커스텀 플러그인
- 백준 1253번
- 5639
- 비재귀셰그먼트
- 1967번
- 데이터베이스 배움터
- oracle
- UnrealMP
- 민겸수
- 트랜잭션 관리
- 의미와 무의미의 경계에서
- Today
- Total
목록컴퓨터 공학 (11)
fatalite
트랜잭션 트랜잭션이란, 데이터베이스에 요청되는 질의들의 논리적 단위이다. 트랜잭션은 다음 4가지 특성(ACID)을 가지고 있어야한다. Atomic : ALL or Nothing, 트랜잭션이 절반만 이뤄지는 경우가 없어야한다는 것이다. 즉, 더이상 나누어질 수 없는 단위를 의미한다. Consistency : 트랜잭션이 일어나기 전과 후는 또 다른 일관된 상태를 가지고 있다. 여기서 일관된 상태란, 데이터베이스의 무결함을 유지한다는 뜻이다. Isolation : 고립되어있다. 즉, 트랜잭션은 서로의 존재를 모른다고 가정한다. Durability : 지속된다. 트랜잭션이 한 번 완료된다면, 번복되지 않는다. DBMS는 이를 회복 모듈로 달성하게 된다. COMMIT은 모든 트랜잭션이 끝났다는 뜻이다. ROLLB..
뷰란 뷰란 릴레이션을 이용한 가상 릴레이션이다. 하나 혹은 여러 개의 릴레이션을 가공해서 인터페이스처럼 제공하는 것이다. 뷰는 다음과 같은 명령어로 생성할 수 있다. CREATE VIEW view_name (attr1, attr2, ...) AS SELECT ~ WITH CHECK OPTION WITH CHECK OPTION은 튜플 삽입시 조건을 명시한다. 따라서 뷰의 장점은 다음과 같이 나열할 수 있다. 간단함 무결성 독립성 보안성 뷰의 갱신을 하는 방법이다. 기존 테이블과 같이 INSERT, UPDATE될 수 있다. 그러나, 뷰의 원래 릴레이션의 무결성 제약조건을 만족하지 않으면 거절된다. 예를 들어 원래의 릴레이션의 기본키를 포함하지 않는다. 원래의 릴레이션에 NOT NULL이 붙었는데, NULL ..
무결성 제약 조건 및 키 제약 조건 테이블 만들 때 조건 걸기(CREATE TABLE) CREATE TABLE users(user_id int primary key, password int check(password >= 0)); create table users(user_id char(64), constraint pk primary key user_id); CREATE TABLE 테이블_명 ( 컬럼명_첫번째 자료형 제약 조건 , ...); 제약 조건 이름 따로 없는듯? CREATE TABLE 테이블_명 ( 컬럼명_첫번째 자료형, CONSTRAINT 제약_조건이름 제약_조건키워드(PARAMETER) ); 추가적으로 할 때(ALTER TABLE) ALTER TABLE users add phone_numbe..
#1 SELECT LAST_NAME, HIRE_DATE FROM EMPLOYEES WHERE DEPARTMENT_ID = (SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE LAST_NAME = 'Zlotkey') AND LAST_NAME 'Zlotkey'; #2 SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEES) ORDER BY SALARY; #3 SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE LAST_NAME..
#1번 문제 select e.last_name, e.department_id, d.department_name from employees e, departments d where e.department_id = d.department_id; #2 select e.job_id, d.location_id from employees e, departments d where e.department_id = 80 AND e.department_id = d.department_id group by e.job_id, d.location_id; #3 select e.last_name, d.department_name, d.location_id, l.city from employees e, locations l, dep..
주 메모리를 제외한, 2차 저장장치에 대한 설명이다. HDD와 SSD가 포함된다. HDD HDD의 요소들 HDD의 입출력 시간 1) Seek Time 2) Rotation Latency 3) Transfer Time 이 3 가지 요소가 입출력 시간에 영향을 미친다. SSD의 요소들 Erase before write SSD는 Block과 Page로 구성되어있다. : read, write는 page단위로 가능하다. Block 단위로 사용하기 전에 erase 해야하는데, SSD가 over-write를 허용하지 않기 때문이다. 또한 블럭마다 쓸 수 있는 최대 횟수가 정해져 있다. 이를 넘어가면 사용할 수 없기 때문에, Wearing level을 통해 분산해야한다. Disk Attachment 디스크 부착은 Ho..
select * from employees; #1번 문제 select max(salary) as "Maximum", min(salary) as "Minimum", sum(salary) as "Sum", round(Avg(salary)) as "avg" from employees; #2번 문제 select JOB_ID, max(salary) as "Maximum", min(salary) as "Minimum", sum(salary) as "Sum", round(Avg(salary)) as "avg" from employees group by JOB_ID order by JOB_ID; #3번 문제 select JOB_ID, count(JOB_ID) as "count" from employees group b..
운영체제 마지막 챕터다. 보안은 공격자(Attacker, Cracker)가 어떠한 서비스를 동작하지 못하게 하는 것이나 위협하는 것을 방지하는 것을 의미한다. 보안으로 고려할 사항은 물리적 보안 네트워크 보안 운영체제 보안 프로그램 보안 사용자 보안 - 사회 공학을 이용한 공격 등. 이 존재한다. 프로그램에 의한 위협은 악성코드(Malware) : 허가된 프로그램에 존재하는 위협적인 코드를 의미한다. 예를 들어 트로이목마는 허가된 프로그램인 척 잠입해서, 컴퓨터를 조작한다. 그 외에도 스파이웨어, 랜섬웨어, 백도어(트랩 도어) 등이 존재한다. 코드 인젝션(Code Injection) : 인젝션은 주입이라는 뜻으로, 악의적인 의도로 코드를 집어넣어 예상 외의 동작을 유도하는 것을 의미한다. SQL Inje..
Preface 일단 파일이란, 유저가 받아들이는 정보의 논리적 단위라고 할 수 있다. I/O System과 Storage에서는 OS가 어떻게 그들을 다룰지를 배웠다면, 이번 챕터는 OS가 User에게 어떻게 Storage를 다루게 할지에 관한 이야기라고 할 수 있다. 크게, 두 가지로 나눌 수 있는데 첫 번째는 File System Interface(유저 - OS 관점)이고 두 번째는 File System Implementation & File System Internal(OS - 하드웨어 혹은 Only OS 관점) 이다. 즉, 어떻게 논리적으로 보여줄지와, 그것을 어떻게 구현할지이다. File System Interface 0. File 파일은 위에서 설명했던 내용을 숙지하고 있으면 된다. 1. Fil..
Virtual Memory 이전의 메모리의 경우, 램 크기에 한정되었다. 그러나 프로세스의 크기가 꼭 램 크기에 맞으리란 보장이 없다는 것을 알 수 있다. 이를 위해 필요한 페이지만 메모리에 올려놓고, 필요하지 않으면 저장 공간에 넣어둔다. 넣었다가 빼는 걸 Swap-in, Swap-out이라고 한다. 만약 프로세스에서, 이 페이지가 없다는 것을 알게 되면, 일단 페이지 테이블을 조사해서 해당 페이지가 in-valid인지 확인한다 만약 in-valid라면, 운영체제한테 Trap을 건다. 그러면 운영체제는 일단 멈춰서 프로세스 정보, 레지스터 등을 저장한다. 이후에는 저장장치에서 해당 페이지를 가져온다. 운영체제는 가용가능 프레임을 가지고 있는데, 만약 할당이 가능하면 이를 넣는다. 아, 그리고 시작할때 ..