[database] NoSql과 관계형 데이터베이스

최근 NoSQL 은 엄청난 인기를 얻었습니다.

기존 RDBMS에 비해 NoSQL 의 장점은 무엇입니까 ?



답변

모든 데이터가 관계있는 것은 아닙니다. 이러한 상황에서는 NoSQL이 도움이 될 수 있습니다.

그러나 NoSQL은 “Not Only SQL”을 의미합니다. SQL을 중단 시키거나 대체하려는 것은 아닙니다.

SQL에는 몇 가지 큰 장점이 있습니다.

  1. 강력한 수학적 기초.
  2. 선언적 구문.
  3. SQL (Structured Query Language)의 잘 알려진 언어입니다.

그것들은 사라지지 않았습니다.

이것을 하나의 / 또는 논쟁으로 생각하는 것은 실수입니다. NoSQL은 사람들이 필요할 때 고려해야 할 대안입니다.

CouchDB와 같은 비 관계형 데이터베이스에 문서를 저장할 수 있습니다.

아마 이것을 읽으면 도움 될 것입니다.


답변

역사는 다음과 같습니다.

  1. Google은 역 검색 색인을위한 스토리지 계층이 필요합니다. 그들은 전통적인 RDBMS가 그것을 자르지 않을 것이라고 생각합니다. 따라서 GFS 파일 시스템 위에 NoSQL 데이터 저장소 인 BigTable을 구현합니다. 중요한 부분은 수천 개의 저렴한 상용 하드웨어 시스템이 속도와 중복성을 제공한다는 것입니다.

  2. 다른 사람들은 Google이 방금 한 일을 알고 있습니다.

  3. 브루어스 CAP 정리 가 입증되었습니다. 모든 RDBMS 사용 시스템은 CA 시스템입니다. 사람들은 CP와 AP 시스템을 가지고 놀기 시작합니다. K / V 매장 은 훨씬 단순하므로 연구의 주요 수단입니다.

  4. 서비스로서의 소프트웨어 시스템은 일반적으로 SQL과 유사한 저장소를 제공하지 않습니다. 따라서 사람들은 NoSQL 유형 저장소에 더 관심을 갖습니다.

이륙의 많은 부분이이 역사와 관련이 있다고 생각합니다. 스케일링 구글은 구글에서 몇 가지 새로운 아이디어를 얻었고 다른 사람들은 스케일링 문제에 대해 알고있는 유일한 솔루션이기 때문에 모든 사람들이 따라갑니다. 따라서 특정 크기 이상으로 확장 할 수있는 유일한 방법이기 때문에 Google의 분산 데이터베이스 아이디어와 관련된 모든 것을 기꺼이 재 작업 할 것입니다.

C-일관성
A-가용성
P-파티션 공차
K / V-키 / 값


답변

NoSQL은 다음과 같은 이유로 NoSQL의 특성으로 인해 RDBMS보다 낫습니다.

  1. 반 구조적 데이터 및 휘발성 데이터를 지원합니다
  2. 스키마가 없습니다
  3. 읽기 / 쓰기 처리량이 매우 높습니다
  4. 수평 적 확장 성을 쉽게 달성 할 수 있습니다
  5. 대량의 Terra Bytes 및 Peta Bytes에서 Bigdata를 지원합니다.
  6. Bigdata를 기반으로 분석 도구를 효과적으로 지원합니다.
  7. 저렴한 하드웨어 기계에서 호스팅 가능
  8. 인 메모리 캐싱 옵션을 사용하여 쿼리 성능 향상
  9. 개발자를위한 더 빠른 개발 수명주기

편집하다:

“RDBMS가 확장 할 수없는 이유”에 답하려면 Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden 및 Michael Stonebraker가 작성한 RDBMS 오버 헤드 PDF 를 참조하십시오.

RDBMS는 엄청난 양의 테라 바이트 및 페타 바이트를 처리하는 데 어려움이 있습니다. RAID (Redundant Array of Independent / Inexpensive Disks) 및 데이터 분쇄 기능이 있어도 엄청난 양의 데이터에 맞게 확장 할 수 없습니다. 매우 비싼 하드웨어가 필요합니다.

로깅 : 로그 레코드를 조합하고 데이터베이스 구조의 모든 변경 사항을 추적하면 성능이 저하됩니다. 복구 기능이 필요하지 않거나 다른 방법 (예 : 네트워크의 다른 사이트)을 통해 복구 기능이 제공되는 경우 로깅이 필요하지 않을 수 있습니다.

잠금 : 기존 2 단계 잠금은 데이터베이스 구조에 대한 모든 액세스가 별도의 엔티티 인 잠금 관리자에 의해 관리되므로 상당한 오버 헤드가 발생합니다.

래치 : 다중 스레드 데이터베이스에서 많은 데이터 구조는 래치되기 전에 액세스해야합니다. 이 기능을 제거하고 단일 스레드 방식으로 전환하면 성능에 현저한 영향을 미칩니다.

버퍼 관리 : 기본 메모리 데이터베이스 시스템은 버퍼 풀을 통해 페이지에 액세스 할 필요가 없으므로 모든 레코드 액세스에서 간접적 인 레벨을 제거합니다.

이것은 NoSQL over SQL을 사용해야한다는 의미는 아닙니다.

여전히 RDBMS는 RDBMS의 다음과 같은 이유로 인해 NoSQL보다 낫습니다.

  1. ACID 속성을 사용한 트랜잭션 -원 자성, 일관성, 격리 및 내구성
  2. 읽고 쓰는 데이터의 강력한 스키마 준수
  3. 실시간 쿼리 관리 (데이터 크기 <10 테라 바이트 인 경우)
  4. join & group by 절을 포함하는 복잡한 쿼리 실행

비즈니스 사례 및 요구 사항에 따라 RDBMS (SQL) 및 NoSQL (SQL뿐만 아니라)을 사용해야합니다.


답변

NOSQL은 관계형 데이터베이스 모델에 비해 특별한 이점이 없습니다. NOSQL은 현재 SQL DBMS의 특정 제한 사항을 해결하지만 이전 데이터 모델에 비해 근본적으로 새로운 기능을 의미하지는 않습니다.

NOSQL은 SQL이 아님 (또는 ” SQL 만이 아님 “)만을 의미하지만 관계형 이 아님을 의미하지는 않습니다 . 관계형 데이터베이스는 원칙적으로 매우 우수한 NOSQL 솔루션을 만듭니다. 현재 NOSQL 제품 세트 중 어느 것도 관계형 모델을 사용하지 않습니다.


답변

RDBMS 는 관계에 더 집중하고 NoSQL 은 스토리지에 더 집중합니다.

당신은 사용을 고려할 수 없는 NoSQL을 귀하의 경우 RDBMS가 병목 현상에 도달합니다. NoSQLRDBMS를 보다 유연 하게 만듭니다 .


답변

RDBMS에 비해 NoSQL의 가장 큰 장점은 확장 성 입니다.
NoSQL 데이터베이스는 여러 노드로 쉽게 확장 할 수 있지만 RDBMS의 경우 매우 어렵습니다.
확장 성은 더 많은 스토리지 공간을 제공 할뿐만 아니라 많은 호스트가 동시에 작동하므로 훨씬 더 높은 성능을 제공합니다.


답변

고성능으로 대량의 데이터를 처리해야하는 경우

또는

데이터 모델이 미리 결정되지 않은 경우

그때

NoSQL 데이터베이스가 더 나은 선택입니다.