Wiem, że w normalnych przypadkach szybciej jest odczytać/zapisać z pliku, ale jeśli stworzyłem system czatowy: Czy szybciej byłoby pisać i czytać z pliku lub wstawić/wybrać dane w db i cahe wyniki?co jest szybszym zapytaniem do bazy danych lub plikiem do zapisu/odczytu
Odpowiedz
Baza danych jest szybsza. I co ważniejsze dla Ciebie, zajmuje się współbieżnym dostępem.
Bazy danych zdecydowanie.
Bazy danych są zoptymalizowane do przechowywania danych, które są stale aktualizowane i zmieniane tak, jak w twoim przypadku. Przechowywanie plików jest przeznaczone do przechowywania długoterminowego z kilkoma zmianami.
(nawet jeśli pliki były szybsze nadal pójdzie z bazami danych, ponieważ łatwiej jest rozwijać i utrzymać)
Od Przypuszczam, system będzie zapisu/odczytu danych w sposób ciągły (jak ludzie wpisać swoje wiadomości), zapisując je do plik zajęłoby więcej czasu ze względu na procedury obsługi plików, tj
- otwartego pliku do pisania
- blokady pliku
- zapisu & Zapisz
- odblokuj plik
Poszedłbym z db.
Naprawdę chcesz mechanicznego działania dysku za każdym razem, gdy ktoś pisze? Pisanie na dysk jest okropnym pomysłem. Buforuj wiadomości w pamięci. Wyczyść wiadomość, gdy zostanie wysłana do wszystkich użytkowników w pokoju. Pamięć podręczna pozostanie mała, przez większość czasu pusta. Jest to najlepsza opcja, jeśli nie potrzebujesz dziennika historii.
Ale jeśli trzeba dziennik ....
Jeśli piszesz dużą ilość danych w 1 przejściu, gwarantuję plik będzie palić wydajność wstawiania bazy danych. Funkcja wstawiania zbiorczego bazy danych może być zgodna z plikiem, ale na początku wymaga źródła danych pliku. Będziesz musiał umieścić w kolejce wiele wiadomości w pamięci, a następnie okresowo spłukiwać do pliku.
W przypadku wielu małych zapisów luka zostanie zamknięta, a baza danych zostanie przesunięta do przodu. Indeksy będą miały wpływ na prędkość wstawiania. Jeśli tysiące użytkowników wstawia się do mocno indeksowanej tabeli, możesz mieć problemy.
Wykonaj własne testy, aby udowodnić, co jest szybsze. Symulacja realistycznego obciążenia, a nie test 1 użytkownika.
- 1. HSQLDB - który jest głównym plikiem bazy danych
- 2. Zapytanie bazy danych MongoDB z zapytaniem
- 3. Co jest szybszym analizatorem składni XML?
- 4. Wstawianie do bazy danych
- 5. Narzędzie do synchronizacji lub migracji bazy danych
- 6. , który jest najszybszym zapytaniem win32 lub SQL?
- 7. Wstawianie zbiorcze do bazy danych Oracle: Co jest lepsze: Pętla kursora lub prosta Wybierz?
- 8. Zapytanie Wielokrotne bazy danych z pojedynczym zapytaniem ado.net
- 9. Mongorestore do innej bazy danych
- 10. Łącze do bazy danych Oracle
- 11. Poczta do bazy danych MySQL
- 12. Łącze do bazy danych Oracle. Sprawdź istnienie lub nadpisanie?
- 13. Wstawianie obrazu do bazy danych
- 14. Jak skopiować dane z jednej bazy danych/tabeli do innej bazy danych/tabeli
- 15. hsqldb: Pobieranie blokady bazy danych podczas łączenia z plikiem db
- 16. bazy danych do śledzenia aktywności użytkownika lub powiadomienia (Facebook Like)
- 17. Jak uzyskać i/lub zapisać kryteria zapytania do bazy danych?
- 18. Dostęp do lokalnej bazy danych lub bazy danych utworzonej w PhoneGap z natywnego kodu Android
- 19. Dodaj datę do bazy danych kopii zapasowej bazy danych SQL
- 20. Schemat bazy danych do przechowywania danych SNMP
- 21. Dodawanie bazy danych/backend do aplikacji android
- 22. Jak połączyć się z plikiem bazy danych MDF?
- 23. Sprawdź, czy argument jest plikiem lub katalogiem
- 24. Minimalne uprawnienia do bazy danych do ładowania danych wsadowych
- 25. co jest zwykłym plikiem na unixie
- 26. Jaka jest domyślna ścieżka do bazy danych dla MongoDB?
- 27. Co jest lepsze dla wydajności - wiele plików w jednym katalogu lub wiele podkatalogów z jednym plikiem?
- 28. Kwerenda LINQ do wstawiania danych do bazy danych
- 29. Jak podłączyć CakePHP do bazy danych SQLite?
- 30. Projektowanie bazy danych do rejestrowania kontroli