2014-11-20 1 views
0

저는 백엔드 시스템에서로드를 처리하는 데 문제가있는 대기업에서 일합니다. 그들은 기존 레거시 시스템/데이터베이스를 대체하고 수평 적으로 확장 가능한 NoSQL 데이터베이스로 대체하려고합니다. NoSQL 데이터베이스를 살펴 보는 이유는 수평 적으로 확장 가능한 솔루션을 사용하여 미래에 대비할 수 있기 때문입니다.NoSQL 데이터베이스의 차이 및 불일치 문제의 가능성

분산 NoSQL 데이터베이스는 일반적으로 최종 일관성만을 제공합니다. 문제의 정도는 아직 조사되지 않았습니다. 이 경우 우리는 비교적 적은 수의 쓰기 작업과 많은 읽기 작업이 있고 가용성이 중요한 시스템을 다룹니다.

NoSQL 데이터베이스 시스템이 많이 있습니다 (cassandra, mongoDB, hbase 등). 어떤 경우에 적합한 데이터베이스 시스템에 대한 가이드 라인이 있습니까? 또한 불일치 문제가 발생할 확률과이 기회를 줄이는 방법과 비용을 파악하는 방법을 모색 중입니다.

문학에 대한 모든 정보/팁/참고 자료를 환영합니다. 정보의 톤이 거기있다

답변

0

... 구글은 당신의 친구 :

이다 내가보기 엔 카산드라를 추천 할 수 있습니다. 설정하기가 쉽고 마스터리스 + 내결함성이 있습니다. 데이터베이스 당 원하는 복제의 양을 지정할 수 있으며이를 사용하여 데이터베이스를 처리 할 수 ​​있습니다. 또한 교차 데이터 센터 복제를 수행 할 수 있습니다. 일관성있는 튜닝이 가능합니다. 데이터의 특정 비트에 대해 원하는 경우 전체 일관성을 유지할 수 있습니다 (예 : 쓰기 도중 가용성을 희생). 따라서 반드시 모든 것이 든 아니든간에 반드시 그런 것은 아닙니다. 스키마 개념이 있으며 기본 키를 사용하여 테이블에 데이터를 행으로 저장합니다. SQL에 매우 익숙한 쿼리 언어 (CQL)가 있지만 (훨씬 제한적 임) 익숙 함, 스키마, 성능, 튜너 블 일관성 .... 꽤 좋은 조합.

단점이 있습니다. 조인이 없습니다. 따라서 데이터 모델링에 좀 더 집중하고 실시간 작업에 필요한 쿼리 유형을 파악해야합니다. 개념적 데이터 모델은 실제 물리적 데이터 모델과 다를 수 있습니다. 비정규 화 된 물리적 테이블에 일부 정보 (예 : 개념 데이터)가 사본으로 존재할 가능성이 큽니다. 이렇게하면 매우 빠른 성능을 얻을 수 있지만 데이터를 조금 이해해야합니다.

분석적 쿼리의 경우 일반적으로 스파크를 사용합니다. 이렇게하면 Hadoop과 마찬가지로 데이터 세트를 쿼리 할 수 ​​있습니다. 쿼리는 실시간 작업보다 느리지 만 전체 데이터 볼륨과 쿼리 유연성의 균형을 잘 맞출 수 있습니다.

카산드라 그 자체는 전체 텍스트 검색 엔진이 아닙니다. 그러나 검색 기능을 제공하기 위해 Lucene 또는 Solr과 쌍을 이루는 것은 드문 일이 아닙니다.

사용 사례 측면에서 볼 때 Cassandra는 다양한 형태로 사용될 수 있습니다. 가장 간단한 방법은 각 값이 정렬 된 키 값 쌍의 모음 인 키 값 저장소입니다. 최상위 키 - 값은 데이터의 파티션 (샤드)을 제공합니다. 이를 통해 시계열 데이터를 매우 효율적으로 저장할 수 있습니다. "값"은 세트, 맵 및 목록의 콜렉션 열을 지원하며 이들에 대해 "완전 일치 인덱스"를 가질 수 있습니다. 이렇게하면 약간 더 유연한 쿼리가 가능합니다. 이러한 기능은 Cassandra를 다양한 유스 케이스에 사용할 수 있지만 모두가 아님을 의미합니다. 실제로 어떤 유스 케이스를 해결할 것인가에 달려 있습니다. 밖에 "최고의 NOSQL"데이터베이스가 없습니다. 각 데이터 저장소는 일련의 사용 사례를 갖는 경향이 있으며 모든 매핑을 나열하는 것은 어렵습니다. 대신 사용 사례가 무엇인지 확인한 다음 어느 상점의 기능이 가장 겹치는 지 확인한 다음 하나 또는 그 이상의 기능을 선택해야합니다.