@movchans

Зачем нужна база данных если можно хранить данные в json файлах?

Какие преимущества дает использование к примеру mongodb в сравнение с хранинием данных в json файлах?
  • Вопрос задан
  • 968 просмотров
Пригласить эксперта
Ответы на вопрос 4
@deliro
1. JSON нельзя отредактировать где-то посередине. Сложность такой операции O(n)
2. По JSON нельзя эффективно делать выборку, например, получить юзера с id=123 — сложность O(n)
3. Удаление тоже самое — перезаписывать весь файл
4. Нет транзакций
5. Нет целостности данных
6. Миллион других причин, все из которых перечислены в "фичах" любой БД
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
movchans ваша фраза (заголовок вопроса) просто выдает в вас неопытного разработчика который еще с базой не работал.

MongoDb помимо хранения json файлов (на самом деле внутри она хранит bson) предлагает опции масштабирования (можно поднимать несколько нодов одной базы) и командную строку запросов. Кроме того можно создавать индексы, по разным полям документа - это коробочная фича Mongo.

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

По остальным пунктам что написал Roman Kitaev я полностью согласен.
Ответ написан
Комментировать
СУБД решает следующие проблемы:
1. Сетевой доступ к данным.
СУБД позволяет хранить данные на отдельном сервере.
Файлы - нет.

2. Эффективное хранение данных.
Большинство СУБД хранит данные в двоичном виде, что более эффективно и удобно для компьютера.
Файлы - нет.

3. Конкурентный доступ к данным.
СУБД позволяет работать с данными одновременно разными клиентами. И это не приведёт к непредсказуемым проблемам.
Файлы - нет.

4. Индексирование данных для эффективного поиска.
СУБД сама создаёт некоторые простые индексы и даёт возможность создать новые, чтобы поиск был быстрым. Файлы - нет.

5. Горизонтальное масштабирование.
СУБД позволяет тебе поднять несколько экземпляров базы данных не скольких серверах, и распределить между ними нагрузку.
Файлы - нет.

6. Контроль целостности.
СУБД гарантирует, что твои данные всегда будут читаемыми. У тебя никогда не возникнет ошибка "Invalid JSON".
В файлах таких гарантий нет.

7. Удобный интерфейс.
СУБД предлагает тебе удобный API для выполнения различных запросов на поиск и изменение данных.
Файлы такой интерфейс не дают.

8. Удобное администрирование.
СУБД имеет также интерфейс для отслеживания своего состояния и настройки под ситуацию.
Имеется множество инструментов для профилирования производительности БД и бэкапов.
Файлы ты никак не сможет администрировать.

Естественно, все эти проблемы ты, теоретически, сможешь решить самостоятельно. Но тогда у тебя в результате получится новая СУБД, а не просто голые json-файлы.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
JSON тоже можно в MongoDB хранить :D :D :D

если серьезно, то как профи ты задашься примерно таким вопросом
UPDATE-Benchmark-2018.001.jpeg

а пока можно хранить да хоть в приложении
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы