요구 사항 :데이터 구조가 예측 순서대로 분할되는 알고리즘
저는 Solr 인덱스를 빌드하는 프로그램에 기능을 추가하고 있습니다. 시스템은 멀티 스레드이므로 검색 항목은 매번 무작위 순서로 작성됩니다. 사용자가 하나의 큰 파일을 업로드하려고하면 서버에서 메모리가 부족할 수 있기 때문에 Solr 색인도 여러 파일로 분할해야합니다.
문제 : 안정적인 시스템을 유지하고 일을 더 쉽게 전체 수 있도록하기 위해는, 결과 SOLR 인덱스 파일에 상관없이 그들이 처리하고 어떤 순서로 같은 수 없습니다해야 할 지표는 균형을해야합니다. 파일을 가로 질러 (또는 균형을 이룰 수있을만큼 충분히 가까이서), 최대량의 엔트리를 갖는다. 파일이 최대 항목 수를 초과하면 분할해야합니다. 이 파일들은 실행 중에도 업데이트되므로 항목이 추가, 제거 및 변경됩니다.
이 필요한 것 : 나는 이러한 요구 사항에 적용 할 수있는 알고리즘을 찾고 있어요
. 어떤 종류의 B-tree가 필요하다고 생각하지만이 특정 요구 사항에 적합한 B-tree 변형에 대해서는 알지 못합니다.
이러한 요구 사항에 도움이되는 알고리즘 또는 데이터 구조가 있습니까?
"Solr 색인 파일이 동일해야합니까?" 처리 순서에 관계없이 파일이 동일해야한다는 것을 의미합니까? 또는 파일의 내용을 읽고 처리하면 동일한 결과를 만들어야합니까? –
기본 Lucene 색인 파일은 추가 전용이므로 다른 순서로 항목을 추가하면 다른 파일이 생성됩니다 (내부 docid도 다를 수 있음). 자체 코덱을 만들어 콘텐츠를 직렬화 및 비 직렬화 할 수 있습니다. 이러한 요구 사항을 충족하면서 _ 확장 할 수 있습니까? Solr 외부에서 Lucene 색인을 직접 작성하고 있습니까? 어떻게 작성하고 있습니까? 디스크와 메모리에 구조를 생성 한 다음 그 구조를 Lucene에 순차적으로 직렬화 할 수 있습니까? 이 경우에 각 스레드에 2 진 트리가 있으면 디스크에 병합됩니다. – MatsLindh
"Solr 색인 파일이 동일해야합니다."라는 말은 파일 자체가 동일해야한다는 의미입니다. 이러한 요구 사항은 프로그램의 신뢰성과 무결성을 입증하는 것입니다. 우리가 계획을 세우는 데 그리 멀기 때문에 Solr 인덱스가 어떻게 만들어지고 있는지 모르겠습니다. 그러나 이러한 파일은 JSON 형식으로 작성됩니다. 그러나 결과 파일이 일관성있는 한, 디스크와 메모리에 구조를 만들 수는 있습니다. – user489481