NoSQL 데이터베이스

🪐 C:on·2021년 9월 23일
0

computer science

목록 보기
2/6
post-thumbnail

데이터 베이스의 속도는 어떻게 디스크의 I/O 횟수를 줄일까에 큰 영향을 받는다.
따라서 불필요하게 많은 레코드에 엑세스시키는 쿼리들이 문제이다.

데이터가 메모리 안에 있을 수만 있다면 초당 처리할 수 있는 쿼리 수가 엄청나게 증가한다.

💡 NoSQL

간단한 명령으로 처리를 주고받는 데이터베이스이다.
간단히 키 값과 명령을 전달하면 값을 받아올 수 있다.

NoSQL을 사용하면 네트워크 송수신 전송량이 크게 감소하고 구문 분석을위한 비용을 줄일 수 있으며, CPU사용률도 크게 낮출 수 있다.

💡 Open 유지

RDBMS는 테이블 열기 및 닫기 비용이 발생한다. 테이블의 레코드에 엑세스하기 위해서는 테이블을 먼저 열어야 한다. 이것을 계속 열어둘 수 없는 이유는 누가 열었는지를 관리해야 하기 때문이다. 누가 테이블을 열고 있다면 그 사용자가 닫기 전까지는, 다른 누구도 이 테이블을 변경할 수 없어야 한다. 따라서 SQL문의 실행횟수가 늘어날 수록 열고 닫는 빈도가 함께 높아진다.

반면 NoSQL은 테이블은 오픈한 상태를 유지하도록 제어한다. 덕분에 열고 닫는 비용이 발생하지 않아서 성능이 향상된다.

💡 NoSQL의 단점

  • 트랜잭션을 지원하지 않음
    대부분의 NoSql은 트랜잭션 기능을 구현하지 않아서, 실패한 작업을 없던 일로 하는 것을 자동으로 할 수가 없다. 쓰기 도중에 충돌이 발생하면 없던일로 하는 것과 마지막으로 커밋한 데이터까지의 무사함을 보장해주지 않는다.

    따라서 없어도 크게 상관없는 데이터에만 사용할 수 있다

  • 스키마가 없음
    RDBMS는 데이터마다 특별한 의미를 담도록 스키마를 구분 생성한다. 각 데이터 항목은 열 이름, 데이터형, 값 제약 조건을 설정한다.
    NoSQL은 키에 해당하는 값을 가진다. 따라서 키에 해당하는 것이 무엇인지는 직접 엑세스하지 않으면 알 수가 없다. 그래서 XML, JSON 처럼 성능을 중시하는 압축 포맷으로 저장하는 경우가 많다.
    각 열에 나뉘어 있지 않아서 RDBMS와 비교하면 이해하기 어렵다는 점이 있다.
  • 기본키만 인덱스만 사용
    기본 키 이외의 조건에서 빠르게 검색하기 위해서는 기본 키가 아닌 열에 대해 인덱스를 부여해야 한다.
    하지만 NoSql은 키와 값 두가지 항목만 가지기 때문에 기본 키 이외에 인덱스를 취할 수 없다.

💡 사용처

사라져도 상관없는 데이터 는 무엇이 있을까

✅ 캐시

가장 흔하게 사용되는 용도는 RDBMS의 캐시로서 사용되는 것이다.
캐시로 사용하는 경우 RDBMS를 갱신할 때 캐시를 갱신하지 않았으면 캐시에 모순된 데이터가 남는 문제를 해결해야 한다.

✅ 세션 데이터

SNS에서 마지막 엑세스 시간을 표시할 때, 이것은 없어지거나 정확하지 않아도 큰 문제가 되지 않는다. 검색 키도 사용자 ID만 되기에 인덱스도 알맞다.

💡 분산 데이터베이스

NoSQL의 성능말고 다른 장점은 없을까?
그것은 바로 분산데이터베이스로서의 용도라고 할 수 있다.

쓰기 작업이 많이 발생해서 한 대로 처리가 되지 않는다면 그 처리를 분산시키는 방법을 사용해야 한다.
분산데이터베이슨 여러 서버에서 하나의 작업을 나눠서 처리한 뒤 다시 데이터를 모아 완성된 형태로 만든다.

0개의 댓글