데이터 베이스의 속도는 어떻게 디스크의 I/O 횟수를 줄일까에 큰 영향을 받는다.
따라서 불필요하게 많은 레코드에 엑세스시키는 쿼리들이 문제이다.
데이터가 메모리 안에 있을 수만 있다면 초당 처리할 수 있는 쿼리 수가 엄청나게 증가한다.
간단한 명령으로 처리를 주고받는 데이터베이스이다.
간단히 키 값과 명령을 전달하면 값을 받아올 수 있다.
NoSQL을 사용하면 네트워크 송수신 전송량이 크게 감소하고 구문 분석을위한 비용을 줄일 수 있으며, CPU사용률도 크게 낮출 수 있다.
RDBMS는 테이블 열기 및 닫기 비용이 발생한다. 테이블의 레코드에 엑세스하기 위해서는 테이블을 먼저 열어야 한다. 이것을 계속 열어둘 수 없는 이유는 누가 열었는지를 관리해야 하기 때문이다. 누가 테이블을 열고 있다면 그 사용자가 닫기 전까지는, 다른 누구도 이 테이블을 변경할 수 없어야 한다. 따라서 SQL문의 실행횟수가 늘어날 수록 열고 닫는 빈도가 함께 높아진다.
반면 NoSQL은 테이블은 오픈한 상태를 유지하도록 제어한다. 덕분에 열고 닫는 비용이 발생하지 않아서 성능이 향상된다.
따라서 없어도 크게 상관없는 데이터에만 사용할 수 있다
사라져도 상관없는 데이터 는 무엇이 있을까
가장 흔하게 사용되는 용도는 RDBMS의 캐시로서 사용되는 것이다.
캐시로 사용하는 경우 RDBMS를 갱신할 때 캐시를 갱신하지 않았으면 캐시에 모순된 데이터가 남는 문제를 해결해야 한다.
SNS에서 마지막 엑세스 시간을 표시할 때, 이것은 없어지거나 정확하지 않아도 큰 문제가 되지 않는다. 검색 키도 사용자 ID만 되기에 인덱스도 알맞다.
NoSQL의 성능말고 다른 장점은 없을까?
그것은 바로 분산데이터베이스로서의 용도라고 할 수 있다.
쓰기 작업이 많이 발생해서 한 대로 처리가 되지 않는다면 그 처리를 분산시키는 방법을 사용해야 한다.
분산데이터베이슨 여러 서버에서 하나의 작업을 나눠서 처리한 뒤 다시 데이터를 모아 완성된 형태로 만든다.