아파치 카산드라

Apache Cassandra
아파치 카산드라
Cassandra logo
원저작자Avinash Lakshman, Prashant Malik / 페이스북
개발자Apache 소프트웨어 재단
초기 릴리즈2008년 7월, 14년 전(2008-07)
안정된 릴리스
4.0.5[1] / 2022년 7월 18일; 16일 전 (2022년 7월 18일)
저장소
기입처자바
운영 체제크로스 플랫폼
이용가능기간:영어
유형NoSQL 데이터베이스, 데이터스토어
면허증.Apache 라이센스 2.0
웹 사이트cassandra.apache.org Edit this on Wikidata

Cassandra많은 상용 서버에서 대량의 데이터를 처리하도록 설계된 무료 오픈 소스 분산형 NoSQL 데이터베이스 관리 시스템으로 단일 장애 지점 없이 고가용성을 제공합니다.Cassandra는 비동기 마스터리스 리플리케이션을 통해 모든 클라이언트에 대해 낮은 레이텐시 운영을 가능하게 하는 여러 데이터 [2]센터에 걸친 클러스터를 지원합니다.Cassandra는 Google의 Bigtable 데이터 및 스토리지 엔진 모델과 결합된 Amazon의 Dynamo 분산 스토리지 및 [3]복제 기술을 구현하도록 설계되었습니다.

역사

Amazon's Dynamo의 저자 중 한 명인 Avinash Lakshman과 Prashant Malik은 처음에 페이스북의 수신 트레이 검색 기능을 강화하기 위해 Cassandra를 페이스북에서 개발했다.페이스북은 2008년 7월 [4]구글 코드에 오픈소스 프로젝트로 카산드라를 출시했다.2009년 3월에 Apache Incubator [5]프로젝트가 되었습니다.2010년 2월 17일,[6] 톱 레벨의 프로젝트를 졸업했습니다.

페이스북 개발자들은 트로이 신화 속 예언자 카산드라의 이름을 따서 오라클[7]저주에 대한 고전적인 암시를 담고 있다.

릴리스

졸업 후의 릴리스에는 다음이 포함됩니다.

  • 2010년 4월 12일 출시된 0.6은 통합 캐싱 및 Apache Hadoop MapReduce[8] 대한 지원을 추가했습니다.
  • 2011년 1월 08일 발매된 0.7에서는 세컨더리 인덱스와 온라인 스키마[9] 변경이 추가되었습니다.
  • 2011년 6월 2일 출시된 0.8에서는 Cassandra Query Language(CQL), 셀프 튜닝 메모리 테이블 및 제로 다운타임 업그레이드[10] 지원이 추가되었습니다.
  • 1.0, 2011년 10월 17일 출시, 통합 압축, 레벨 압축 및 읽기 성능[11] 향상
  • 2012년 4월 23일 출시된 1.1에서는 자체 조정 캐시, 행 레벨 격리 및 혼합 SSD/회전 Disk[12] 구현 지원이 추가되었습니다.
  • 1.2는 2013년 1월 2일 출시되었으며, 가상 노드 간 클러스터링, 노드 간 통신, 원자 배치 및 요청[13] 추적을 추가했습니다.
  • 2013년 9월 4일 출시된 2.0은 경량 트랜잭션(Paxos 컨센서스 프로토콜 기반), 트리거, 개선된 컴포넌트 추가
  • 2.1 2014년 9월 10일[14] 발매
  • 2.2 2015년 7월 20일 출시
  • 3.0 2015년 11월 11일 출시
  • 3.1~3.10 릴리스는 틱톡과 같은 릴리스 모델을 사용한 월간 릴리스로, 짝수 릴리스는 신기능과 버그 수정을 모두 제공하며 홀수 릴리스에는 [15]버그 수정만 포함되어 있습니다.
  • 3.11은 안정적인 3.11 릴리스 시리즈로 2017년 6월 23일에 출시되었으며 마지막 똑딱이 기능 릴리스에서 버그를 수정했습니다.
  • 4.0은 2021년7월 26일에 출시되었습니다.
  • 4.0.1은 2021년9월 7일에 발매되었습니다.
  • 4.0.2는 2022년2월 8일에 릴리즈되었습니다.
  • 4.0.3은 2022년 2월 17일에 출시되었습니다.
  • 4.0.4는 2022년 5월 13일에 출시되었습니다.
버전 원래 출시일 최신 버전 발매일 상태[16]
이전 버전, 더 이상 유지 보수되지 않음: 0.6 2010-04-12 0.6.13 2011-04-18 더 이상 지원되지 않음
이전 버전, 더 이상 유지 보수되지 않음: 0.7 2011-01-10 0.7.10 2011-10-31 더 이상 지원되지 않음
이전 버전, 더 이상 유지 보수되지 않음: 2011-06-03 0.8.10 2012-02-13 더 이상 지원되지 않음
이전 버전, 더 이상 유지 보수되지 않음 2011-10-18 1.0.12 2012-10-04 더 이상 지원되지 않음
이전 버전, 유지 보수 불필요: 1.1 2012-04-24 1.1.12 2013-05-27 더 이상 지원되지 않음
이전 버전, 유지 보수 불필요: 1.2 2013-01-02 1.2.19 2014-09-18 더 이상 지원되지 않음
이전 버전, 유지 보수 불필요: 2.0 2013-09-03 2.0.17 2015-09-21 더 이상 지원되지 않음
이전 버전, 유지 보수 불필요: 2.1 2014-09-16 2.1.22 2020-08-31 더 이상 지원되지 않음
이전 버전이지만 유지 보수: 2.2 2015-07-20 2.2.19 2020-11-04 지원되지 않습니다.
이전 버전이지만 유지 보수: 3.0 2015-11-09 3.0.27 2022-05-13 계속 지원
이전 버전이지만 유지 보수: 3.11 2017-06-23 3.11.13 2022-05-13 계속 지원
현재 안정적인 버전: 4.0 2021-07-26 4.0.4 2022-05-13 최신 릴리즈
범례:
구버전
이전 버전, 아직 유지 관리됨
최신 버전
최신 프리뷰 버전
향후 출시

주요 기능

분산
클러스터의 모든 노드는 동일한 역할을 가집니다.단일 장애점은 없습니다.데이터는 클러스터 전체에 분산되지만(각 노드에는 서로 다른 데이터가 포함), 모든 노드가 모든 요청을 처리할 수 있으므로 마스터는 없습니다.
리플리케이션 및 멀티 데이터센터 리플리케이션 지원
복제 전략은 구성할 수 있습니다.[17]Cassandra는 여러 데이터 센터에 다수의 노드를 도입하기 위한 분산 시스템으로 설계되었습니다.Cassandra 분산 아키텍처의 주요 기능은 다중 데이터 센터 도입, 용장성, 페일오버 및 디저스터 리커버리에 특화되어 있습니다.
확장성
새로운 머신이 추가되면 읽기 및 쓰기 스루풋이 선형적으로 증가하도록 설계되어 다운타임이나 애플리케이션 중단이 발생하지 않습니다.
폴트 톨러런스
데이터는 폴트 톨러런스를 위해 여러 노드에 자동으로 복제됩니다.복수의 데이터 센터에 걸친 레플리케이션이 서포트되고 있습니다.장애가 발생한 노드를 다운타임 없이 교체할 수 있습니다.
조정 가능한 일관성
카산드라는 일반적으로 AP시스템과 마찬가지로, 그 가용성과 파티션 관용 일반적으로 더 Cassandra,[18]Writes의 일관성보다 중요하고 읽일관성의 조화된 수준을 제공하는 것으로 간주될 의미 분류된다,"실패한 적이 없다고 쓴다.", 중반에 정원에 미달 수준과"모든 복제품을 블록 읽을 수 있도록"의 방법이다.dle.[19]
Map Reduce 지원
Cassandra는 MapReduce를 지원하는 Hadoop 통합 기능을 가지고 있습니다.Apache Pig와 Apache [20]Hive도 지원됩니다.
쿼리 언어
Cassandra는 Cassandra Query Language(CQL)를 도입했습니다.CQL은 기존의 구조화 쿼리 언어(SQL)의 대체 수단으로서 Cassandra에 액세스하기 위한 간단한 인터페이스입니다.
궁극적인 일관성
Cassandra는 Thombstones를 통해 읽기, 상승 및 삭제의 궁극적인 일관성을 관리합니다.

카산드라 쿼리 언어

Cassandra는 Cassandra Query Language(CQL)를 도입했습니다.CQL은 기존의 구조화 쿼리 언어(SQL)의 대체 수단으로서 Cassandra에 액세스하기 위한 간단한 인터페이스입니다.CQL은 이 구조의 구현 세부사항을 숨기고 컬렉션 및 기타 일반적인 인코딩에 대한 네이티브 구문을 제공하는 추상화 계층을 추가합니다.언어 드라이버는 Java(JDBC), Python(DBAPI2) 및 노드에서 사용할 수 있습니다.JS(데이터택스), Go(Gocql) 및 C++.[21]

Cassandra의 키 공간은 노드 간의 데이터 복제를 정의하는 네임스페이스입니다.따라서 복제는 키 공간 수준에서 정의됩니다.CQL [22]3.0의 컬럼패밀리를 포함한 키스페이스 작성 예를 다음에 나타냅니다.

만들다 키 스페이스 마이키 스페이스   와 함께 레플리케이션 = { '클래스 : '심플한 전략', '전송_요인' : 3 };  사용하다 마이키 스페이스;  만들다 칼럼 패밀리 마이컬럼 (아이디 본문, 지난 본문, 첫번째 본문, 기본적인 열쇠(아이디));  삽입 안으로 마이컬럼 (아이디, 지난, 첫번째) 가치 ('1', '도', );  선택한다. * 부터 마이컬럼; 

그 결과:

 id Last First ----+--------------------------------------------------------------------- 1

이미 알려진 문제

Cassandra 1.0까지 Cassandra는 행 수준의 [23]일관성이 없었다. 즉, 거의 동시에 처리되는 동일한 행에 영향을 미치는 테이블에 삽입 및 업데이트가 일관성 없는 방식으로 비키 열에 영향을 미칠 수 있다.한 업데이트는 한 열에 영향을 미치는 반면 다른 업데이트는 다른 열에 영향을 미치므로 행에 지정되거나 의도되지 않은 값 집합이 발생할 수 있습니다.Cassandra 1.1은 행 수준[24]격리를 도입하여 이 문제를 해결했습니다.

Cassandra는 버전4 이후의 Windows에서는 지원되지 않습니다.문제 CASSANDRA-16171을 [25]참조해 주세요.

묘비

"Tombstones"라고 불리는 삭제 마커는 심각한 성능 [26]저하를 일으키는 것으로 알려져 있습니다.

데이터 모델

Cassandra는 넓은 컬럼 스토어이며, 기본적으로 키-값과 표 형식의 데이터베이스 관리 시스템 간의 하이브리드입니다.데이터 모델은 일관성을 조정할 [19]수 있는 분할된 행 저장소입니다.행은 테이블로 구성됩니다.테이블의 프라이머리 키의 첫 번째 컴포넌트는 파티션 키입니다.파티션 내에서 행은 [27]키의 나머지 열에 의해 클러스터됩니다.다른 열은 기본 [28]키와 별도로 인덱싱할 수 있습니다.

업데이트 및 [29]쿼리를 차단하지 않고 런타임에 테이블을 생성, 삭제 및 변경할 수 있습니다.

카산드라는 조인이나 서브쿼리를 할 없다.오히려 [30]Cassandra는 컬렉션과 같은 기능을 통해 탈규격화를 강조합니다.

컬럼 패밀리(CQL 3)는 RDBMS(Relational Database Management System)의 테이블과 유사합니다.열 패밀리는 행과 열을 포함합니다.각 행은 행 키로 고유하게 식별됩니다.각 행에는 이름, 값 및 타임스탬프가 있는 여러 개의 열이 있습니다.RDBMS의 테이블과 달리 동일한 열 패밀리의 서로 다른 행은 동일한 열 세트를 공유할 필요가 없으며 열을 [31]한 개 또는 여러 행에 언제든지 추가할 수 있습니다.

카산드라의 각 키는 객체인 값에 대응합니다.각 키에는 열 값이 있으며 열은 열 패밀리라는 세트로 그룹화됩니다.따라서 각 키는 가변 개수의 요소 행을 식별합니다.이러한 기둥 패밀리는 테이블로 간주할 수 있습니다.카산드라의 표는 키에 의해 색인화된 분산된 다차원 지도입니다.또한 응용 프로그램은 Super Column 또는 Simple Column 패밀리 내에서 열의 정렬 순서를 지정할 수 있습니다.

관리 및 감시

Cassandra는 Java 기반 시스템으로 Java Management Extensions(JMX)를 통해 관리 및 모니터링이 가능합니다.예를 들어 JMX 준거의 nodetool 유틸리티를 사용하여 Cassandra 클러스터(링에 노드 추가, 노드 드레이닝, 노드 폐기 등)를 관리할 [32]수 있습니다.또한 Nodetool은 디스크 사용량, 지연 시간, 압축, 가비지 컬렉션 [33]등과 관련된 Cassandra 메트릭을 반환하는 여러 명령을 제공합니다.

2013년 Cassandra 2.0.2 이후 Dropwizard 메트릭 [34]프레임워크를 통해 여러 메트릭의 측정이 생성되었으며 JConsole과 같은 도구를 사용하여 JMX를 통해 쿼리되거나 Dropwizard 호환 리포터 [35]플러그인을 통해 외부 모니터링 시스템에 전달될 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ https://github.com/apache/cassandra/releases/tag/cassandra-4.0.5; 발행일: 2022년 7월 18일, 취득일: 2022년 7월 18일.
  2. ^ Casares, Joaquin (2012-11-05). "Multi-datacenter Replication in Cassandra". DataStax. Retrieved 2013-07-25. Cassandra’s innate datacenter concepts are important as they allow multiple workloads to be run across multiple datacenters…
  3. ^ "Apache Cassandra Documentation Overview". Retrieved 2021-01-21.
  4. ^ Hamilton, James (July 12, 2008). "Facebook Releases Cassandra as Open Source". Retrieved 2009-06-04.
  5. ^ "Is this the new hotness now?". Mail-archive.com. 2009-03-02. Archived from the original on 25 April 2010. Retrieved 2010-03-29.
  6. ^ "Cassandra is an Apache top level project". Mail-archive.com. 2010-02-18. Archived from the original on 28 March 2010. Retrieved 2010-03-29.
  7. ^ "The meaning behind the name of Apache Cassandra". Archived from the original on 2016-11-01. Retrieved 2016-07-19. Apache Cassandra is named after the Greek mythological prophet Cassandra. [...] Because of her beauty Apollo granted her the ability of prophecy. [...] When Cassandra of Troy refused Apollo, he put a curse on her so that all of her and her descendants' predictions would not be believed. [...] Cassandra is the cursed Oracle[.]
  8. ^ "The Apache Software Foundation Announces Apache Cassandra Release 0.6 : The Apache Software Foundation Blog". Retrieved 5 January 2016.
  9. ^ "The Apache Software Foundation Announces Apache Cassandra 0.7 : The Apache Software Foundation Blog". Retrieved 5 January 2016.
  10. ^ Eric Evans. "[Cassandra-user] [RELEASE] 0.8.0". Archived from the original on 8 June 2015. Retrieved 5 January 2016.
  11. ^ "Cassandra 1.0.0. Is Ready for the Enterprise". InfoQ. Retrieved 5 January 2016.
  12. ^ "The Apache Software Foundation Announces Apache Cassandra™ v1.1 : The Apache Software Foundation Blog". Retrieved 5 January 2016.
  13. ^ "The Apache Software Foundation Announces Apache Cassandra™ v1.2 : The Apache Software Foundation Blog". apache.org. Retrieved 11 December 2014.
  14. ^ Sylvain Lebresne (10 September 2014). "[VOTE SUCCESS] Release Apache Cassandra 2.1.0". mail-archive.com. Retrieved 11 December 2014.
  15. ^ "Cassandra 2.2, 3.0, and beyond". 16 June 2015. Retrieved 22 April 2016.
  16. ^ "Cassandra Server Releases". cassandra.apache.org. Retrieved 15 December 2015.
  17. ^ "Deploying Cassandra across Multiple Data Centers". DataStax. Retrieved 11 December 2014.
  18. ^ "The CAP Theorem - Learn Cassandra". teddyma.gitbooks.io.
  19. ^ a b DataStax (2013-01-15). "About data consistency". Archived from the original on 2013-07-26. Retrieved 2013-07-25.
  20. ^ "Hadoop Support" 2017-11-16년 Cassandra's Wiki Wayback Machine 기사 아카이브 완료
  21. ^ "DataStax C/C++ Driver for Apache Cassandra". DataStax. Retrieved 15 December 2014.
  22. ^ "CQL". Archived from the original on 13 January 2016. Retrieved 5 January 2016.
  23. ^ "WAT - Cassandra: Row level consistency #$@&%*! - datanerds.io". datanerds.io. Retrieved 28 November 2016.
  24. ^ Lebresne, Sylvain (2012-02-21). "Coming up in Cassandra 1.1: Row Level Isolation". DataStax: always-on data platform NoSQL Apache Cassandra. Retrieved 2018-07-18.
  25. ^ "How do I build or install Cassandra 4.0 on Windows 10?". Datastax Community. 2021-07-31. Retrieved 2022-04-07.
  26. ^ Rodriguez, Alain (27 Jul 2016). "About Deletes and Tombstones in Cassandra".
  27. ^ Ellis, Jonathan (2012-02-15). "Schema in Cassandra 1.1". DataStax. Retrieved 2013-07-25.
  28. ^ Ellis, Jonathan (2010-12-03). "What's new in Cassandra 0.7: Secondary indexes". DataStax. Retrieved 2013-07-25.
  29. ^ Ellis, Jonathan (2012-03-02). "The Schema Management Renaissance in Cassandra 1.1". DataStax. Retrieved 2013-07-25.
  30. ^ Lebresne, Sylvain (2012-08-05). "Coming in 1.2: Collections support in CQL3". DataStax. Retrieved 2013-07-25.
  31. ^ DataStax. "Apache Cassandra 0.7 Documentation - Column Families". Apache Cassandra 0.7 Documentation. Retrieved 29 October 2012.
  32. ^ "NodeTool". Cassandra Wiki. Archived from the original on 13 January 2016. Retrieved 5 January 2016.
  33. ^ "How to monitor Cassandra performance metrics". Datadog. 3 December 2015. Retrieved 5 January 2016.
  34. ^ "Metrics". Cassandra Wiki. Retrieved 5 January 2016.
  35. ^ "Monitoring". Cassandra Documentation. Retrieved 1 February 2018.

참고 문헌

외부 링크