Ho letto la documentazione e ho trovato molto poco su più processi (lettori e scrittori) che accedono a un singolo database di kyotocabinet. Sembra che tu possa creare più lettori, ma se non specifichi ONOLOCK più scrittori bloccheranno il tentativo di aprire il db. Qualcuno può far luce su come funziona o se è possibile? Capisco che KyotoTycoon sia un'opzione, ma sono curioso in particolare su KyotoCabinet.KyotoCabinet e più processi?
risposta
trovato questo sulla pagina di manuale tokyocabinet:
Tokyo Gabinetto fornisce due modi per connettersi a un database: "lettore" e "scrittore". Un lettore può eseguire il recupero, ma non memorizza né elimina. Uno scrittore può eseguire tutti i metodi di accesso. Il controllo di esclusione tra i processi viene eseguito durante la connessione a un database tramite il blocco dei file. Mentre uno scrittore è collegato a un database, né i lettori né i writer possono essere connessi. Mentre un lettore è connesso a un database, altri lettori possono essere collegati, ma gli scrittori non possono. Secondo questo meccanismo, la coerenza dei dati è garantita con connessioni simultanee in ambiente multitasking.
Indovinando quindi che ciò vale anche per kyoto.
Kyoto Cabinet è thread-safe, ma non è possibile avere processi separati di lettura e scrittura allo stesso tempo. È possibile avere più processi di lettura a condizione che non ci sia nessuno scrittore connesso.
Dal website:
condivisione di un database di termini di processi multipli
più processi non possono accedere ad un file di database, allo stesso tempo. Un file di database viene bloccato dal blocco lettore-scrittore mentre un processo è connesso ad esso. Si noti che l'opzione `BasicDB :: ONOLOCK 'non dovrebbe essere utilizzata per evitare il meccanismo di blocco dei file. Questa opzione è per la soluzione contro alcuni file system come NFS, che non supporta i meccanismi di blocco dei file di supporto .
Se si desidera ottenere più processi per condividere un database, utilizzare invece Kyoto Tycoon. Si tratta di un server di database leggero come interfaccia di rete per Kyoto Cabinet.
La pagina che si collega contiene un paragrafo quasi identico a quello dell'altra risposta su Tokyo: "Kyoto Cabinet offre due modalità di connessione a un database: 'lettore' e "scrittore" ... Mentre uno scrittore è collegato a un database, né i lettori né i writer possono essere connessi: mentre un lettore è connesso a un database, altri lettori possono connettersi, ma gli scrittori non possono farlo. " – Reid
@Reid - Ho riletto e penso che tu abbia ragione. Puoi avere più processi di lettura se non ci sono scrittori connessi. L'uso di ONOLOCK per consentire a lettori e scrittori simultanei non è supportato. – Jeremy
- 1. SQLite3 e più processi
- 2. file su più processi
- 3. Otto/EventBus tra più processi
- 4. Multiprocessing: più processi di cpu.count
- 5. Crea connessione DB e mantiene su più processi (multiprocessing)
- 6. Come posso dividere e ricongiungere STDOUT da più processi?
- 7. GPUImageMovie utilizza più immagini come trame e processi
- 8. Stato sessione ASP.NET e più processi di lavoro
- 9. Registrazione di Python da più processi
- 10. condivisione puntatori tra più processi a forcella
- 11. Più sessioni/processi WebBrower in una finestra
- 12. Problema forking fork() più processi Unix
- 13. Più memoria di processi .NET. Footprint
- 14. fork() processi figlio e genitore
- 15. processi server multipli utilizzando nginx e uWSGI
- 16. Python Qual è la differenza tra un pool di processi di lavoro e l'esecuzione di più processi?
- 17. Qual è il metodo più semplice di comunicazione tra processi tra 2 processi C#?
- 18. fork() e wait() con due processi figlio
- 19. Memoria condivisa tra processi C++ e Java
- 20. Distinzione tra processi e thread in Linux
- 21. In che modo Google Chrome controlla/contiene più processi?
- 22. Elaborazione di un singolo file da più processi in python
- 23. Perdita di memoria in Scala e processi
- 24. È possibile eseguire più processi su un dyno Heroku?
- 25. Condivisione di una coda di risultati tra più processi
- 26. Come eseguire più processi/thread/frontend di Tornado?
- 27. Pool di memoria nel driver Kernel per più processi
- 28. Intellij IDEA crea più processi per ciascuna sessione di debug?
- 29. C++ condivisione di oggetti di classe singola tra più processi
- 30. in che modo DOS ha eseguito più processi contemporaneamente?
Questo paragrafo viene visualizzato anche nei documenti di Kyoto. http://fallabs.com/kyotocabinet/spex.html#tutorial – Reid