728x90

Computer/CS 39

컴파일/트랜스파일/인터프리터

컴파일/트랜스파일/인터프리터컴파일(Compile)한 언어로 작성된 소스 코드를 다른 언어로 변환하는 것이 컴파일이다.C언어를 기계어로 옮기는 것, Java를 Bytecode로 옮기는 것 모두 이 정의에 따르면 Compile에 해당한다. 심지어 TypeScript를 JavaScript로 옮기는 것 역시 이 범주안에 속한다고 할 수 있기도 하다. (엄밀히 말하면 트랜스파일링이다.)고수준의 언어를 바이트 단위의 기계어로 변환해야 컴파일이라고 말하는 것이 아니다. 컴파일은 한 언어로 작성된 코드를 다른 언어로 옮기는 일 자체를 통칭한다고 보면 된다.트랜스파일(Transpile)한 언어로 작성된 소스 코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 것이 트랜스파일이다.Transpile은 Compile의 ..

Computer/CS 2024.08.16

Redis

Redis빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다.보통 데이터베이스는 하드디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다.캐싱도 실시간으로 가능하며 실시간 채팅에 적합하다. 세션 공유를 위해서 세션 클라스터링에도 활용 가능하다.저장 공간이 RAM 이라면 휘발성 문제는?백업 과정이 존재한다.Snapshot : 특정 지점을 설정하고 디스크에 백업한다.AOF(Append Only File) : 명령(쿼리)들을 저장해두고, 서버가 셧다운 되면 재실행해서 다시 만들어 놓는 것이다.데이터 구조는 key/value 값으로 이루어져 있다. 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다.value 5가지S..

Computer/CS 2024.07.16

Database - 트랜잭션 격리 수준(Transaction Isolation Level)

트랜잭션 격리 수준(Transaction Isolation Level)Isolation Level트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준이다.Isolation level의 필요성데이터베이스는 ACID 특징과 같이 트랜잭션이 독립적인 수행을 하도록 한다.따라서 Locking을 통해, 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하도록 막는 것이 필요하다.하지만 무조건 Locking으로 동시에 수행되는 수많은 트랜잭션들을 순서대로 처리하는 방식으로 구현하게 되면 데이터베이스의 성능은 떨어지게 될 것이다.그렇다고 해서, 성능을 높이기 위해 Locking의 범위를 줄인다면, 잘못된 값이 처리될 문제가 발생하게 된다.Isolation level의 종류Read Uncommitted(레벨 ..

Computer/CS 2024.07.11

Database - 정규화(Normalization)

정규화(Normalization)데이터의 중복을 줄이고, 무결성을 향상시킬 수 있는 정규화에 대해 알아보자Normalization중복된 데이터를 허용하지 않는 것이다.중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있다.목적데이터의 중복을 없애면서 불필요한 데이터를 최소화시킨다.무결성을 지키고, 이상 현상을 방지한다.테이블 구성을 논리적이고 직관적으로 할 수 있다.데이터베이스 구조를 확장에 용이해진다.과정정규화에는 여러가지 단계가 있지만, 대체적으로 1~3단계 정규화까지의 과정을 거친다.제 1정규화(1NF)테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것을 말한다.만족해야 할 조건어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있..

Computer/CS 2024.07.10

Database - Index

IndexDB Index목적RDBMS에서 검색 속도를 높이기 위한 기술Table의 Column을 색인화 한다.(따로 파일로 저장한다)과정Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성된다.FRM : 테이블 구조가 저장되어 있는 파일이다.MYD : 실제 데이터가 있는 파일이다.MYI : Index 정보가 들어가 있는 파일이다.Index를 사용하지 않는 경우, MYI 파일은 비어져 있다. 그러나, 인덱싱하는 경우 MYI 파일이 생성된다.이후에 사용자가 Select 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색한다.단점Index 생성시, .mdb 파일 크기가 증가한다.한 페이지를 동시에 수정할 수 있는 병행성이 줄어든다.인덱스 된 Field에서 Data를 ..

Computer/CS 2024.07.09

SQL과 NOSQL의 차이

SQL 장점명확하게 정의된 스키마, 데이터 무결성 보장한다.관계는 각 데이터를 중복 없이 한번만 저장한다.SQL 단점덜 유연하다. 데이터 스키마를 사전에 계획하고 알려야 한다.관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.대체로 수직적 확장만 가능하다.NoSQL 장점스키마가 없어서 유연하다. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능하다.데이터는 애플리케이션이 필요로 하는 형식으로 저장된다. 데이터 읽어오는 속도 빨라진다.수직 및 수평 확장이 가능해서 애플리케이션이 발생 시키는 모든 읽기/쓰기 요청 처리 가능하다.NoSQL 단점유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다데이터 중복을 계속 업데이트 해야 한다데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 ..

Computer/CS 2024.07.09

SQL Injection

SQL Injection해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법이다.공격 방법인증 우회데이터 노출방어 방법input 값을 받을 때, 특수문자 여부 검사하기로그인 전, 검증 로직을 추가하여 미리 설정한 특수 문자들이 들어왔을 때 요청을 막아낸다.SQL 서버 오류 발생 시, 해당하는 에러 메시지 감추기view를 활용하여 원본 데이터베이스 테이블에는 접근 권한을 높인다. 일반 사용자는 view로만 접근하여 에러를 볼 수 없도록 만든다.preparestatement 사용하기preparestatement를 사용하면, 특수문자를 자동으로 escaping 해준다. 이를 활용해 서버 측에서 필터링 과정을 통해서 공격을 방어한다.

Computer/CS 2024.07.08

Database - Join

Database - Join두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다.JOIN의 종류INNER JOIN교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다.LEFT OUTER JOIN기준 테이블 값과 조인테이블과 중복된 값을 보여준다.왼쪽 테이블을 기준으로 join 한다.RIGHT OUTER JOINLEFT OUTER JOIN과는 반대로 오른쪽 테이블을 기준으로 JOIN한다.FULL OUTER JOIN합집합을 뜻한다.A와 B 테이블의 모든 데이터가 검색된다.CROSS JOIN모든 경우의 수를 전부 표현해주는 방식이다.A가 3개, B가 4개면 3*4 = 12개..

Computer/CS 2024.07.08

Database - Key

Database - Key1. Candidate Key(후보키)Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합.(기본키로 사용할 수 있는 속성들)2가지 조건을 만족한다.유일성 : key 하나로 tuple을 유일하게 식별할 수 있다.최소성 : 꼭 필요한 속성으로만 구성한다.2. Primary Key(기본키)후보키 중 선택한 Main Key특징Null 값을 가질 수 없다.동일한 값이 중복될 수 없다.3. Alternate Key(대체키)후보키 중 기본키를 제외한 나머지 키 = 보조키4. Super Key(슈퍼키)유일성은 만족하지만, 최소성은 만족하지 못하는 키5. Foreign Key(외래키)다른 릴레이션의 기본키를 그대로 참조하는 속성의 집

Computer/CS 2024.07.08
728x90