Ich habe die Dokumentation gelesen und sehr wenig über mehrere Prozesse (Leser und Schreiber) gefunden, die auf eine einzige Kyocabanet-Datenbank zugreifen. Es scheint, dass Sie mehrere Leser erstellen können. Wenn Sie jedoch ONOLOCK nicht angeben, blockieren mehrere Writer den Versuch, die Datenbank zu öffnen. Kann jemand Licht dazu sagen, wie das funktioniert oder ob es möglich ist? Ich verstehe, KyotoTycoon ist eine Option, aber bin speziell neugierig auf KyotoCabinet.KyotoCabinet und mehrere Prozesse?
Antwort
Fand dieses auf dem tokyocabinet manpage:
Tokyo Cabinet bietet zwei Modi zu einer Datenbank verbinden: "Leser" und "Schriftsteller". Ein Leser kann das Abrufen durchführen, aber weder speichern noch löschen. Ein Writer kann alle Zugriffsmethoden ausführen. Die Ausnahmesteuerung zwischen Prozessen wird beim Verbinden mit einer Datenbank durch Dateisperrung durchgeführt. Während ein Writer mit einer Datenbank verbunden ist, können weder Leser noch Writer miteinander verbunden werden. Während ein Leser mit einer Datenbank verbunden ist, können andere Leser eine Verbindung herstellen, Schreiber jedoch nicht. Gemäß diesem Mechanismus ist die Datenkonsistenz bei gleichzeitigen Verbindungen in einer Multitasking-Umgebung gewährleistet.
Dann raten wir, dass dies auch für kyoto gilt.
Kyoto Cabinet ist threadsicher, aber Sie können keine separaten Prozesse gleichzeitig lesen und schreiben. Solange kein Schreiber angeschlossen ist, können Sie mehrere Leseprozesse haben.
Vom website:
Teilen Eine Datenbank durch mehrere Prozesse
Mehrere Prozesse können nicht eine Datenbankdatei zur gleichen Zeit zugreifen. Eine Datenbankdatei wird durch die Leser-Schreiber-Sperre gesperrt, während ein Prozess damit verbunden ist. Beachten Sie, dass die Option 'BasicDB :: ONOLOCK' nicht verwendet werden sollte, um den Dateisperrmechanismus zu umgehen. Diese Option ist für Problemumgehung gegen einige Dateisysteme wie NFS, die nicht Dateiverriegelungsmechanismen unterstützen.
Wenn Sie mehrere Prozesse für die gemeinsame Nutzung einer Datenbank verwenden möchten, verwenden Sie stattdessen Kyoto Tycoon. Es ist ein leichter Datenbankserver als Netzwerk Schnittstelle zu Kyoto Cabinet.
Die Seite, auf die Sie verlinken, enthält einen Absatz, der fast identisch mit dem Zitat der anderen Antwort über Tokio ist: "Kyoto Cabinet bietet zwei Modi für die Verbindung zu einer Datenbank: 'Leser' und "Writer" .... Während ein Writer mit einer Datenbank verbunden ist, können weder Leser noch Writer miteinander verbunden werden. Während ein Leser mit einer Datenbank verbunden ist, können andere Leser eine Verbindung herstellen, aber Writer nicht. " – Reid
@Reid - Ich lese es erneut und ich denke, du hast Recht. Solange keine Schreiber angeschlossen sind, können mehrere Leseprozesse ausgeführt werden. Die Verwendung von ONOLOCK, um gleichzeitige Leser und einen Schreiber zu erlauben, wird nicht unterstützt. – Jeremy
Dieser Absatz erscheint auch in den Dokumenten von Kyoto. http://fehlabs.com/kyotocabinet/spex.html#tutorial – Reid