Computer Science
-
6.IndexComputer Science/Database 2022. 1. 7. 16:28
∙Index ∘RDBMS에서 검색 속도를 높이기 위해 테이블의 컬럼을 색인화하는 기술 -색인화 된(B+Tree구조로) Index 파일 검색으로 검색 속도를 향상시킨다. -해당 테이블의 record를 full scan하지 않는다. ○테이블 생성 과정 ➀.frm: 테이블 구조 저장 ➁.MYD: 실제 데이터 저장 ➂.MYI: Index 정보 저장(비워져 있다가 인덱싱하는 경우 생성) ○장점 -검색 속도가 빨라진다. -전반적인 시스템 부하를 줄일 수 있다. -여러 필드로 이루어진(다중 필드) 인덱스를 사용하면 첫 필드 값이 같은 레코드도 구분할 수 있다. -where 절에서 자주 사용 되거나, 외래키가 사용되거나, join을 자주하는 컬럼에 유리하다. ○단점 -.MYI 파일 크기가 증가한다. (DB의 10퍼센트..
-
5.Anomaly(이상)Computer Science/Database 2022. 1. 7. 16:27
∙Anomaly ∘잘못된 테이블 설계로 인해 발생하는 데이터베이스 이상 현상 ➀Insertion Anomaly(삽입 이상) -불필요한 데이터를 추가해야 삽입할 수 있는 상황 -기본키가 {Student ID, Course ID} 인 경우, Course를 수강하지 않은 학생은 Course ID가 없음 결국 Course ID를 Null로 할 수밖에 없는데, 기본키는 Null이 될 수 없으므로, Table에 추가될 수 없음 ->미수강 같은 Course ID를 만들어야 함 ➁Update Anomaly(갱신 이상) -일부만 변경하여 데이터가 불일치하는 모순이 발생한 상황 -만약 어떤 학생의 전공(Department)이 컴퓨터에서 음악으로 바뀌는 경우, 모든 Department 를 음악으로 바꾸어야 함. 그러나 일부..
-
4.SQL과 NOSQL의 차이Computer Science/Database 2022. 1. 7. 16:19
∙SQL ∘RDBMS에서 데이터를 CRUD할 수 있다 -데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. -정해진 구조에 맞는 레코드만 추가 가능하다. -중복을 피하기 위해 데이터는 관계를 통해 여러 테이블에 분산된다. -장점: 데이터 무결성 보장, 데이터를 중복 없이 저장 -단점: 유연하지 않다. 복잡한 쿼리문 발생 가능, 대체로 수직적 확장만 가능 -변경 사항이 반영되는 동시에 반영되어야하는 문제 등으로 일관성 보장이 어려워 수평적 확장이 어렵다. -스키마가 명확하거나 데이터가 자주 변경될 때 유리하다. ∙NOSQL ∘SQL의 반대로 스키마와 관계가 없다 -다른 구조의 데이터를 같은 컬렉션에 추가할 수 있다. -데이터를 여러 테이블에 나누어 담지 않고 동일한 컬렉션에 넣는다. -정보를 나누어 ..
-
3.SQL InjectionComputer Science/Database 2021. 9. 28. 16:52
∙SQL Injection ∘해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 ➀인증 우회 -input 창에 비밀번호를 입력함과 동시에 다른 쿼리문을 함께 입력한다. -기본 쿼리문의 WHERE 절에 OR문을 추가하여 true문을 작성해 DB를 조작한다. ->input 값을 받을 때, 특수문자 여부를 검사한다. ->preparestatement를 사용하면 특수문자를 자동으로 escaping 해준다. ➁데이터 노출 -일부로 에러를 발생시켜 에러 메시지를 분석해 데이터베이스 구조를 유추한다. ->일반 사용자는 view로만 접근하여 에러를 볼 수 없도록 만든다. -View: 하나 이상의 테이블에서 유도된 가상 테이블 출처 링크
-
2.JoinComputer Science/Database 2021. 9. 17. 16:58
∙Join ∘두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 ➀INNER JOIN -교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT * FROM A INNER JOIN B ON A.c = B.c ➁LEFT OUTER JOIN -기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT * FROM A LEFT OUTER JOIN B ON A.c = B.c ➂RIGHT OUTER JOIN -기준 테이블과 join 테이블의 중복된 값을 보여준다. SELECT * FROM A RIGHT OUTER JOIN B ON A.c = B.c ➃FULL OUTER JOIN -합집합으로, 기준 테이블과 join 테이블의 모든 데이터가 검색된다. SELECT ..
-
1.KeyComputer Science/Database 2021. 9. 13. 15:46
∙DBMS(Data Base Management System) ∘다수의 사용자가 데이터베이스내의 데이터를 접근할 수 있도록 설계된 시스템 ○UML(Unified Modeling Language) -이해하기 힘든 복잡한 시스템을 의사소통하기 위해 프로그램 설계를 그림으로 표기하는 방법 ○정규화 -데이터 중복을 최대한 줄여 데이터를 구조화하고 논리적으로 저장하는 방법 ○무결성 -테이블에 있는 모든 행들이 유일한 식별자를 갖는 특성 -외래키 값은 NULL이거나 참조 테이블의 PK 값이어야 한다. -데이터 생성 수정 삭제 시 무결성 조건을 검증하여 보장한다. ○트리거 -자동으로 실행되도록 정의된 저장 프로시저 -프로시저: SQL 서버에서 제공하는 프로그래밍 기능 -생성 수정 삭제에 대한 응답을 자동으로 호출한다..
-
8.Blocking I/O, Non-Blocking I/OComputer Science/Network 2021. 9. 9. 16:22
∙Blocking I/O ∘Process(Thread)가 Kernel에게 I/O를 요청하는 함수를 호출하여 Kernel이 작업을 완료하면 결과를 반환 받음 -I/O 작업이 진행되는 동안 user process(thread)는 자신의 작업을 중단한 채 대기한다. -Resource 낭비가 심하다. -여러 클라이언트가 접속하는 경우 클라이언트별로 thread를 생성해서 context switching이 증가한다. ∙Non-Blocking I/O ∘I/O 작업이 진행되는 동안 user process의 작업을 중단하지 않음 ➀user process가 recvfrom 함수를 호출하여 커널에게 해당 socket의 data를 요청 ➁커널은 곧바로 recvBuffer을 채우지는 못하고 EWOULDBLOCK을 return..
-
7.로드 밸런싱(Load Balancing)Computer Science/Network 2021. 9. 8. 23:50
∙로드 밸런싱 ∘둘 이상의 CPU 또는 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 기법 -Load Balancer를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜준다. ➀Round Robin: 우선순위를 두지 않고, 순서대로 시간단위로 할당하는 방법 ➁Least Connections: 연결 개수가 가장 적은 서버를 선택하는 방법 ➂Source: 사용자 IP를 해싱하여 특정 사용자가 항상 같은 서버로 연결되도록 분배하는 방법 -Load Balancer에 문제가 생길 수 있기 때문에 이중화하여 대비한다 (Active 상태와 Passive 상태). 출처 링크