결과가 나올 때까지 기다린 후 처리하는 것
I/O 작업 준비에 대한 이벤트의 발생
을 기다린 후 해당 이벤트 발생 시 그에 따른 적합한 처리
를 해준다.값이 반환될 때까지 Blocking
이 되어있다. Blocking
- I/O가 끝난 후에 함수를 반환 (return). 즉, 커널이 작업을 완료하기까지 유저 프로세스 작업을 중단한 채 대기
- return을 기다리는 동안 대기 큐에 머무는 것이 필수
유저 프로세스의 작업을 중단시키지 않는다
이벤트 큐 또는 백그라운드 스레드에게 task를 위임
하고 다음 코드를 바로 실행한다.Sum Up
동기는 일이 처리될 때까지 기다려주고,
비동기는 이벤트큐나 백그라운드 스레드에게 일을 맡기고 다른 작업을 진행한다.
분산된 데이터 저장 및 조회하는 데 특화
되어있다.데이터 복제 등의 방법으로 관계형 데이터 베이스가 제공하지 못하는 성능과 특징
을 통한 가용성 용이하다.Replica Set
동일한 데이터를 다중 노드에 저장하여 다른 노드에서 오류가 발생하여도 데이터 손실을 방지할 수 있다.
정해진 스키마와 관계를 통해 여러 테이블을 저장 및 분산
시킨다.데이터 중복없이 한 테이블당 하나의 데이터
만 관리할 수 있게 하는데,수직적으로 향상시키는 scale up을 통해 db 서버를 확장
시킬 수 있다.Event Loop를 통한 비동기 I/O 처리
Node.js는 promise 또는 async를 이용하여 비동기적으로 작업을 처리할 수 있는데, 시간이 오래걸리는 task는 Evnet Loop로 보낸 후 나중에 할 일이 없을 때, task가 끝나서 나온 결과물을 처리할 수 있다.
다양한 모듈들을 통한 확장성
프레임워크등 Node.js에서 사용할 수 있는 다양한 기능들은 npm를 통해 사용할 수 있으며,
이러한 package.json으로 쉽게 관리가 가능하다.