[database] 카산드라를 사용하지 않을 때?



7 Answers

분산 데이터 시스템을 평가할 때는 CAP 정리를 고려해야합니다. 일관성, 가용성 및 파티션 허용 오차 중 두 가지를 선택할 수 있습니다.

카산드라는 최종 일관성을 지원하는 파티션 허용 시스템입니다. 자세한 내용은 필자가 쓴이 블로그 게시물 : Visual Guide to NoSQL Systems를 참조하십시오 .

Question

최근 Cassandra 와 관련된 이야기가 많이있었습니다.

트위터, 디그, 페이스 북 등 모든 사람들이 그것을 사용합니다.

언제 그것이 의미가 있습니까 :

  • 카산드라 (Cassandra)
  • 카산드라를 사용하지 마십시오.
  • Cassandra 대신 RDMS를 사용하십시오.



Cassandra를 사용하기로 결정한 경우 Cassandra를 사용하지 않을 때는 Cassandra 자체를 사용하지 말고 그 밖의 많은 사촌 중 한 명을 고려할 수 있습니다.

위의 답변 중 일부는 이미 카사 드라와 많은 속성을 공유하는 다양한 "NoSQL"시스템을 가리키며 크거나 작은 차이가 있으며 특정 요구 사항에 따라 카산드라 자체보다 우수 할 수 있습니다.

또한 최근 (이 질문이 제기 된 지 몇 년 후) Scylla ( https://en.wikipedia.org/wiki/Scylla_(database) 라는 Cassandra 클론이 출시되었습니다. Scylla는 Cassandra를 C ++에서 오픈 소스로 다시 구현 한 것으로, 원래 Java Cassandra보다 훨씬 높은 처리량과 낮은 대기 시간을 제공하며, 기능, API 및 파일 형식과 거의 호환됩니다. 따라서 이미 카산드라를 고려하고 있다면, 실라를 고려하는 것이 좋습니다.




  • 테이블 전체에서 완벽한 트랜잭션 관리를 지원하지 않습니다.
  • 보조 색인은 지원되지 않습니다.
  • 보조 인덱스 용 Elastic search / Solr에 의존해야하며 사용자 정의 동기화 구성 요소를 작성해야합니다.
  • ACID 준수 시스템이 아닙니다.
  • 쿼리 지원은 제한적입니다.



선택을 더 쉽게 만드는 또 다른 상황은 sum, min, max, etcetera 및 복잡한 쿼리 (위에서 언급 한 금융 시스템에서와 같이)와 같은 집계 함수를 사용하고자 할 때 관계형 데이터베이스가 nosql 데이터베이스보다 편리 할 때입니다. Inverted 인덱스를 많이 사용하지 않는 한 nosql 데이터베이스에서는 불가능합니다. nosql을 사용하면 코드에서 집계 함수를 수행하거나 자체 columnfamily에 seperatly를 저장해야하지만이 작업은 매우 복잡해지고 nosql을 사용하여 얻은 성능이 저하됩니다.




카산드라는 다음과 같은 경우에 좋은 선택입니다 :

  1. DB에서 ACID 속성을 요구하지 않습니다.

  2. DB에 많은 양의 글이있을 것입니다.

  3. Big Data, Hadoop, Hive 및 Spark와 통합해야한다는 요구 사항이 있습니다.

  4. 실시간 데이터 분석 및 보고서 생성이 필요합니다.

  5. 인상적인 내결함성 메커니즘이 필요합니다.

  6. 균질 시스템의 요구 사항이 있습니다.

  7. 튜닝을위한 많은 커스터마이징 요구 사항이 있습니다.




Mongodb은 매우 강력한 집계 함수와 풍부한 집계 프레임 워크를 가지고 있습니다. 개발자는 관계형 데이터베이스 세계에서 익숙한 많은 기능을 제공합니다. 문서 데이터 / 저장소 구조는 예를 들어 Cassandra보다 복잡한 데이터 모델을 허용합니다.

물론이 모든 것은 절충점이됩니다. 따라서 데이터베이스 (NoSQL, NewSQL 또는 RDBMS)를 선택할 때 해결하려는 문제와 확장 성 요구 사항을 살펴보십시오. 어느 데이터베이스도이 모든 것을 수행하지 않습니다.




실제 사례를 읽으십시오.

http://planetcassandra.org/apache-cassandra-use-cases/

이 기사의 내용 : http://planetcassandra.org/blog/post/agentis-energy-stores-over-15-billion-records-of-time-series-usage-data-in-apache-cassandra

그들은 DB 동기화가 너무 느리기 때문에 MySql을 선택하지 않은 이유를 자세히 설명합니다.

Cassandra는 Amazon Dynamo 및 기타 고 가용성 NoSQL 데이터베이스와 같습니다.

안정성, 고 가용성 기능. 백업은 최대한 빨리 수행됩니다. 읽고 쓰기

BigTable 클론 인 HBase 보다 좋습니다. [위키 http://en.wikipedia.org/wiki/Apache_Cassandra]

결론 은 다음과 같습니다.

We looked at HBase, Dynamo, Mongo and Cassandra. 

Cassandra was simply the best storage solution for the majority of our data.



NoSQL의 일반적인 개념은 애플리케이션에 가장 적합한 데이터 저장소를 사용해야한다는 것입니다. 재무 데이터 테이블이 있으면 SQL을 사용하십시오. 관계형 스키마에 매핑하기 위해 복잡하거나 느린 쿼리가 필요한 객체가있는 경우 객체 또는 키 / 값 저장소를 사용하십시오.

물론 실제로 발생하는 실제 문제는 그 두 극단 사이의 어딘가에 있지 않으며 어느 솔루션도 완벽하지 않습니다. 각 상점의 기능과 다른 상점의 사용 결과를 고려해야하며 이는 해결하려는 문제점에 매우 중요합니다.




Related