2014-11-12 10 views
8

데이터를 쓸 수있는 곳에서 데이터를 저장하고 고성능으로 데이터를 읽을 수있는 메커니즘을 찾고 있습니다.고속 읽기 및 고속 쓰기를위한 고성능 DB. 업데이트 또는 삭제 없음

이 저장소는 여러 시스템에서 중요한 정보처럼 로깅을 저장하는 데 사용됩니다. Since it's critical data which will be logged, read performance should be pretty fast as these data will be used to show history. Since we never do update on them/delete on them/or do any kinda joins, I am looking for right solution. 아마 우리는 오랜 시간에 데이터를 보관할 수도 있지만 그걸 처리하는 것이 좋습니다.

내가 다른되는 NoSQL 데이터베이스를 이해하기 위해 서로 다른 소스에서 찾고 시도, 전문가 의견은 더 나은 항상 : 참조 된

Must Have: 
1. Fast Read without fail 
2. Fast Write without fail 
3. Random access Performance 
4. Replication kinda feature, one goes down, immediately another should be up and working 
5. Concurrent write/read data 

Good to Have: 
1. Search content like analysing the data for auditing with/without Indexes 

Don't required: 
1. Transactions are not required at all 
2. Update never happens 
3. Delete never happens 
4. Joins are not required 

:

+0

플랫 파일을 사용해 보셨습니까? 나는 한 번 복권 회사와상의했다. 그들은 매우 엄격한 요구 사항을 가지고있었습니다. 그들은 빠르고 안정적인 읽기, 쓰기 및 찾기를 위해 플랫 파일을 사용했습니다. –

+0

그냥 사람들이 "주제를 벗어난"합법적 인 질문을 어떻게 이해하지 못합니까? –

+0

스트리밍과 함께 하둡과 같은 것이 필요합니다. SAAS 솔루션은 BigQuery이지만 실험 목적으로 만 사용하는 것이 좋습니다. – themihai

답변

6

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis이 나를 카산드라 스폰서하자.

면책 조항 : 카산드라가 다른 사람들보다 낫다는 말은하지 않습니다. 몽고/레드리스/뭐든간에 깊이 알지 못하기 때문에 이런 종류의 물건에 들어 가지도 않기를 바랍니다.

내가 요구 사항이 카산드라가 제공하고 "필요하지 않습니다 목록"중 카산드라에서 지원되지 않는 기능의 집합이 무엇인지 완벽하게 일치하기 때문에 카산드라는 제안 이유 (인스턴스 조인) 또는 고려 반 패턴 (삭제 및 경우에 따라 업데이트). 포인트

  1. 하여 "있어야한다"목록 가리킨

    빠른없이 실패 읽기 : 지원. 당신은 반드시 속도가

  2. 빠른 쓰기는 가장 신선한 정보를 검색하는 방법과 중요한 많은 것입니다 얼마나 중요한 결정 각 읽기 작업의 일관성 수준을 선택할 수 있습니다 : 포인트 1

  3. 과 동일 랜덤 액세스 성능 : 랜덤 액세스 성능을 얻으려면 많은 매개 변수를 고려해야하지만 내 생각에 가장 중요한 것은 데이터 모델입니다. (give a look here) 당신은 필요한 것을 얻을 수있는 핫스팟을 피할 수 있습니다. 이 카산드라 당신이 생각하는 것보다 더 나은입니다에서 : 당신이 좋은 방법으로 DB를 모델링 할 경우 데이터가

  4. 복제를 조회 할 수 있도록 구성되어 있기 때문에 각 작업에 대한 O (1)을 가져야한다 . 한 노드가 다운되면 아무 것도 클러스터로 바뀌지 않고 모든 것이 완벽하게 작동합니다. 카산드라는 단일 실패 지점을 발견하지 못합니다. 나는 3 년 이상

    의 가동 시간을 가졌다 이전 카산드라 버전 말할 수
  5. 동시 읽기/쓰기 데이터 : 카산드라 동시 쓰기를 처리 할 수있는 LWW 정책 (마지막 쓰기 승)를 사용 동일한 열쇠에. 이 시스템은 여러 개의 읽기 - 쓰기 및 비동기 작업을 지원합니다.선형 수평 확장은 내가 더 감사 하나입니다하지만 당신은 (타임 스탬프를 데이터의 모든 조각이 업데이트되었습니다하는 순간을 알 수 있다는 사실도있다 :

다른 흥미로운 기능을 많이 카산드라가 제공하는있다 lww), 카운터 기능 등.

(*) - 일관성 수준 모두를 사용하지 않는 경우 imho는 이러한 시스템에서 사용하지 않아야합니다.

+0

현재 저는 Elastic Search vs Cassandra를보고 있습니다.둘 다 최종 목록으로 만들어집니다. 내가 미래의 건축물을보고 선택을 결정할 수 있도록 각 기사의 한계가되는 기사/정보를 얻을 수 있습니까? – Reddy

+0

두 가지 솔루션이 경쟁보다는 공존 할 가능성이 높습니다. Cassandra는 스토리지 시스템이고 es는 lucene을 기반으로하는 전체 텍스트 검색 엔진입니다. Datastax 엔터프라이즈는 solr을 전체 텍스트 검색 엔진으로 사용하고 Cassandra를 사용하여 데이터를 보존하고 정확한 검색을 수행하는 방금 설명한 솔루션과 유사한 솔루션입니다. –

+0

내 솔루션에서는 cassandra를 사용했지만 정확한 데이터를 사용하여 데이터를 가져 오는 성능은 데이터 크기가 증가함에 따라 저하됩니다. 어떤 일이 있어서는 안된다. –

15

Aerospike을 반드시 확인하십시오. Aerospike는 high throughput 읽기 및 쓰기가 필수 인 adtech 공간에서 독점적입니다. Aerospike는 종종 "Cassandra의 확장 성으로 Redis의 속도"를 가지고 있다고 선전합니다. 검색/질의는 Aerospike의 secondary index 문서를 참조하십시오.

  1. Aerospike vs Cassandra
  2. Aerospike vs Redis and Mongo
  3. Aerospike Benchmarks

가 마지막으로 One million TPS on EC2 Instructions에 자신의 성능을 확인 : 자세한 내용은

아래의 토론/문서를 참조하십시오.

http://www.aerospike.com/hybrid-memory/

http://www.aerospike.com/docs/architecture/storage.html

나는 모든 사람들이 생각 :

+1

제안 해 주셔서 감사합니다. 내 게시물에서 언급했듯이 읽기/쓰기/검색 작업은 충분히 빠릅니다. 그러나 Aerospike를 통과 할 때, Cassandra 디스크 유형에 비해 메모리 유형에 관한 것입니다. 우리는 이러한 데이터가 분석의 일부가 될만큼 큰 RAM을 제공 할 수 없습니다. – Reddy

+1

사실 Aerospike는 메모리 내 데이터베이스 일뿐만 아니라 가장 널리 배치 된 스토리지 모델은 [하이브리드 스토리지] (http://www.aerospike.com/docs/architecture/storage.html#hybrid-storage)입니다. ram의 각 레코드에 대한 64 바이트 인덱스 항목이며 데이터는 플래시 저장소 (SSD)에 저장됩니다. – kporter

+7

SO 규칙에 따라 Aerospike와의 제휴를 공개하려면 [필수] (http://meta.stackexchange.com/questions/57497/limits-for-self-promotion-in-answers)해야합니다. 나를 잘못 이해하지 마라, 나는 그것을 좋아한다. 그리고 나는 그것이 직업을위한 사람이다라고 확신한다 :) –

4

다음은 w 디스크 (DRAM, SSM, 디스크 스토리지)/Aerospike와 인 메모리 (In-Memory)에 걸쳐 수있는 방법에 대한 몇 가지 더 링크입니다 특정 DB를 특정 유스 케이스와 일치시키는 관점에서 예를 들어, Aerospike는 키 - 값 데이터에 최적입니다. 다른 옵션이 더 좋을 수도 있습니다.

필자는 비유로 수십 년 전 내 언니가 내 컴퓨터를 빌려서 Microsoft Excel에 자신의 학기 논문을 쓴 것을 기억할 것입니다. 줄 뒤의 줄은 스프레드 시트의 다른 줄이었습니다. 도데체처럼 보이지는 않았지만, 어, 알았어. 그녀는 그 일을 끝냈습니다. 그녀는 저주를 퍼붓고 그것을 편집하는 것이 얼마나 어려운지에 대해 맹세했습니다. 농담 아니야!

올바른 작업에 적합한 NoSQL 데이터베이스를 선택하면 작업을 쉽게 수행 할 수 있으며, 작업에 필요한 기본 도구를 잘못 선택하면 파란 줄무늬가 저주 할 수 있습니다.

물론 모든 공급 업체가 제품을 보호하려고합니다. 나는 지역 사회가 질문에 답하는 것이 최선이라고 생각한다. BTW

Has anyone worked with Aerospike? How does it compare to MongoDB?

: 여기에 또 다른 스택 오버플로 스레드가 비슷한 질문에 대답이야 당신은 당신이 해결하고자하는 문제의 유형에 우리에게 더 이상 구체적인 통찰력을 가지고 있습니까?