지난 몇 년 동안, 관계형 데이터베이스 데이터 지 속성에 대 한 유일한 선택 그리고 데이터 노동자만이 전통적인 데이터베이스, SQL Server, Oracle, MySQL 등에서 필터링 고려 하 고 있습니다. 사용 하 여 몇 가지 기본 선택, 만들. NET 일반적으로 SQL Server를 선택 합니다 및 Java Oracle, 루비, Mysql을 향해 편 파 수 있습니다, 그리고 파이썬 PostgreSQL 또는 MySQL, 및 등.
이유는 간단 하다: 시간의 긴 기간 동안 관계형 데이터베이스의 견고성은 대부분의 응용 프로그램에서 입증 되었습니다. 우리는 이러한 전통적인 데이터베이스 제어 동시성 작업, 트랜잭션 등에 사용할 수 있습니다. 그러나 전통적인 관계형 데이터베이스 너무 신뢰할 수 있는 경우에, 무엇 인가 NoSQL? NoSQL의 생존과 발전은 하기 때문에 그것은 전통적인 관계형 데이터베이스 할 수 없어!
관계형 데이터베이스의 문제
임피던스 불일치
우리는 파이썬, 루비, 자바, 사용합니다. NET, 그리고 이러한 언어는 공통 기능-개체-지향. 하지만 우리가 MySQL, PostgreSQL, Oracle 및 SQL Server는 또한 일반적인 기능은 관계형 데이터베이스를 사용 하 여. 이 용어는 "임피던스 불일치"를 포함 한다: 저장 구조는 개체 지향 하지만 데이터베이스가 관계형, 그래서 우리는 우리가 저장 하거나 데이터를 쿼리할 때마다 변환 할 필요. ORM 프레임 워크는 최대 절전 모드 및 엔터티 프레임 워크는이 과정을 단순화지 않습니다 좋아하지만 이러한 ORM 프레임 워크는 쿼리에 대 한 고성능 요구 있는 경우 뻗어 있다.
응용 프로그램의 크기를 더 크게 된다
웹 응용 프로그램의 규모 성장 하는 때 우리가 더 많은 데이터를 저장, 더 많은 사용자를 봉사 하 고 더 많은 컴퓨팅 파워를 필요로 해야 합니다. 이 상황을 다루는, 확장을 계속 해야 합니다. 두 가지 범주로 확장: 하나는 더 나은, 더 많은 디스크, 더 많은 메모리, 머신과; 구매, 수직 확장 큰 규모, 역할의 수직 확장 매우 큰 되지 않습니다. 첫 번째 컴퓨터 성능 향상 필요 거 대 한 오버 헤드와 높은 성능 제한, 그리고 그것은 결코 구글과 페이스 북 같은 규모로 모든 부하를 지원 하기 위해 단일 컴퓨터를 사용 하 여. 이 상황을 감안할 때, 우리가 필요 새 데이터베이스 관계형 데이터베이스 클러스터에서 잘 실행 되지 않습니다. 네, 관계형 데이터베이스 클러스터 구축 또한 수 하지만 그들은 우리가 원하는 형식이 공유 저장소를 사용 하 고. 그래서 NoSQL 시대, 구글, 페이스 북과 더 많은 전송 처리 하려고 하는 아마존에 의해 주도.
NoSQL 시대
지금 많은 NoSQL 데이터베이스를 MongoDB, Redis, Riak, HBase, 카산드라, 등이 있다. 각 다음 기능 중 하나는:
더 이상 SQL 언어를 사용 하 여, MongoDB, 카산드라는 자체 쿼리 언어와 같은 일반적으로 약한 구조-엄격 하 게 제한 된 데이터 구조 형식
를 실행 하는 클러스터에 대 한 오픈 소스 프로젝트
NoSQL 데이터베이스의 유형
NoSQL은 4 종류로 대략 분할 될 수 있다: 키 값, 문서 중심, 열 패밀리 데이터베이스 및 그래프 지향 데이터베이스. 여기에 이러한 유형의 특징의 목록이 있다:
키 값 (키 값) 데이터베이스
전통적인 언어에서 사용 되는 해시 테이블 같은 키 값 데이터베이스가 있습니다. 추가, 쿼리, 또는 키, 데이터를 삭제할 수 있습니다 그리고 당신은 좋은 성능과 확장성을 기본 키 액세스를 사용 하 여 주어진 얻을.
제품: Riak, Redis, Memcached, 아마존의 다 이너 모, 프로젝트 볼드모트
누가 사용 하는: GitHub (Riak), 베스트 바이 (Riak), 트위터 (Redis memcached), StackOverflow (Redis), Instagram (Redis), Youtube (Memcached), 위키백과 (Memcached)
적용 현장
세션, 프로 파일, 매개 변수, 쇼핑 카트 등의 사용자 정보를 저장 합니다. 이 정보는 일반적으로 키 값의 데이터베이스에 대 한 좋은 선택입니다 (키), ID에 연결 됩니다.
시나리오 하지 적용
1. 대신의 통해 주요 쿼리 하지만 쿼리 값을 통해. 값 쿼리 키 값 데이터베이스에 전달 하는 방법은 있다입니다.
2. 관계 데이터 저장 될 필요가 있다. 키-값 데이터베이스에 두 개 이상의 키와 데이터를 연결할 수 없습니다.
3입니다. 거래에 대 한 지원입니다. 키-값 데이터베이스에서 오류가 발생 하는 경우 롤백 수 없다.
(문서 관련) ⅱ. 문서 지향 데이터베이스
문서 지향 데이터베이스 문서 형태로 데이터를 저장합니다. 각 문서는 독립적인된 데이터 단위, 데이터 항목의 컬렉션입니다. 각 데이터 항목에는 이름 및 해당 값 형식이 될 수 중 하나는 간단한 데이터는 문자열, 숫자, 날짜, 또는 시퀀스 테이블 및 연결 된 개체와 같은 복합 형식 등. 데이터 저장의 최소 단위는 문서, 동일한 테이블에 저장 된 문서 특성 다 수 이며 XML, JSON, JSONB 등 다양 한 형태로 데이터를 저장할 수 있습니다.
제품: MongoDB, CouchDB, RavenDB
누가 사용 하는: SAP (MongoDB), Codecademy (MongoDB), 정사각형 (MongoDB), NBC 뉴스 (RavenDB)
적용 현장
1입니다. 로그입니다. 엔터프라이즈 환경에서 각 응용 프로그램에는 다른 로그 정보가 있습니다. 문서 지향 데이터베이스는 없다 고정된 패턴, 그래서 우리 서로 다른 정보를 저장 하는 데 사용할 수 있습니다.
2입니다. 분석입니다. 약한 모드 구조를 감안할 때, 그것은 다른 통계를 저장 하는 모드를 변경 하지 않고 새로운 통계를 추가입니다.
시나리오 하지 적용
트랜잭션을 다른 문서에 추가 합니다. 문서 지향 데이터베이스 문서 간에 트랜잭션을 지원 하지 않습니다 그리고이 필요한 경우 선택 합니다.
3, 열 저장 (넓은 열 저장소/열-가족) 데이터베이스
열 저장소 데이터베이스를 열, 열 가족, 가족과 행 가족 매장 관련된 데이터를 자주 쿼리 하는 함께 데이터를 저장 합니다. 예를 들어 만약 우리가 person 클래스, 우리가 일반적으로 함께 그들의 이름 및 연령대 확인 보다는 지불. 이 경우에와 급여는 다른 이름 및 나이 한 열 가족에 배치 됩니다.
제품: 카산드라를 HBase
누가 사용 하는:이 베이 (카산드라), Instagram (카산드라), NASA (카산드라), 트위터 (카산드라를 HBase), 페이 스 북 (HBase), 야 후! (HBase)
적용 현장
1입니다. 로그입니다. 우리는 별도 열에 데이터를 저장할 수 있습니다, 때문에 각 응용 프로그램 자체 열 가족에 정보를 쓸 수 있습니다.
2. 블로그 플랫폼입니다. 우리는 열의 다른 그룹에 각 메시지를 저장합니다. 예를 들어 레이블 하나에 저장할 수 있습니다, 그리고 카테고리 하나, 그리고 다른 문서에 있을 수 있습니다.
시나리오 하지 적용
1. 만약 우리가 산 사업을 해야 합니다. Vassandra는 트랜잭션을 지원 하지 않습니다.
2. 프로토 타입 디자인입니다. 카산드라 데이터 구조를 분석 하 고, 만약 우리 구조 데이터를 쿼리할 수를 기대 하는 방법에 기반을 찾을 것입니다. 모델 디자인의 시작 부분에는 쿼리 모드를 예측 불가능 하 고 쿼리 모드 변경, 일단 우리 열 가족을 다시 디자인 해야 합니다.
4. 그림 (그래프 지향) 데이터베이스
그래프 데이터베이스 그래프에 데이터를 저장할 수 있습니다. 엔티티 교점으로 취급 되 고 엔터티 간의 관계는 가장자리도 처리 됩니다. 예를 들어 우리는 3 요소, 스티브 잡스, 애플, 다음, 그리고 2 "에 의해 설립 된" 스티브 잡스에 게 애플과 다음을 연결 하는 측면 있다.
제품: neo4j, 무한 한 그래프, Orientdb
누가 사용 하는: 어도비 (neo4j), 시스 코 (neo4j), T-모바일 (neo4j)
적용 현장
1. 일부 매우 관계형 데이터에
2. 권장된 엔진입니다. 만약 우리가 그래프의 형태로 데이터를 표시, 그것은 매우 권장된 정립에 대 한 도움이 될 것입니다.
시나리오 하지 적용
부적 절 한 데이터 모델입니다. 그래프 데이터베이스의 응용 범위는 매우 작은 전체 다이어그램을 포함 하는 몇 가지 작업 때문입니다.
원래 링크: