SQL | NoSQL |
---|---|
주로 관계형 데이터베이스 | 비관계형, 분산형 |
테이블기반, 스키마를 엄격히 준수 | 문서기반, 스키마 정의를 지키지 않아도 됨 |
정규화된 스키마 선호 | 비정규화된 스키마 선호 |
높은 트랜젝션에 알맞음 | 트랜잭션 구현이 힘듬 |
MySQL, Oracle, MS-SQL, SQLite. | MongoDB, Apache CouchDB, Redis |
SQL 장점:
SQL의 단점:
NoSQL장점:
NoSQL의 단점:
Node JS는 싱글 스레드 이벤트 논블로킹 모델이다
그런데 싱글스레드인데 어떻게 논블로킹 모델일까?
NodeJS는 이벤트 리스너에 등록해둔 콜백 함수를 실행하는 방식으로 동작하기 떄문. 즉 이벤트 루프가 이를 가능하게 만들어준다.
NodeJS의 특성인 이벤트 기반, 논 블로킹 I/O 모델들은 모두 libuv 라이브러리에서 구현된다
코딩에서도 많이 느꼇지만, Nodejs의 거의 모든 코드들은 콜백함수 안에서 이루어진다.
콜백 함수들은 libuv 내에 위치한 이벤트 루프에서 관리 및 처리되는데,
이벤트 루프는 라운드 로빈 방식으로 노드 프로세스가 종료될 때까지 여러 페이지들을 계속 순회한다.
라운드 로빈: 각각의 프로세스들에게 일정한 시간을 주고 각 프로세스는 부여받은 시간이 끝나면 차례를 다음 프로세스에게 넘겨준다. 다음 프로세스는 또다시 부여받은 시간동안만 동작하고 다시 다음프로세스가 실행된다.
출처
아직은 잘 모르겠다... 근데 이렇게 깊게 깊게 물어볼지는 모르겠다...
이벤트 루프는 여러 개의 페이즈(Phase)들을 갖고 있으며,
해당 페이즈들은 각자만의 큐(Queue)를 갖습니다. 이벤트 루프는 라운드 로빈(round-robin) 방식으로 노드 프로세스가 종료될때까지 일정 규칙에 따라 여러개의 페이즈들을 계속 순회합니다. 페이즈들은 각각의 큐들을 관리하고, 해당 큐들은 FIFO(First In First Out) 순서로 콜백함수들을 처리합니다.
...정리와 이해중...
express는 가볍고 개방적인 웹프레임 워크중 하나.
그중 미들웨어는 express의 특징중 하나인데,
익스프레스 내에서 웹 요청과 응답에 대한 정보를 사용해서 필요한 처리를 진행할 수 있도록 분리된 독립적인 함수들의 모임을 미들웨어라 칭한다.
HTML5에 Web Storage가 생기면서 데이터 지속성을 위해
Session Storage와 Local Storage가 존재한다.
저장한 데이터를 명시적으로 지우지 않는 이상 영구적으로 보관이 가능하다. 앞서 말한대로 도메인마다 별도로 로컬 스토로지가 생성된다. Windows 전역 객체의 LocalStorage라는 컬렉션을 통해 저장과 조회가 이루어진다.
SessionStorage는 데이터의 지속성과 액세스 범위에 특수한 제한이 존재한다. SessionStorage는 windows 전역 객체의 sessionStorage라는 컬렉션을 통해 저장과 조회가 이루어진다.
GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미한다.
필요한 데이터를 Body로 보내지 않고 쿼리 스트링을 통해 전달한다.
이에 따라 GET은 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야하기에 주로 조회를 할 때에 사용해야한다. 예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게된다.
반대로 POST는 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다.
이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용됩니다. 게시글을 쓰면 서버에 게시글이 저장이 되고, 게시글을 삭제하면 해당 데이터가 없어지는 등 POST로 요청을 하게 되면 서버의 무언가는 변경되도록 사용됩니다.
Cookie | Session | |
---|---|---|
저장위치 | Client | Server |
저장형식 | Text | Object |
만료시점 | 쿠키 저장시 설정 (설정 없으면 브라우저 종료 시) | 정확한 시점 모름 |
리소스 | 클라이언트의 리소스 | 서버의 리소스 |
용량제한 | 한 도메인 당 20개, 한 쿠키당 4KB | 제한없음 |
데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
즉 쪼갤수 없는, 일부만 동작해서는 안되는 수행작업이기 때문에 모두 반영되야하거나 오류발생시 다시 원상태로 복구해야한다.
원자성(Atomicity) : 모든 작업이 커밋되거나 롤백되어야함
일관성(Consistency) : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 한다
ex. 계좌 A에서 계좌 B로 돈을 보낼 때, A에서 출금된 돈과 B에서 받은 돈이 같아야 된다는 뜻.
독립성(Isolation) : 각각의 트랜젝션은 서로 간섭없이 독립적으로 수행되어야 한다. 동시에 실행하는 트랜잭션으로 인한 문제를 피하기 위한 방법은 순차적으로 트랜잭션을 실행하는 것이다.
영속성(Durability) : 트랜잭션이 성공적으로 완료 되었으면 결과는 영구적으로 반영되어야 한다.
DML : 데이터베이스에 들어있는 데이터를 조작, 조회, 검색하기 위한 명령어
[ SELECT, DELETE, UPDATE, INSERT ]
DDL: 테이블 구조를 정의하는데 사용되는 명령어
[CREATE, ALTER, DROP, TRUNCATE(초기화) ]
DCL: 데이터베이스에 접근하거나 객체에 권한을 주는 등 역할을 하는 언어 [ COMMIT, ROLLBACK, GRANT, REVOKE ]
INNER JOIN: 2개 이상의 테이블에서 교집합만을 추출
LEFT JOIN: 2개 이상의 테이블에서 FROM에 해당하는 부분을 추출
RIGHT JOIN: 2개 이상의 테이블에서 FROM과 JOIN하는 테이블에 해당하는 부분을 추출
OUTER JOIN : 아웃터 조인 or 풀조인이라고 불림
2개 이상의 테이블에서 모든 테이블 해당하는 부분을 추출
DML이 수행되었을때 데이터 베이스가 자동적으로 동작하도록 만든 프로그램
데이터베이스의 중복을 최대한 줄이기 위해 테이블을 분리하는 작업
정처기생각난다... 제1정규화,2정규화,3정규화,BCNF,4정규화,5정규화