Riak에 큰 이진 값을 저장할 수있는 방법을 아는 사람이 있습니까?

StackOverflow https://stackoverflow.com/questions/2212770

  •  19-09-2019
  •  | 
  •  

문제

Riak에 큰 이진 값을 저장할 수있는 방법을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

현재로서는 파일을 분할하지 않고 50MB보다 큰 파일을 저장하지 않는 것이 좋습니다. 보다: FAQ -RIAK WIKI

파일이 50MB보다 작은 경우 RIAK에 비 바이너리 데이터를 저장하는 것보다 진행하는 것보다 진행됩니다.

Riak을 선택할 수있는 또 다른 이유는 데이터 모델링의 유연성입니다. Riak은 당신이 말한 모든 데이터를 콘텐츠 공유 방식으로 저장합니다. 테이블, 열 또는 참조 무결성을 시행하지 않습니다. 이것은 의미합니다 JSON 또는 XML과 같은 더 많은 프로그래머 트랜스 펜트 형식과 함께 바이너리 파일을 저장할 수 있습니다.. Riak을 일종의 "문서 데이터베이스"(반 구조화, 주로 정규화되지 않은 데이터) 및 "첨부 파일 스토리지"로 사용하면 키/가치 스타일 체계, 즉 효율적인 온라인 쿼리, 충돌의 필요성과 다른 요구가 있습니다. 해결, 내부 의미론 증가 및 강력한 관계 표현.RIAK의 스키마 설계 - 소개

다른 팁

@Brian Mansell의 답변은 올바른 길에 있습니다. RIAK에서 큰 이진 값 (50MB 이상)을 단일 객체로 저장하고 싶지 않습니다 (클러스터는 잠시 후 클러스터가 느려집니다).

대신 두 가지 옵션이 있습니다.

1) 이진 물체가 충분히 작 으면 직접 저장하십시오. 특정 임계 값을 초과하는 경우 (50MB는 처음에는 적당한 임의의 값이지만 실제로 클러스터의 평균 객체 크기가 무엇인지 확인하기 위해 성능 테스트를 실행합니다. 여러 덩어리에 제출하고 청크를 별도로 보관하십시오. (사실, 내가 본 대부분의 사람들은이 길을 가고 크기가 1MB의 덩어리를 사용합니다). 물론 이것은 당신이 "매니페스트"를 추적해야한다는 것을 의미합니다. 그런 다음 파일을 검색하려면 먼저 청크를 추적하는 객체를 가져온 다음 개별 파일 청크를 가져와 원본 파일로 다시 조립해야합니다. 같은 프로젝트를 살펴보십시오 https://github.com/podados/python-riakfs 그들이 어떻게했는지보기 위해.

2) 또는 대안 적으로 만 사용할 수 있습니다 RIAK CS (Riak Cloud Storage), 위의 모든 작업을 수행하지만 코드는 귀하를 위해 작성되었습니다. 그것이 바로 RIAKCS의 작동 방식입니다. 들어오는 파일을 청크로 나누고, 저장하고, 평범한 riak에서 개별적으로 추적하고, 그것을 가져올 시간이되면 다시 조립합니다. 편의를 위해 파일 스토리지를위한 Amazon S3 API를 제공합니다. 이 경로를 강력히 추천합니다 (휠을 재창조하지 않기 위해 파일을 재킹하고 추적하는 것은 충분히 어렵습니다). 예, CS는 유료 제품이지만 무료를 확인하십시오. 개발자 시험, 당신이 궁금하다면.

다른 모든 가치와 마찬가지로. 왜 다른가?

Erlang 인터페이스를 사용합니다 ( http://hg.basho.com/riank/src/461421125af9/doc/basic-client.txt ) 또는 "RAW"HTTP 인터페이스 ( http://hg.basho.com/riank/src/tip/doc/raw-http-howto.txt ). "그냥 작동해야합니다."

또한 일반적으로 RIAK 사용자 메일 링리스트에서 더 나은 응답을 찾을 수 있습니다. http://lists.basho.com/mailman/listinfo/riank-users_lists.basho.com (답변이있는 것 같습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top