Der gleichzeitige Zugriff auf die Datenbank oder die Speicherdatei aus mehreren Prozessen ist das möglich?

StackOverflow https://stackoverflow.com/questions/4233132

Frage

Hier ist meine Situation. Ich habe eine Serveranwendung, die mehrere Benutzer verwenden können, sodass es gleichzeitig eine Menge Lese-/Schreibbetrieb gibt. Und die Antworten müssen schnell sein.

Derzeit habe ich alle Daten im Speicher zwischenstrich einzeln.

Aber bald fand ich ein Problem. Das Programm kann nur eine Anfrage gleichzeitig bearbeiten. Sogar das Programm Benchmark Timer meldet mir, dass es Null MS verwendet hat, um zu verarbeiten, aber es gibt immer noch Grenzen, um Anfragen in einer Sekunde zu bearbeiten.

Ich suche also nach einigen Methoden, die mehr gleichzeitig sind, z. B. 8 Prozesse, um die 8 Anfragen gleichzeitig zu bearbeiten. Das wird so schön. Aber es gibt ein größeres Problem beim Datenaustausch, ich möchte das Rad nicht neu erfinden. Also habe ich die MongoDB, Redis und SQLite überprüft.

Hier sind meine Hausaufgaben, korrigieren Sie mich, wenn ich falsch lag, vielen Dank

MongoDB und Redis sind sehr schnell, wie sie angegeben haben, aber sie haben den gleichen Mechanismus verwendet, sie können einmal mit einer Anfrage umgehen, das ist nicht das, wonach ich suche.

Der SQLite ist also ziemlich näher, mehrere Prozesse können gleichzeitig die gleiche DB -Datei öffnen und lesen. Der Schmerz ist das Schreibschloss (ich nicht, wie viel besser die neue Sperre in SQLite3 funktioniert).

Hier ist meine Frage: Gibt es eine solide und gute Lösung für dieses Szenario? Wenn ich einen Schreibprozess in einem trenne, würde es dann helfen?

Danke für einen Kommentar

War es hilfreich?

Lösung

Die Lösung mit MongoDB ist das Sharding. MongoDb Sharding Im Grunde können Sie mehr Prozessoren auf das Problem werfen. Mehr Prozessoren = mehr schreiben Threads.

Jede MongoDB -Instanz hat nur einen Schreib Thread. Sharding gibt mehr Instanzen und ermöglicht daher mehr Schreibvorgänge.

Hier gibt es jedoch ein größeres Problem. Festplattendurchsatz.

Ich hatte Mongo über 1000 Einsätze / Sekunden, wenn das Ganze im RAM ist. Aber die meisten Leute verwenden Mongo als Datenbank mit einer tatsächlichen Dateiunterstützung. Wenn Sie Mongo für wirklich schwere Schreibvorgänge verwenden, müssen Sie mit Scheiben vorbereitet sein, die diesen Durchsatzniveau akzeptieren können.

Auch hier ist das Problem des Scheibendurchsatzes um das Scheibendurchsatz. Bauen Sie mehr Scherben aus und Sie werden weniger Schreibvorgänge / Festplatten und im Grunde weniger rund um die Rundfunk erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top