2012-07-18 13 views
5

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

3

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.

+0

Questo paragrafo viene visualizzato anche nei documenti di Kyoto. http://fallabs.com/kyotocabinet/spex.html#tutorial – Reid

1

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.

+0

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

+0

@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

Problemi correlati