что быстрее базы данных запросов или записи / чтения файлов - PullRequest
10 голосов
/ 15 января 2011

Я знаю, что в нормальных случаях быстрее читать / писать из файла, но если я создал систему чата: Будет ли быстрее записывать и читать из файла или вставлять / выбирать данные в БД и отображать результаты?

Ответы [ 4 ]

8 голосов
/ 15 января 2011

База данных быстрее.И что важно для вас, имеет дело с одновременным доступом.

2 голосов
/ 15 января 2011

Вы действительно хотите механическое действие диска каждый раз, когда кто-то печатает?Запись на диск - ужасная идея.Кешировать сообщения в памяти.Очистите сообщение, как только оно будет отправлено всем пользователям в комнате.Кеш будет оставаться маленьким, большую часть времени пустым.Это ваш лучший вариант, если вам не нужен журнал истории.

Но если вам нужен журнал ....

Если вы записываете большой объем данных за 1 проход, ягарантировать, что файл будет курить производительность вставки базы данных.Функция массовой вставки базы данных может соответствовать файлу, но для начала требуется источник данных файла.Вам нужно будет поставить в очередь много сообщений в памяти, а затем периодически сбрасывать в файл.

Для многих небольших записей разрыв будет закрыт, и база данных будет двигаться вперед.Индексы будут влиять на скорость вставки.Если тысячи пользователей вставляют в сильно проиндексированную таблицу, у вас могут возникнуть проблемы.

Проведите собственные тесты, чтобы доказать, что быстрее.Имитировать реалистичную нагрузку, а не 1 пользовательский тест.

0 голосов
/ 15 января 2011

Так как я предполагаю, что ваша система будет писать / читать данные непрерывно (так как люди печатают свои сообщения), запись их в файл займет больше времени из-за процедуры обработки файла, т.е.

  1. открыть файл для записи
  2. файл блокировки
  3. написать и сохранить
  4. файл разблокировки

Я бы пошел с БД.

0 голосов
/ 15 января 2011

Базы данных на сегодняшний день.

Базы данных оптимизированы для хранения данных, которые постоянно обновляются и изменяются, как в вашем случае.Хранилище файлов предназначено для длительного хранения с небольшими изменениями.

(даже если бы файлы были быстрее, я бы все равно использовал базы данных, потому что их проще разрабатывать и поддерживать)

...