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
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.
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.
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
@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
- 1. SQLite3 y procesos múltiples
- 2. fork() - múltiples procesos y llamadas al sistema
- 3. archivos en procesos múltiples
- 4. Patrones para procesos múltiples PHP?
- 5. Registro Python desde procesos múltiples
- 6. ASP.NET estado de sesión y múltiples procesos de trabajo
- 7. Tramas múltiples de Python/procesos múltiples para leer puertos serie
- 8. Múltiples hilos o procesos con hilos
- 9. Múltiples procesos accediendo al mismo archivo
- 10. nginx: ¿Es multiproceso pero utiliza múltiples procesos?
- 11. Shell script para ejecutar procesos múltiples
- 12. Procesos de bifurcación/múltiples roscas | Bash
- 13. Problema al horquillar fork() múltiples procesos Unix
- 14. Tuberías y procesos
- 15. cómo matar procesos y procesos secundarios de python?
- 16. Procesamiento de un solo archivo desde procesos múltiples en python
- 17. Multiproceso de Python: ¿cómo comparto un dict entre múltiples procesos?
- 18. fork() procesos secundarios y secundarios
- 19. TransactionScope en AppDomains y procesos
- 20. Compartiendo un puerto entre múltiples procesos node.js HTTP
- 21. ¿Cómo publico múltiples aplicaciones/procesos con un solo clic?
- 22. Múltiples sesiones/procesos de WebBrower en una ventana
- 23. Ejecución concurrente del kernel GPU desde procesos múltiples
- 24. Htop que muestra múltiples procesos java con diferentes pids
- 25. Procesos de un único remitente y múltiples receptores que usan cola de mensajes posix en Linux
- 26. Crear conexión de base de datos y mantener en múltiples procesos (multiprocesamiento)
- 27. ¿De qué manera Phusion Passenger reutiliza hilos y procesos?
- 28. Procesos Zombie que aparecen cuando genero procesos
- 29. C# y C++ Sincronizar entre procesos
- 30. Bash sustitución de procesos y sincronización
Este párrafo también aparece en los documentos de Kyoto. http://fallabs.com/kyotocabinet/spex.html#tutorial – Reid