ImmortalCAT
@ImmortalCAT
C# loving

Когда нужно думать о создании базы данных?

Когда нужно задумывать о создании базы данных, в разных приложениях?
Например, если я знаю что у приложения будет например 6 типов данных для хранения ( таблиц ), и в каждой таблице не более 500 записей. Для таких целей, я думаю лучше использовать json и хранить всё в файле.
Будь то mobile/web/winapp.
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если приложение однопользовательское и никакого поиска по данным не надо - база данных не нужна.
Если у вас сайт, рассчитанный на одновременную работу более, чем одного человека, то без базы данных не обойтись. Простейшее изменение данных, выполняемое на БД одной атомарной командой, в случае файлов потребует блокировки файла, а значит ожидания его освобождения остальными пользователями.

P.S.
Ок, пусть будет блог. Комментировать посты в нём можно будет? Тогда надо как-то эти комментарии записывать. Лайки ставить или карму править - это тоже запись данных. Даже простейший счётчик просмотров это уже изменение данных. Вот на примере такого счётчика обычно и поясняют необходимость атомарности и блокировок. Представьте, что два человека одновременно открыли пост блога и скрипты увеличивают счётчики прочтения, старое значение 99.

Скрипт 1: прочитать файл "счётчики"
Скрипт 2: прочитать файл "счётчики"
Скрипт 1: найти в файле счётчик поста, получили 99
Скрипт 2: найти в файле счётчик поста, получили 99
Скрипт 1: увеличить счётчик поста, получили 100
Скрипт 2: увеличить счётчик поста, получили 100
Скрипт 1: записать файл "счётчики"
Скрипт 2: записать файл "счётчики"

То есть вместо ожидаемых 101 в счётчике всего 100. Значит перед изменением любых данных необходимо заблокировать файл на запись, считать из него актуальные данные, внести изменения, записать файл, разблокировать его. Ну а поскольку это json, то считывать и записывать файл каждый раз придётся целиком. Если при изменении данных меняется связь с данными в других файлах, то во избежание нарушения целостности блокировать придётся все связанные файлы.

Ну и поиск по данным, скажем десять самых читаемых постов. В файловом варианте вам придётся считать весь json, и отсортировать его, тогда как в БД при правильной расстановке индексов это действие выполняется в один запрос с линейным получением первых десяти записей по индексу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы