답변:
NoSQL은 "SQL뿐만 아니라"의 약자이며 일반적으로 데이터베이스가 관계형 데이터베이스가 아니므로 지난 수십 년 동안 매우 인기가있었습니다.
지난 몇 년 동안 NoSQL이 인기를 얻은 이유는 주로 관계형 데이터베이스가 하나의 서버에서 커질 때 더 이상 사용하기 쉽지 않기 때문입니다. 다시 말해, 분산 시스템에서는 확장 성이 떨어집니다. Google, Yahoo, Facebook 및 Amazon (Digg에 대해 잘 모르겠습니다)을 언급 한 모든 대형 사이트에는 여러 가지 데이터가 있으며 여러 가지 이유로 분산 시스템 에 데이터를 저장합니다 . 데이터가 하나의 서버에 맞지 않거나 고 가용성에 대한 요구 사항이있을 수 있습니다.
분산 시스템의 속성은 CAP 정리에 의해 설명 될 수 있습니다 . 세 가지 속성 중 최대 두 개만 가질 수 있습니다.
Amazon Dynamo는 Evental Consistency 를 사용 하여 세 가지 속성을 모두 확보합니다. Dynamo : Amazon의 고 가용성 키-값 저장소 ( High -Available Key-value Store ) 백서 는 NoSQL 데이터베이스 및 분산 시스템에 대해 배울 때 읽을 가치가 있습니다. Amazon Dynamo에는 A 및 P 속성이 있습니다.
Google은 BigTable 을 사용하여 C 및 A 속성 이있는 다른 접근 방식을 취 합니다.
처음에 썼 듯이 다른 요구 사항에 맞게 설계된 다른 종류의 NoSQL 데이터베이스가 있습니다. 예를 들어 Neo4j 와 같은 그래프 데이터베이스 , CouchDB 와 같은 문서 데이터베이스 및 OrientDB 와 같은 다중 모델 / 객체 데이터베이스 .
마지막으로 관계형 데이터베이스는 계속 인기를 유지하고 싶습니다. 매우 유연하고 유지 관리가 가능합니다. 그러나 항상 최선의 선택은 아닙니다.
NoSQL은 매우 광범위한 용어이며 일반적으로 "SQL뿐만 아니라"를 의미합니다. 비 RDBMS 커뮤니티에서는이 용어가 유리하지 않습니다.
NoSQL 데이터베이스에는 공통적 인 특성이 거의 없습니다. 그것들은 대략 몇 가지 범주로 나눌 수 있습니다 :
이것은 큰 질문이지만이 분산 데이터베이스 설문 조사 에서 상당히 잘 대답되었습니다 .
짧은 대답 :
NoSQL 데이터베이스는 파티션 허용 오차, 성능,로드 분산 또는 새로운 하드웨어 추가로 선형 확장 할 수있는 다른 이점을 얻기 위해 ACID의 다양한 부분을 생략 할 수 있습니다.
사용시기까지는 전적으로 응용 프로그램의 요구에 달려 있습니다.
NoSQL은 전통적인 RDBMS처럼 고정 스키마가없는 일종의 데이터베이스입니다. NoSQL 데이터베이스를 사용하면 런타임시 개발자가 스키마를 정의합니다. 데이터베이스에 대해 일반 SQL 문을 쓰지 않고 대신 API를 사용하여 필요한 데이터를 얻습니다. NoSQL 데이터베이스는 일반적으로 찾고있는 데이터가 어떤 서버인지 알 필요없이 다른 물리적 서버로 쉽게 확장 할 수 있습니다.
그러나 NoSQL 데이터베이스는 SQL Server, Oracle, DB2, MySQL 등과 같은 RDBMS 시스템에 비해 기능이 부족합니다. Service Broker, 트랜잭션 로깅, ETL 패키지 등은 없습니다.
NoSQL은 새로운 것이 아닙니다. 실제로 50-60 년 동안있었습니다. 당시에는 COBOL이라고 불 렸습니다. 똑같은 생각, 다른 그룹이 생각해 냈습니다.
기본적으로 관계형 설정, 기본 및 외래 키, 트랜잭션 안전 유지와 관련된 추가 오버 헤드를 사용하면 성능이 크게 향상됩니다. 그러나 이것은 MySQL이 계층을 우회함으로써 "NoSQL 레벨"에서 수행되도록 조정 되었기 때문에 새로운 데이터베이스 / 데이터 저장소에 고유하지 않습니다.
간단히 말해서, 데이터 손실 가능성이 높은 경우 종종 인상적인 성능을 얻을 수 있습니다. 대부분의 NoSQL 시스템이이를 수행합니다. 예를 들어 MongoDB는 편리 할 때 데이터 변경 내용을 기록합니다. 데이터 자체는 안전하고 트랜잭션 방식으로 안전하지만 휘발성 저장소 (메모리)에 보관됩니다. 전원이 꺼지면 데이터를 잃지 않았거나 데이터가 손상되지 않았 음을 100 % 확신 할 수 없습니다.
보안과 성능 사이의 균형입니다.
시작하기 좋은 곳은 Wikipedia 항목 입니다. 본질적으로 한 테이블의 데이터를 다른 테이블의 데이터와 관련 시키면 키 값 쌍으로 항목을 저장하고 데이터베이스 스키마가 없으며 대신 코드에서 처리됩니다.
일부 사이트는 NoSQL과 일반 RDBMS 서버를 동시에 사용하지만 다른 데이터를 저장합니다. 따라서 하나 또는 다른 것을 선택할 필요가 없습니다.
MongoDB NoSQL 데이터베이스 및 Oracle에서 많은 작업을 수행했습니다.
개요
SQL 데이터베이스에는 구조화 된 데이터를 저장하기 위해 자체 사전 정의 된 스키마가 있습니다.
NoSQL 데이터베이스에는 사전 정의 된 스키마가 없습니다. 여기서 스키마는 데이터 요소를 기반으로하는 가장 동적 요소입니다.
확장 성
SQL 데이터베이스는 수직 확장이 가능하므로 SQL 기반 데이터베이스를 확장하려면 DBMS 시스템이 설치된 하드웨어를 강화해야합니다. 확장 성이 제한되는 경우가 있습니다.
NoSQL 데이터베이스는 수평 적으로 확장 가능하므로, 확장을 원한다면 더 많은 노드를 추가하고 자체 요구와 필요한 전력을 기반으로 배포 네트워크를 만들어야합니다. 이것이 데이터베이스의로드를 줄이는 방법입니다
데이터 검색
SQL 기반 데이터베이스에서 데이터를 정의하고 조작하기 위해 오늘날 매우 강력한 SQL (Structured Query Language)을 사용할 수 있습니다.
NoSQL 데이터베이스와 관련하여 쿼리는 수집 및 문서에 중점을 둡니다. 때로는 UnQL (Unstructured Query Language)이라고합니다. 이것은 여전히 진화 단계에 있으므로 NoSQL 데이터베이스의 공급 업체마다 다릅니다.
주요 차이점에 대한 자세한 내용은 내 블로그 : SQL과 NoSQL 데이터베이스의 차이점