안녕하세요~!
오늘은 그동안의 관계형DB (RDBMS)에서 벗어난 NoSQL에 대해 알아보겠습니다.
NoSQL이 무엇일까요?
NoSQL이 다른 데이터베이스 다양한 기술을 포함하며 사용자, 개체 및 제품,이 데이터가 액세스되는 빈도 및 처리 성능의 요구에 대해 축적 된 데이터 양의 증가에 응답하여 개발되었습니다. 관계형 데이터베이스는, 현대적인 응용 프로그램에 직면 규모와 민첩성 도전에 대처하기 위해 설계되지 않았으며 다른 한편으로는, 오늘날 저렴한 스토리지의 장점과 처리 능력을 위해 만들어지지 않았습니다.
NoSQL의 데이터베이스 유형
문서 데이터베이스는 문서로 알려진 복잡한 데이터 구조와 각 키 쌍. 문서는 다양한 키 - 값 쌍, 또는 키 배열 쌍, 또는 중첩 된 문서를 포함 할 수 있습니다.
그래프 저장 - 소셜 연결 같은 네트워크에 대한 정보를 저장하는 데 사용되며, 그래프 저장 Neo4J과 HyperGraphDB을 포함합니다.
키 - 값 저장은 단순한 NoSQL의 데이터베이스입니다. 데이터베이스에있는 모든 단일 항목의 값과 함께, 속성 이름 (또는 "키")로 저장됩니다. 키 - 값 저장의 예는 Riak와 볼드 모트입니다. 같은 레디 스 같은 일부 키 - 값 저장, 같은 기능을 추가하는 "정수"로, 각 값 유형이 할 수 있습니다.
와이드 열 저장 등 카산드라와 HBase와 같은 대신 행으로, 큰 데이터 세트를 통해 쿼리 및 함께 데이터의 저장 열 최적화되어 있습니다.
NoSQL에의 장점
관계형 데이터베이스와 비교하면, NoSQL이 데이터베이스는 확장성이 우수한 성능을 제공 하고, 데이터 모델은 관계 모델을 해결하기 위해 설계되지 않은 몇 가지 문제를 해결했습니다.
- 구조화 된 대형 볼륨 및 비 구조화 된 많은 양의 데이터
- 민첩한 대응, 빠른 반복, 자주 코드 푸쉬
- 사용하기 쉽고 유연한 객체 지향 프로그래밍
- 고가의 획일적인 아키텍처를 대신하여 효율적인 스케일 아웃 아키텍처
동적 스키마
관계형 데이터베이스는 데이터를 추가하기 전에 스키마 정의 할 것을 요구하고 있습니다. 예를 들어, 같은 전화 번호, 이름과 성, 주소, 도시와 국가 등 고객에 대한 데이터를 저장 할 수 있습니다 - SQL 데이터베이스는 사전에 저장하는 것을 알 필요가 있습니다.
이 것은 Agile 개발 때마다 새로운 기능을 완료하기 때문에, 접근 방법, 데이터베이스의 스키마는 자주 변경해야 합니다. 그래서 당신이 그들의 주소와 전화 번호 외에 고객의 즐겨 찾기 항목을 저장하고 싶은 것을, 개발에, 몇 반복을 결정하는 경우에, 당신은 데이터베이스에 해당 열을 추가 할 필요하며, 새 스키마 다음에 전체 데이터베이스를 마이그레이션합니다
데이터베이스가 큰 경우, 이것은 상당한 중단을 수반 매우 느린 과정이다. 자주 데이터를 응용 프로그램 저장소를 변경하는 경우 - 당신은 신속하게 반복되기 때문에 - 다운 타임도 자주 할 수있다. 방법은 효과적으로 사전에 완전히 구조화 또는 불명 데이터를 해결하기 위해, 관계형 데이터베이스를 사용하여도 없다.
NoSQL이 데이터베이스는 미리 정의 스키마 않고 데이터의 삽입을 허용하도록 구축된다. 즉, 서비스 중단에 대한 걱정없이, 실시간으로 중요한 응용의 변화를 그것을 쉽게 - 코드 통합보다 안정적이고, 현상은 빠른 속도 의미하고, 이하 데이터베이스 관리자 시간이 필요된다.
자동 샤딩
방식들이 구조이기 때문에, 관계형 데이터베이스는 일반적으로 수직으로 확장 - 단일 서버 안정성 및 데이터의 지속적인 가용성을 보장하기 위해 전체 데이터베이스를 호스팅 할 수 있습니다. 이것은 신속 비싼 얻는다 규모에 제한을 배치하고,베이스 인프라 장애 지점의 상대적으로 적은 수를 생성한다. 이 솔루션은 서버를 추가하는 대신 단일 서버에서 더 많은 용량을 집중하여, 수평으로 확장하는 것입니다.
많은 서버 인스턴스에서 "샤딩"데이터베이스는 SQL 데이터베이스를 달성 할 수 있지만, 일반적으로 SAN을 단일 서버로 하드웨어 행위를 만들기위한 다른 복잡한 배열을 통해 수행됩니다. 데이터베이스가 기본적으로이 기능을 제공하지 않기 때문에, 개발 팀은 기계의 숫자에 걸쳐 여러 관계형 데이터베이스를 배포하는 작업에 걸릴. 데이터는 자율적으로 각 데이터베이스 인스턴스에 저장됩니다. 어플리케이션 코드는 데이터베이스의 모든 인스턴스에 걸쳐 데이터의 결과를, 데이터를 분산 질의 분산 및 응집 현상된다. 추가 코드 데이터 재조정, 복제 및 기타 요구 사항은 다른 데이터베이스 조인 걸쳐 수행 할 리소스 오류를 처리하도록 개발되어야한다. 또한, 이러한 트랜잭션 무결성과 같은 관계형 데이터베이스의 많은 장점은, 손상 또는 수동 샤딩을 채용 할 때 제거됩니다.
NoSQL이 데이터베이스는, 다른 한편으로는, 일반적으로, 심지어 서버 풀의 조성물을 인식하는 애플리케이션을 필요로하지 않고, 그들은 기본적으로 자동으로 서버의 임의의 숫자를 통해 데이터를 확산 즉, 자동 샤딩을 지원한다. 데이터 및 질의 부하 자동 서버간에 균형되고, 서버가 다운 될 때를, 신속하고 투명 중단없는 애플리케이션으로 교체 될 수있다.
클라우드 컴퓨팅은 아마존 웹 서비스와 같은 공급자는 수요에 무제한 용량을 제공하고, 필요한 모든 데이터베이스 관리 작업을 돌보는으로,이 훨씬 쉬워집니다. 개발자는 이제 자신의 애플리케이션을 지원하기 위해 복잡하고 값 비싼 플랫폼을 구축 할 필요가없고, 애플리케이션 코드를 작성하는 데 집중할 수있다. 상품 서버는 가격의 일부에 대해 하나의 하이 엔드 서버와 동일한 처리 및 저장 기능을 제공 할 수 있습니다.
복제
대부분의 NoSQL이 데이터베이스는 또한 이러한 작업을 관리 할 별도의 응용 프로그램을 포함하지 않고 고 가용성 및 재해 복구를 얻을 수 있다는 것을 의미 자동 복제를 지원합니다. 스토리지 환경은 본질적으로 현상의 관점에서 가상화된다.
통합 캐싱
제품의 숫자는 SQL 데이터베이스 시스템에 대한 캐싱 계층을 제공합니다. 이러한 시스템은 실질적으로 판독 성능을 향상시킬 수 있지만, 쓰기 성능을 개선하지 않으며, 이들은 시스템 구축에 복잡성을 추가한다. 응용 프로그램이 다음 분산 캐시가 아마 고려되어야한다 읽지 만 응용 프로그램이 쓰기에 의해 지배되는 경우 또는 비교적에도 혼합이있는 경우의 읽기와 쓰기에 의해 지배되는 경우, 분산 캐시는 최종의 전반적인 경험을 개선하지 않을 수 있습니다
많은 NoSQL의 데이터베이스 기술은 최대한 시스템 메모리에 자주 사용되는 데이터를 유지 관리해야 별도 캐싱 층에 대한 필요성을 제거하는 우수한 통합 캐시 기능을 가지고있다.
출처 : mongo-db By. 진준호 (2014.11.23)
'2. DBMS이야기 > 03. MongoDB' 카테고리의 다른 글
1. MongoDB 소개 (0) | 2015.01.20 |
---|