2012-09-18 5 views
3

많은 카운터를 저장하는 시간별 테이블을 유지 관리해야합니다. 오래된 데이터가 중요한 것은 아니기 때문에 언제든지 현재 시간당 테이블과 이전 시간 테이블을 유지할 계획입니다.시간별 테이블 유지 관리 NoSql

예 : 시간이 오후 4시 30 분이면 3 시부 터 4 시까 지의 시간별 테이블과 4 시부 터 4시 30 분까지의 현재 시간별 테이블을 갖게됩니다. 시간이 오후 5:00에 지나면 3 : 00-4 : 00 pm 표가 삭제됩니다.

각 시간별 테이블은 최대 크기가 7-8gb로 증가하며 쿼리는 매우 동시적이고 쓰기 지향적입니다 (10 : 1 쓰기 : 읽기, 초당 20,000 개의 쓰기 및 평균적으로 초당 2000 개의 읽기).

데이터 크기가 작고 (db가 최대 10GB) 모든 쿼리가 카운터 증분이므로 Cassandra (카운터 열) 또는 Redis와 같은 메모리 데이터베이스와 같은 키 발급 저장소를 사용해야합니까? (나는 엄청난 쓰기로드를 분할하기 위해 DB 파티션을 계획하고있다)?

감사합니다.

답변

1

메모리 내 처리 작업과 비슷합니다. HashMap은 가장 빠른 데이터베이스보다 훨씬 빠릅니다. 그래서, 나는 hazelcast (http://www.hazelcast.com/) 또는 폭풍 (https://github.com/nathanmarz/storm)을 보길 권합니다.

쿼리를 더 간단하게 만들기 위해 일부 메모리 내장 DB (예 : Redis 또는 Memcached)에 카운터를 주기적으로 덤프 할 수 있습니다. 그러나 DB를 백엔드로 사용하지 않고 순전히 메모리에서 수행 할 수 있습니다.

카산드라는 과업처럼 보입니다. 테라 바이트의 데이터를 복제하고 가용성이 높은 방식으로 영원히 저장해야 할 때 놀라운 점이 있습니다. 이전에는 절대 사용하지 않으면 무거운 짐을 지우는 것은 쉽지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 순전히 메모리에서 그렇게하는 것에 대한 나의 유일한 관심은 내 컴퓨터가 막대한 쿼리로드 (초당 30000 개의 쓰기, 최고점에서 초당 3000 개의 읽기)를 처리 할 수 ​​있는지 여부였습니다. 또한, 내가 초당 100000 쓰기라고 말할 수있는 크기로 가정한다면, redis 나 cassandra를 사용하면 더 쉽게 할 수 없을 것입니다. – amaron

+1

Redis는 또한 이전 데이터를 자동으로 정리할 수있는 키의 만료/TTL을 제공합니다. –

+0

아마론 (Amaron), 헤이즐 캐스팅과 스톰 스케일 모두 완벽하게 수십 수백 대의 기계. 필자가 지적한 점은 메모리 내 솔루션이 DB보다 10 배 빠르고 똑같은 경우 동일한로드에 대해 10 배 적은 시스템이 필요하다는 것입니다. 그리고 인 메모리 데이터 그리드는 데이터베이스보다 배포 및 확장이 더 쉽다고 생각합니다. – Wildfire