2011-03-29 3 views
4

많은 키 -> 값 쌍인 을 디스크에 저장하는 것이 효율적인 방법을 찾고 있습니다.값이 가장 빠른 키 -> 값 디스크 저장소

필요한 기능은 지정된 키에 대해 값을 연결 (추가)하거나 모델을 키 -> 값 목록으로 두는 것입니다. 두 옵션 모두 정상입니다. 값 부분은 일반적으로 2 진 문서입니다.

이 시나리오에서는 너무 많은 클러스터링, 중복성 등을 사용하지 않을 것입니다.

우리는 자바를 사용하고 있으며 고전적인 데이터베이스 (Oracle, MySQL 등)를 사용하고 있습니다.

나는 초당 분명 몇 가지 시나리오를보고 매장 (및 취득에서는)의 측면에서 가장 빠른 무엇인지에 대한 조언을 부탁합니다 :

1) 표준 삽입에 의해 고전 DB 테이블의 데이터를 저장합니다.

2) 파일 시스템 트리를 사용하여 키당 하나 또는 여러 개의 파일 ( )을 여러 파일로 확산시킵니다.

3) 잘 알려진 튜플 저장 장치를 사용하십시오. 일부 확실한 후보자는 다음과 같습니다. 3a) Berkeley db java edition 3b) Casandandra와 같은 현대적인 NoSQL 솔루션

개인적으로 저는 Berkely DB JE를 좋아합니다.

내 질문을 요약하면 :

  • 합니까 버클리 위를 주어진 현명한 선택처럼 보인다

    ?

  • 업데이트 (삽입, 키에 새로운 값 추가) 및 검색 키와 같은 어떤 종류의 속도가 필요합니까?

답변

1

FWIW, 나는 완전히 만족스러운 성능을 가지고 Ehcache을 사용하고 있습니다. 나는 버클리 DB를 한번도 시도한 적이 없다.

1

Berkeley DB JE는 사용자가 설명하는 유스 케이스에서 잘 작동합니다. 성능은 주로 작업 당 필요한 I/O 수 (그리고 결과는 사용 가능한 캐시의 크기)와 쓰기 트랜잭션에 대해 정의한 내구성 제약 조건에 따라 달라집니다 (예 : 커밋 트랜잭션은 다음을 수행해야합니다. 디스크에 모든 방법을 써주는 지 아닌지)?

일반적으로 우리는 일반적으로 BDB JE를 사용하여 범용 하드웨어에서 초당 50-100K 읽기 및 초당 5-12K 쓰기를 표시합니다. 분명히, YMMV.

BDB JE에 대한 성능 튜닝 및 처리량에 대한 질문은 Berkeley DB JE forum에 문의하는 것이 가장 좋습니다. 여기에는 BDB JE 애플리케이션 개발자 커뮤니티가 있습니다. BDB JE FAQ에는 몇 가지 유용한 성능 튜닝 권장 사항이 있으며, 이는 또한 유용 할 수 있습니다.

귀하의 구현에 가장 좋습니다. 우리가 도울 수 있다면 저희에게 알려주십시오.

감사합니다,

데이브 - 버클리 DB

2

버클리 제품 관리자는 합리적인 소리. 카산드라는 또한 합리적인 것이지만 중복, 클러스터링 등을 필요로하지 않으면 과잉 공격 일 수 있습니다.

즉, 단일 카산드라 노드는 초당 20k 개의 쓰기를 처리 할 수 ​​있습니다 (단, 여러 클라이언트를 사용하여 높은 동시성 카산드라).

관련 문제