2013-11-09 3 views
1

나는 무엇을 100Gb 텍스트 문서로 조작 할 것인가? 각 문서의 크기는 2Kb - 100Kb입니다.Lucene은 100Gb 이상의 원본 문서를 색인에 저장할 수 있습니까?

먼저 으로 MySQL 또는 Firebird와 같은 DBMS을 사용하여 원시 문서를 lucene의 색인에 저장하여 저장하십시오. 이 접근법에는 몇 가지 단점이 있습니다. 예를 들어, 데이터베이스 트랜잭션은 lucene 인덱스에 대해 아무것도 모르고 그 반대도 마찬가지입니다. 그래서 그들을 동기화해야합니다.

그러면 Lucene이 할 수있는 것은 무엇입니까? 전체 문서를 인덱스에 저장합니다. 그래서 나는 regulary 인덱스의 백업을 생성해야합니다. 하지만 너무 쉽습니다. 색인으로 전체 카탈로그를 복사 할 수 있습니다. 나는 일종의 SQL 스토리지 없음 (예 : Lucene)을 사용합니다. 그리고 DBMS를 사용하지 않을 수도 있습니다.

인덱스에 원본 문서를 저장하는 것이 가장 좋은 방법은 무엇입니까? 나는 그런 목적으로 DBMS를 사용하고 싶지 않다. 가능한가?

+0

solr 및 탄성 검색을 살펴보십시오. 또한 더 큰 매장을 위해 설계되었으며 쉽게 관리하고 쉽게 확장 할 수 있습니다. Bart가 언급 한 것은 유효하지만 검색 가능한 데이터 만 색인에 문서를 저장하지 마십시오. – Dreamwalker

답변

3

원시 문서를 Lucene 색인, 특히 이야기하고있는 크기에 저장하는 것을 원하지 않을 것입니다. 이 방법은 몇 가지 방법으로 수행했지만 둘 다 Lucene 색인에 색인 된 필드 만 저장하고 원시 문서에 대한 ID/포인터를 가지고 있습니다. 나는 1 억개가 넘는 레코드를 잘 처리했으며 단일 서버에서 잘 작동합니다.

중요한 이유는 추가 100 기가의 데이터를 저장할 필요가 없으면 색인 작성 시간과 색인 관리 효율성이 급격히 떨어지기 때문입니다.

기본적으로 검색/검색 쿼리에 필요한 모든 필드의 색인을 생성해야합니다. 사용자가 그리드의 항목을 클릭하면 원시 텍스트를 표시한다고 가정합니다 (UI 패턴은 대부분 Lucene 필드에 액세스 할 수 있지만 대부분 이진 텍스트를 풀다운해야합니다. 파일).

I는 루씬와 함께 사용한 원료의 액세스는 다음과 큰 바이너리 파일 저장에 최적화

  • SQL 서버 FILESTREAM. 정말 빠릅니다. MySQL에이 데이터베이스가 없는지 확실하지 않음
  • Azure 테이블 저장소 - 키 - 값 NoSQL 클라우드 데이터베이스입니다. 이것은 바이너리 얼룩을 저장하는 데 사용되었습니다.

키를 기반으로 빠르게 액세스하고 스트리밍 할 수있는 더 큰 바이너리 파일에 최적화되어있는 한 영구 저장 장치는 실제로 중요하지 않습니다. Lucene이 이진 텍스트 파일에 액세스하기위한 ID 포인터를 가지고있는 한 Redis와 같은 메모리 내장 캐시를 사용할 수도 있습니다.

+0

고마워요! 위에서 Redis은 전체 문서를 저장하고 검색하는 빠른 솔루션이라고 언급했습니다. 앞서 언급했듯이 100GB 이상의 원시 문서와 12Gb RAM 만 있으므로 작은 부품 데이터베이스 만 RAM에로드 할 수 있습니다. 이 접근 방식이 효과가 있습니까? 필요한 모든 것 : 문서를 저장하고 키로 검색하십시오. 그리고 원인에 따라 키로 삭제하십시오. Redis는 문서를 저장하기위한 빠르고 간단하며 신뢰할 수있는 (즉 내구성있는) 접근 방식으로 사용됩니까? 고전적인 DBMS가없는 NoSQL을 선호합니다. – engineer

+0

Lucene은 제한된 RAM에서만 작동 할 수 있습니다. 14 gRAM이있는 서버에서 수억 개의 레코드가있는 여러 개의 인덱스가 있습니다. 쿼리는 조금 느리지 만 많이는 아닙니다. Redis는 당신의 솔루션이 완전히 작동하지 않을 것입니다. 12 기가의 RAM 만 있기 때문입니다.그러나 내가 Redis에 언급 한 이유는 빠른 검색을 위해 RAM에 키를 저장하는 좋은 기능이 있다는 것입니다. Redis는 또한 여러 대의 서버를 추가하고 100 대 이상의 RAM을 제공하고 필요할 경우 모든 문서를 메모리에 저장하여 확장 할 수 있습니다. 또한 HD ... –

+0

을 사용하고 파일을 키 또는 고유 키 조합으로 명명하는 간단한 방법을 테스트해야합니다. 예를 들어, Lucene은 10 개의 일치 항목을 검색합니다. 사용자가 ID = 100을 클릭합니다. Java/C# 코드에서 Lucene에서 클릭 한 ID를 찾은 다음 문서 디렉토리로 이동하여 파일 100.txt를 검색합니다. 나는 당신이이 파일들을 색인 할 필요가 있기 때문에 어딘가에이 문서 디렉토리를 가지고 있다고 가정한다. 텍스트 이름을 고유하게 만들 수 있다면 NoSQL 데이터베이스의 복잡성/오버 헤드없이 잘 작동 할 수 있습니다. –