2016-10-27 16 views
0

매우 큰 목록 (80MB까지의 크기)을 저장해야하므로 데이터를 청크로 묶어 여러 개의 키 (A_1, A_2 ... 등)에 저장할 수 있습니다. 이 솔루션은 우아한 것으로 보이지 않으며 특정 문서를 다시 읽는 동안 얼마나 많은 청크가 있는지를 알기 위해 검색 사전 { 'A': [1, 2, ....]}을 유지해야하는 오버 헤드가 있습니다 .매우 큰 데이터 목록 저장

Redis 또는 Aerospike에서 이와 동일한 작업을 수행 할 수있는 다른 방법이 있습니까? 나는 Redis를 사용하면서 지옥이 아니라 다른 어떤 저장 장치 (관계형 제외)도 괜찮을 것입니다.

+0

어떻게 검색 하시겠습니까? 전체 또는 덩어리? 얼마나 많은 시간에 청크에 있다면? 그 목록에있는 각 항목의 대략적인 크기는 얼마입니까? –

+0

글쎄, 만약 내가 그 질문들에 대한 답을 알고 있다면, 지금은별로 문제가되지 않을까? :)이 동기화 작업은 너무 자주 (하루에 한 번) 발생하지 않으므로 한 번만 읽을 수 있습니다 (읽기 집약적이지 않음) - 청크 크기가 클 수 있습니다 (~ 1MB). 목록의 각 항목은 ~ 20KB 데이터입니다. 앞서 언급했듯이 모든 청크는 사전 처리를 위해 읽기/불러 오기가 필요합니다. –

+0

더 나은 디자인을 위해 대략적인 숫자를 갖는 것이 더 좋습니다. :) –

답변

0

입력 내용에 따라 redis리스트가 적합합니다. 동일한 벤치마킹을 간단하게 수행 할 수 있습니다. 목록에 의해 나는 당신이 어떤 범위의 데이터에 접근 할 것이라고 가정한다. 모든 데이터를 밀어

사용 lpush, http://redis.io/commands/lpush

사용 lrange는 http://redis.io/commands/lrange

이 목록의 크기가 10,000 것이다 대략적인 규모에서 당신에게 아이디어를 제공하기 위해, 데이터의 덩어리를 검색 할 수 있습니다. 80MB의 데이터를 저장하는 데 필요한 시간은 약 1 초가 소요됩니다. 500 데이터 (범위 내)의 청크 검색 시간은 약 200ms가 소요됩니다. 이는 입력, RTT 등을 기준으로 다를 수 있습니다.