2012-07-18 16 views
5

He leído la documentación y he encontrado muy poco sobre múltiples procesos (lectores y escritores) que acceden a una única base de datos kyotocabinet. Parece que puede crear varios lectores, pero a menos que especifique ONOLOCK, múltiples escritores bloquearán al tratar de abrir el archivo db. ¿Alguien puede arrojar algo de luz sobre cómo funciona esto o si es posible? Entiendo que KyotoTycoon es una opción, pero tengo curiosidad sobre KyotoCabinet.KyotoCabina y múltiples procesos?

Respuesta

3

Encontramos en la página de manual tokyocabinet:

Tokio Gabinete proporciona dos modos de conectarse a una base de datos: "lector" y "escritor". Un lector puede realizar la recuperación pero no almacenar ni eliminar. Un escritor puede realizar todos los métodos de acceso. El control de exclusión entre procesos se realiza cuando se conecta a una base de datos mediante bloqueo de archivos. Mientras un escritor está conectado a una base de datos, no se pueden conectar lectores ni escritores. Mientras un lector está conectado a una base de datos, otros lectores pueden conectarse, pero los escritores no pueden. De acuerdo con este mecanismo, la consistencia de los datos está garantizada con conexiones simultáneas en el entorno multitarea.

Supongo que esto también se aplica a kyoto.

+0

Este párrafo también aparece en los documentos de Kyoto. http://fallabs.com/kyotocabinet/spex.html#tutorial – Reid

1

Kyoto Cabinet es seguro para subprocesos, pero no puede tener procesos separados de lectura y escritura al mismo tiempo. Puede tener múltiples procesos de lectura siempre que no haya escritor conectado.

Desde el website:

compartir una base de datos por múltiples procesos

Múltiples procesos no pueden acceder a un archivo de base de datos al mismo tiempo. Un archivo de base de datos está bloqueado por el bloqueo de lector-escritor, mientras que un proceso es conectado a él. Tenga en cuenta que la opción `BasicDB :: ONOLOCK 'no debe ser utilizada para escapar del mecanismo de bloqueo de archivos. Esta opción es para la solución contra algunos sistemas de archivos como NFS, que no admite los mecanismos de bloqueo de archivos de .

Si desea obtener múltiples procesos para compartir una base de datos, utilice Kyoto Tycoon en su lugar. Es un servidor de base de datos liviano como la red de Kyoto Cabinet.

+0

La página a la que enlaza contiene un párrafo casi idéntico a la cita de la otra respuesta sobre Tokio: "Kyoto Cabinet ofrece dos modos para conectarse a una base de datos: 'lector' y "escritor" ... Mientras un escritor está conectado a una base de datos, no se pueden conectar ni lectores ni escritores. Mientras un lector está conectado a una base de datos, otros lectores pueden conectarse, pero los escritores no pueden ". – Reid

+0

@Reid - Lo releí y creo que tienes razón. Puede tener múltiples procesos de lectura siempre que no haya escritores conectados. No se admite el uso de ONOLOCK para permitir lectores simultáneos y un escritor. – Jeremy

Cuestiones relacionadas