Búsqueda binaria en un archivo ordenado (¿mapeado en memoria?) En Java

Estoy luchando para portar un programa Perl a Java, y estoy aprendiendo Java a medida que avanzo. Un componente central del programa original es unaPerl module que realiza búsquedas de prefijos de cadena en un archivo de texto ordenado de +500 GB mediante búsqueda binaria (esencialmente, "buscar" a un desplazamiento de bytes en el medio del archivo, retroceder a la nueva línea más cercana, comparar el prefijo de línea con la cadena de búsqueda, "buscar" a la mitad / el doble de ese desplazamiento de byte, repita hasta que se encuentre ...)

He experimentado con varias soluciones de bases de datos, pero descubrí que nada supera esto en la velocidad de búsqueda con conjuntos de datos de este tamaño. ¿Conoces alguna biblioteca Java existente que implemente dicha funcionalidad? De lo contrario, ¿podría indicarme algún código de ejemplo idiomático que haga lecturas de acceso aleatorio en archivos de texto?

Alternativamente, no estoy familiarizado con las nuevas (?) Bibliotecas de E / S de Java, pero sería una opción para mapear en memoria el archivo de texto de 500 GB (estoy en una máquina de 64 bits con memoria de sobra) y hacer ¿Búsqueda binaria en la matriz de bytes mapeada en memoria? Estaría muy interesado en escuchar cualquier experiencia que tenga para compartir sobre este y otros problemas similares.

Respuestas a la pregunta(8)

Su respuesta a la pregunta