Другие языки программирования и технологии

NoSQL - это ужас? Или Mongo - это ужас?

Кусок NoSQL запроса в MongoDB:

pipeline:
[
{
$match:
{
$expr:
{
$and:
[
{ $gt: ["$file_count", 5] },
{ $gte: ["$folder_count", 0] },
{ $eq: ["$is_compressed", false]
}
]
}
}
}
]

Кусок SQL запроса:

WHERE (file_count > 5 AND folder_count >= 0) AND is_compressed = 0
Фируз Лии
Фируз Лии
2 270
Скорее всего это сильно недоработанный продукт.
Монгу хвалят за скорость, но злые языки говорят, что скорость не за счет отказа от реляционности, а за счет того, что она целиком сидит в оперативной памяти в оджидании запросов. Если так, то ничто не мешает запихнуть в оперативку и всю реляционную базу данных, например, в виде нетовских датасетов, а можно и спроектировать реляционную БД как таблицы пар ключ-значение, и тогда можно сразу в словари распихать.
А еще можно было бы разработать БД из пар ключ-значение, но с языком запросов SQL.
Мой научный руководитель заставил меня спроектировать реляционную БД как нереляционную (вроде имитации OLAP-кубов) и я с тех пор думаю, что принципиальной разницы нет.
Чтобы разработать идеальную БД, надо смотреть бинарники, как там это все реализовано.
Сергей Мельников
Сергей Мельников
97 040
Лучший ответ
[{ $gt: ["$file_count", 5] },{ $gte: ["$folder_count", 0] },{ $eq: ["$is_compressed", false]]
не вижу сильной разницы. Есть разные синтаксисы яп, почему-то люди не скулят по этому поводу. Хотя подобных примеров можно везде нарыть.
Олжас Кусманов
Олжас Кусманов
58 280
нет. не ужас. просто разные подходы. вообще обычно фапают на реляционность (скула) не зря же её когда то мутили специально для этого. а на монгу и носкула фапать любят неосиляторы скулы. НО! в некоторых случаях носкула оправдана. а носкула в монге оправдана еще больше, ведь она позволяет обмазываться яваскриптом не только в остальной части кода, но даже и при работе с дазой банных. короче ужаса нет ни там ни там, и все решения оправданы для своих задач. пихать же везде или тока скулу или только носкулу моветон. на ламборгини поле пахать глупость, а на тракторе глупость стритрейсерством заниматься. так же и тут. кстати когда то делал тесты скорости на одних и тех же обьемах данных (порядка 2 гб одна таблица, столбцов мало строк дохера), так вот монга гораздо быстрее возвращала ответ чем мускл
По мне так монговый синтаксис запросов это норм - это же JSON который легко программно строить и разбирать - т. е. тут не нужны парсеры и лексеры в случае необходимости.
Ну а вот сама монга непонятно зачем нужна. Я так и не смог придумать реальную задачу где бы нужно было документно-ориентированное хранилище. Все тоже самое умеет PostgreSQL причем гораздо быстрее и при этом остаются все прелести РСУБД.
NoSQL - это ужас, да. Нет абсолютно никакого смысла туда лезть без осознанной необходимости (ее врядли осазнают хипстеры форсившие монгу и MEAN-стек).