Pesquisa binária em um arquivo classificado (mapeado pela memória?) Em Java

Estou lutando para portar um programa Perl para Java e aprendendo Java à medida que vou. Um componente central do programa original é umPerl module que faz pesquisas de prefixo de seqüência de caracteres em um arquivo de texto classificado de +500 GB usando pesquisa binária (essencialmente, "busca" para um deslocamento de byte no meio do arquivo, retrocede para a nova linha mais próxima, compara o prefixo da linha com a seqüência de pesquisa, "busca" para metade / o dobro do desvio de bytes, repita até encontrar ...)

Eu experimentei várias soluções de banco de dados, mas descobri que nada supera isso na velocidade da pesquisa com conjuntos de dados desse tamanho. Você conhece alguma biblioteca Java existente que implementa essa funcionalidade? Caso contrário, você poderia me indicar algum código de exemplo idiomático que faz o acesso aleatório ler em arquivos de texto?

Alternativamente, não estou familiarizado com as novas bibliotecas de E / S Java (?), Mas seria uma opção mapear com memória o arquivo de texto de 500 GB (estou em uma máquina de 64 bits com memória de sobra) e pesquisa binária na matriz de bytes mapeada na memória? Eu ficaria muito interessado em ouvir qualquer experiência que você tenha para compartilhar sobre esse e outros problemas semelhante

questionAnswers(8)

yourAnswerToTheQuestion