FUD에 대해 언급한 것은 이번이 처음이 아닙니다(링크). 하지만 Couchbase를 대상으로 FUD에 대해 언급한 것은 이번이 처음이며, 이는 매우 좋은 일입니다. 결국, 저는 다음에 무슨 일이 일어날지 알고 있습니다.
처음에는 무시하고, 비웃고, 싸우고, 결국에는 이깁니다. - 간디
FUD에 대처하는 가장 좋은 방법은 이를 해결하는 것이라고 생각합니다. 오늘은 DataStax의 블로그 게시물(링크).
비동기 쓰기
2013년경의 MongoDB와 마찬가지로 Couchbase는 기본적으로 비동기 쓰기를 수행합니다.
사실이 아닙니다. 예, MongoDB는 기본적으로 비동기 쓰기를 수행합니다. 쓰기 요청에 응답하지 않았습니다(링크). 그러나 MongoDB 2.6에서는 더 이상 그렇지 않습니다(링크). 카우치베이스 서버는 비동기 쓰기를 수행하지 않습니다. 쓰기 요청에 응답합니다.
지속성 및 성능
커밋로그나 저널링이 없기 때문에 CouchBase는 디스크에 쓰기를 유지하도록 강제할 수 있지만 그렇게 하면 성능이 저하되고, 쓸 때마다 CouchBase의 btree와 fsync를 업데이트해야 합니다.
이것은 오해의 소지가 있습니다. 예, Couchbase Server는 먼저 메모리에 씁니다. 그런 다음 인메모리 데이터를 저장 장치에 동기화합니다. 그러나 DataStax Enterprise(Apache Cassandra)도 마찬가지입니다. 기본적으로 커밋 로그에 쓴 후에는 fsync를 하지 않습니다. 따라서 메모리에 먼저 씁니다. OS를 통해 페이지 캐시에 씁니다. DataStax Enterprise가 커밋 로그에 쓴 후 fsync하도록 구성된 경우, 다음과 같이 합니다. 성능 저하.
버킷 및 문서
Couchbase의 스토리지 엔진은 관계형 테이블과 유사하게 5개 이상의 버킷을 처리하는 데 문제가 있습니다.
이는 사실이 아닙니다. 버킷은 데이터베이스와 유사합니다. 스키마가 없습니다. 테이블도 없습니다. 이것이 문서 데이터베이스의 장점 중 하나입니다.
일관성 및 가용성
카우치베이스는 장애 조치 또는 네트워크 파티션 중에는 읽기를 제공할 수 없지만, 오래된 데이터를 읽기에 제공할 수는 있습니다.
사실이 아닙니다. 그리고 를 사용하면 의미가 없습니다. 읽기는 제공할 수 없지만 읽기에 대한 데이터는 제공할 수 있나요?
카우치베이스 서버는 강력한 일관성을 유지합니다. 기본적으로 자동 장애 복구는 비활성화되어 있습니다. 노드를 사용할 수 없거나 응답하지 않는 경우 해당 노드의 데이터를 사용할 수 없습니다. Couchbase Server는 CP입니다. 그러나 Couchbase Server를 AP용으로 구성할 수 있습니다.
데이터스택 엔터프라이즈 완전히 일관된? 답을 찾을 수 있습니다. 여기.
FUD가 사라졌습니다.
권장 사항
DataStax가 Apache Cassandra를 벤치마킹하지 않는 방법에 대한 블로그 포스팅을 게시했습니다(링크). 좋은 시작입니다.
가상 머신, 공유 스토리지, 잘못 구성된 드라이브, 부적절한 부하 및 작은 데이터 세트로 분산 데이터베이스 벤치마크를 수행하지 마세요.
동의합니다. 하지만 목록이 불완전합니다.
1. 단일 노드로 분산 데이터베이스 벤치마크를 수행하지 마세요.
분산 데이터베이스는 일관성과 가용성 사이에서 절충점을 찾아야 합니다(링크), 이러한 트레이드오프는 성능에 영향을 미칩니다. 단일 노드로 벤치마크를 수행하면 이러한 트레이드 오프가 무시되고 성능에 미치는 영향이 숨겨집니다. 성능 결과는 비현실적이므로 쓸모가 없습니다.
2. 다른 구성으로 분산 데이터베이스 벤치마크를 수행하지 마세요.
예를 들어, 쓰기 시마다 동기화하도록 Couchbase Server를 구성하지 말고 10초마다 동기화하도록 DataStax Enterprise를 구성하십시오(링크 그리고 링크). 성능 결과는 편향되어 있으므로 유효하지 않습니다. DataStax가 commitlog_sync를 일괄 처리로 설정한 것 같습니다. 그럴 만합니다. 그러나 DataStax는 지연 시간을 차트로 표시하지 않았습니다. commitlog_sync가 batch로 설정된 경우 Apache Cassandra는 쓰기 작업을 완료하기 전에 50ms를 기다립니다.
오늘은 여기까지입니다.