NoSQL은 혁신적인 것보다 진화 적입니다. 본질적으로 "외부 데이터베이스 스토리지"라는 기존 아이디어와 "관계형 테이블이 아닌 익숙한 데이터 구조 사용"을 결합합니다.
관계형 데이터베이스보다 더 많은 유형의 데이터베이스가 있습니다 (예 : 계층 적 데이터베이스) . 오늘날의 표준에 따르면 구식이지만 데이터의 데이터 구조 (예 : COBOL 레코드) 와 실제로 잘 맞습니다 . 요점은 데이터베이스의 데이터가 레코드를 사용한 프로그래밍 언어로 레코드가 배치되는 방식에 가깝게 모델링되었다는 것입니다.
빨리 감기의 발명에 관계형 데이터베이스 데이터베이스 문제를 분리 마지막으로, 제대로 정상화 할 때, 데이터와 데이터 사이의 관계의 대부분의 유형을 시각화 할 수있는 좋은 방법입니다. 다른 유형의 데이터베이스에 비해 이해하기 가 정말 쉽습니다. 그러나 완전히 실패하는 것은 프로그램에서 객체와 클래스를 미러링하는 방식으로 데이터를 저장하는 것입니다. 따라서 객체 관계형 매핑 의 발명 . 즉, 데이터베이스 디자인은 실제로 데이터베이스 를 사용하는 프로그램 디자인에 방해 가되므로 Hibernate 와 같은 ORM 라이브러리가 필요합니다. 깨끗하고 일관된 반면, 무언가가 옳지 않다는 내 생각에는 의심의 여지가 항상 있습니다.
이로 인해 두 가지 유형의 데이터베이스 인 오브젝트 데이터베이스 와 NoSQL이 발생했습니다 .
두 가지 모두 관계형 데이터베이스에서 발생하는 문제를 해결하려고 시도하면서 계층 적 데이터베이스의 정신을 자극하는 공포에 노출시키지 않습니다. 데이터는 여전히 모호하게 테이블과 유사한 저장소에 배치되지만 실제로는 관계형 테이블보다 프로그래밍 데이터 구조와 유사합니다. 객체 데이터베이스는 대부분 잘 정의 된 규칙을 따르지만 NoSQL은 다소 임의적이라는 것을 이해합니다. 예를 들어, 테이블은 해시 테이블 또는 배열로 시각화 될 수 있습니다. Oracle SQL Developer 또는 SQL Server Management Studio 와 유사한 임의의 도구를 사용하여 쿼리를 쉽고 명확하게 정의 할 수있는 방법은 없습니다 .
아이디어는 원하는 쿼리를 표현하는 대신 SQL 데이터베이스 엔진에 더 적합한 SQL 쿼리를 함께 묶지 않고 코드에서 쉽게 검색 할 수있는 데이터 구조를 정의 할 수 있다는 것입니다. 예를 들어, 관계형 데이터베이스에서는 퍼지 또는 부분 일치가 더 어려워지고 성능이 저하되는 반면 NoSQL 데이터베이스는 이러한 검색에 최적화되어 짧은 시간 안에 완료되는 구조를 가질 수 있습니다.
NoSQL을 쿼리하기위한 언어가 있습니다. 그러나 관계형 데이터베이스에 대한 SQL과 같은 범용 언어 는 없습니다 .
늦은 편집 :
NoSQL 데이터베이스에 대해 잘 알고 있지만이 질문은 주제에 관한 양질의 책을 구입하고 주제에 대한 진정한 전문가가 되겠다는 최종 목표로 책을 읽기 시작하는 데 자극이되었습니다. 나머지 의견은 NoSQL Distilled : Pramod Sadalage 와 Martin Fowler 의 신흥 세계 다국어 지속성 에 대한 간단한 안내서를 기반으로 합니다.
저자는 관계형 데이터베이스가 Amazon 및 Google과 같은 사이트에 필요한 데이터를 제공 할 수있는 클러스터에 적합하지 않다고 말합니다. NoSQL은 이러한 틈새 시장에 맞도록 개발되어 ACID의 동시성과 내구성을 완화하여 대부분 정적 데이터를 사용하십시오 (따라서 ACID 트랜잭션은 중요하지 않습니다).
또한 NoSQL 데이터베이스는 스키마 (10 페이지)없이 작동하므로 NoSQL 데이터베이스가 데이터 구조를보다 쉽게 수정할 수 있습니다. SQL 데이터베이스에서도 스키마를 수정할 수 있기 때문에 공식 스키마가 있는지 여부는 확실하지 않습니다. 그럼에도 불구하고, 유명한 저술가 두 명이 주장 할 가치가 있으므로 조사 할 가치가 있습니다.
저는이 두 가지 요점이 NoSQL이 혁명이 아니라 진화라는 나의 주요 요점을 강화하는 데에만 기여한다고 생각합니다. 그들은 여전히 데이터를 저장하고 규모와 수정 가능성을 점진적으로 향상시킵니다. 또한 NoSQL은 관계형 데이터베이스를 데이터 스토리지의 왕으로 삼으려고하지 않으며 관계형 방식으로 확장하고 변형해야하는 데이터 유형에 대한 대체 데이터 스토리지 수단을 제공하기 만합니다. 데이터베이스가 충분히 지원되지 않습니다.