Разница в хранении данных с помощью бд и с помощью текстовых файлов

У меня есть потребность в хранении довольно большого количества данных о пользователе, притом иметь как можно меньше время доставания\изменения этих данных. Вопрос в том, каким способом эти данные хранить при таких условиях? Довольно очевидный вариант - базы данных, но судя по моим тестам(проводились они на sqlite, но не думаю, что дело в бд), их вес получается довольно большой и время отклика у них примерно такое же, как если бы просто сохранять данные в txt файл.

И теперь у меня встал вопрос в том, какие могут быть проблемы в случае, если будет использоваться именно вариант с файлами кроме того, что это просто звучит очень непрофессионально и странно?


Ответы (2 шт):

Автор решения: CrazyElf

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

Но если вы собираетесь обновлять данные частично, обновлять/читать данные одновременно в несколько потоков, делать сложные выборки по разным полям. Тогда при использовании файловой БД у вас будут мягко говоря сложности.

Я предполагаю, что скорее всего вы хранили данные в БД как-то неправильно. Не делали подходящие индексы. Не читали/обновляли данные частично (не все поля). Не хранили поля большого размера в сжатом виде. Ну и т.д.

При неправильном использовании "нормальной" БД вы, конечно, не заметите никакого ускорения, а место для хранения может "раздуться", если вы будете использовать неправильные типы данных для полей.

С БД нужно уметь правильно работать, чтобы ощутить все преимущества "полноценной" БД.

→ Ссылка
Автор решения: eri

Файловая система обычно не расчитанна на хранение миллиона файлов в одном каталоге. Если файлов больше 10000 уже могут начаться( а могут не начаться) проблемы с откликом. Чтоб избежать этого эти файлы распределяют по подпапкам, но это усложняет поиск нужного файла. Файловый вариант хорош пока его только читаешь. При копировании большого количества мелких файлов начинается ад.

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

→ Ссылка