Ich weiß, dass in normalen Fällen ist schneller zu lesen/schreiben von einer Datei, aber wenn ich ein Chat-System erstellt: Wäre es schneller zu schreiben und lesen von einer Datei oder Einfügen/Auswählen von Daten in einem db und Cache-Ergebnissen?Was ist schneller Datenbank Querys oder Datei schreiben/lesen
Antwort
Datenbank ist schneller. UND wichtig für Sie, befasst sich mit dem gleichzeitigen Zugriff.
Datenbanken bei weitem.
Datenbanken sind für die Datenspeicherung optimiert, die wie in Ihrem Fall ständig aktualisiert und geändert wird. Der Dateispeicher ist für Langzeitspeicherung mit wenigen Änderungen vorgesehen.
(auch wenn Dateien waren schneller würde ich mit Datenbanken geht nach wie vor, weil es einfacher ist, zu entwickeln und zu pflegen)
Da ich Ihr System davon ausgehen, kontinuierlich Daten würden Schreiben/Lesen (wie die Menschen ihre Nachrichten eingeben), um sie zu schreiben eine Datei würde wegen der Dateibehandlungsprozedur mehr Zeit in Anspruch nehmen, das heißt
- geöffnete Datei für
- Sperrdatei schreiben
- Schreib & speichern
- entsperren datei
würde ich mit db gehen.
Möchten Sie wirklich eine mechanische Festplatte Aktion jedes Mal, wenn jemand eingibt? Das Schreiben auf die Festplatte ist eine schreckliche Idee. Nachrichten im Speicher zwischenspeichern. Löschen Sie die Nachricht, sobald sie an alle Benutzer im Raum gesendet wurde. Der Cache bleibt klein, die meiste Zeit leer. Dies ist die beste Option, wenn Sie kein Verlaufsprotokoll benötigen.
Aber wenn Sie ein Protokoll benötigen ....
Wenn Sie eine große Menge an Daten, die in 1 Durchgang zu schreiben, das garantiere ich die Datei-Datenbank Einfügeleistung rauchen wird. Ein Masseneinfüge-Feature der Datenbank kann mit der Datei übereinstimmen, erfordert jedoch zunächst eine Dateidatenquelle. Sie müssten viele Nachrichten im Speicher in Warteschlange stellen und dann regelmäßig in die Datei einspeichern.
Bei vielen kleinen Schreibvorgängen wird die Lücke geschlossen und die Datenbank wird fortgesetzt. Indizes beeinflussen die Geschwindigkeit des Einsatzes. Wenn Tausende von Benutzern in eine stark indexierte Tabelle einfügen, haben Sie möglicherweise Probleme.
Machen Sie Ihre eigenen Tests, um zu beweisen, was schneller ist. Simulieren Sie eine realistische Last und keinen 1-Benutzer-Test.
- 1. Mongodb was ist schneller $ in oder $ oder?
- 2. Was ist schneller: JDBC oder JNDI?
- 3. Was ist schneller? Struct array oder DataTable
- 4. Was ist schneller? Memcache oder Dateiabfrage? (Mit MaxMind geoip.dat Datei)
- 5. Was ist schneller? System.currentTimeMillis() oder Date(). GetTime()?
- 6. Was ist schneller DOM Insertion oder Manipulation?
- 7. Was ist schneller: Union oder Concat?
- 8. Was ist schneller, key_cache oder OS-Cache?
- 9. Was ist schneller: instanceof oder isInstance?
- 10. Was ist schneller, Zeigerzugriff oder Referenzzugriff?
- 11. Was ist schneller - INSTR oder wie?
- 12. Was ist schneller IN oder OR?
- 13. Was ist schneller, XPath oder Regexp?
- 14. Was ist schneller: Regex oder String-Operationen?
- 15. jQuery was ist schneller: Selektoren oder Methoden?
- 16. Was ist schneller: viele Wenns, oder wenn?
- 17. double oder float, was ist schneller?
- 18. Was ist schneller, subselect oder distinct (MySQL)?
- 19. was ist schneller?
- 20. Speichervergleich, was ist schneller?
- 21. Was ist schneller?
- 22. Logging in innoDB Tabelle oder lokale Datei, welche ist schneller?
- 23. GLScissors: Was ist schneller/besser?
- 24. Double.TryParse oder Convert.ToDouble - was ist schneller und sicherer?
- 25. Was ist schneller in jquery?
- 26. Ist HttpWebRequest oder Webclient schneller
- 27. Was ist schneller: JOIN mit GROUP BY oder eine Unterabfrage?
- 28. Was ist schneller: SUM über NULL oder über 0?
- 29. Was ist schneller: SqlCommand.Parameters [Zeichenfolge] oder .Parameters [Int]?
- 30. Was ist schneller - if..else oder Select..case?