Necesito una estructura de mapa con respaldo de disco para usar en una aplicación Java. Se debe contar con los siguientes criterios:Recomiende un mapa persistente rápido y escalable - Java
- Capaz de almacenar millones de registros (incluso mil millones)
- de búsqueda rápida - la mayoría de las operaciones en el Mapa simplemente para ver si ya existe una clave. Esto y 1 arriba son los criterios más importantes. Debería haber un efectivo en el mecanismo de caché de la memoria para las claves usadas frecuentemente.
- Persistente, pero no necesita ser transaccional, puede vivir con alguna falla. es decir, feliz de sincronizar con el disco periódicamente, y no necesita ser transaccional.
- Capaz de almacenar tipos primitivos simples, pero no necesito almacenar objetos serializados.
- No necesita ser distribuido, es decir, se ejecutará todo en una sola máquina.
- Fácil de configurar & de forma gratuita.
- No hay consultas relacionales necesitan claves
registros serán cadenas o largos. Como se describió anteriormente, las lecturas serán mucho más frecuentes que las escrituras, y la mayoría de las lecturas serán simplemente para verificar si existe una clave (es decir, no será necesario leer las claves asociadas a los datos). Cada registro se actualizará una sola vez y los registros no se eliminarán.
Actualmente uso Bdb JE pero estoy buscando otras opciones.
actualización
desde entonces han mejorado el rendimiento de consulta en mi configuración BDB existente mediante la reducción de la dependencia de las claves secundarias. Algunas consultas requerían una unión en dos claves secundarias y, al combinarlas en una clave compuesta, eliminé un nivel de indirección en la búsqueda que acelera las cosas.
Una opción que estoy considerando es cambiar la forma en que uso mi implementación existente de BDB. Actualmente tengo una gran base de datos para todos mis registros. Sin embargo, debería ser capaz de dividir los datos en conjuntos y tener una base de datos por conjunto; si sé que en algún momento solo necesitaré acceso a ciertos conjuntos, entonces puedo mantener cerrados los conjuntos que no estoy usando, lo cual debería ayudar a bdb a administrar los datos de manera más eficiente para mí. – Joel
he usado bdb je. para su criterio, es un gran ajuste. sin embargo, estaba realmente decepcionado con la fragilidad del mismo, y no lo recomendaría para el uso de producción. cualquier problema en el proceso de java provocó que el subsistema bdb requiriera un reinicio, ¡blech! – james
No estoy seguro de lo que quiere decir con "la fragilidad" de BDB JE. BDB JE es escalable a Terabytes de datos y lo uso en sistemas de producción todo el tiempo. Es una maravillosa pieza de tecnología. – jasonmp85