Base de datos del gabinete de Kyoto mediante Archivo de base de datos Hash, ¿cómo se puede evitar el aumento de tamaño del archivo?

StackOverflow https://stackoverflow.com/questions/4320913

Pregunta

Estoy utilizando el seguimiento de abrir:

db.open("db.kch#tune_defrag=10000", DB.OWRITER | DB.OCREATE)

Me estoy poniendo y quitando elementos. Al final de la ejecución, la base de datos es "vacío", la cuenta () devuelve 0, porque me quita todos los elementos. ¿Por qué el tamaño del archivo siempre aumentan cuando repito la prueba? ¿Es posible ejecutar algo así como "recolector de basura" para limpiar los registros extraídos? Si ejecuto la misma prueba de 100 veces, tengo una base de datos de tamaño de 500 MB, aunque sólo tengo 2 registros.

He intentado poner el "tune_defrag = 10000" pero creo que no lo hizo bien el trabajo.

Obs .: un único registro es menos de 1K, no entiendo por qué los registros toman tanto espacio en disco.

Gracias por cualquier ayuda

¿Fue útil?

Solución

Prueba esto:

db.kch#dfunit=8

Eso significa que el KC ejecuta desfragmentación para cada 8 fragmentación detectado, y 8 es realmente recomendable por Mikio.

se enumeran aquí las opciones disponibles, sin embargo, podría utilizar un poco de esmalte.

http://fallabs.com/kyotocabinet/command.html

Otros consejos

En funcionamiento:

kchashmgr desfragmentación path_to_kcabinet_file

es lo que hago para obtener el archivo db 'redimensionado'. No he encontrado el acceso a la API de esto, es por eso que lo hago con un comando shell usando la utilidad kchashmgr (obviosuly esto se puede llamar desde el interior de un programa).

No he utilizado este db particular, pero en algunos otros un truco para resolver este problema es copiar el PP en uno nuevo, y luego borrar el viejo. Después de asegurarse de que copió bien:)

.

He aplicado este proceso en los sistemas de producción, siempre y cuando se codifica realmente muy bien que debería funcionar.

A partir de una mirada superficial a través de la documentación de Kyoto no parece que tiene alguna forma de cambiar el tamaño o limpiar la base de datos de registros eliminados ... o realmente para administrar en cualquier manera o forma de otro modo.

que se ve como el proyecto es muy lejos de ser "listos para la producción". Si usted realmente desea para ponerlo en práctica, sugeriría ponerse en contacto con los propietarios de los proyectos (http://fallabs.com/) y ver si tienen algún plan para algunas funciones de utilidad muy necesarios.

De lo contrario, me gustaría sugerir mover a una base de datos NoSQL estilo diferente, que es un poco más maduro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top