Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 August 18

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Ну я образно)
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Когда у данных может не быть четкой структуры

Или, например, тип одного и того же поля может меняться

И это по независящим причинам

Баналтный пример, поставщики финансовых данных

Используй ты таблицу для сохранения данных от поставщиков, у тебя в каждой было бы по 70 столбцов из которых не null было бы 3, и для каждой строки рандомно

Сохранять такое и работать в sql не удобно, а четкой структуры нет
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
У монги там все не так радужно. Чтобы оно все работало хорошо и быстро ей нужен регулярный меинтенанс (и это не апгрейды). И вот этот самый меинтенанс при приличных объемах данных в таблице даже в монговском атласе не проходит по сценарию zero downtime.
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Просто в постгресе тоже есть json
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Ну в теории любой фреймворк решает задачи которые можно нативным кодом решить

А так монгус упрощает написание схемы валидации, добавляет более простую работу с индексами, добавляет виртуальные методы, которые обычно быстрее писать, чем аналогичное на яп
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Да, ток вчера смотрел доклад от одного из разрабов этой фичи постгреса

Во-первых, там отдельный синтаксис для работы с ним, который нужно будет доп учить (в монге обычный js)

Во-вторых, монга до сих пор с ним работает быстрее чем постгрес
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
По моему там данные обратные. Пг быстрее
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
А в докладе более новом, он сказал, что те тесты не валидны так как там постгре работал в оперативке именно в тестовом режиме, а монга дополнительно записывала на диск так как работала в штатном
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
А есть ссыль?)
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Валидацией данных можно и нужно заниматься гораздо выше по слоям, чем при записи в бд.

Простую работу с индексами в монге монгус точно сделать не может. Кривую - запросто, т.к. индексы в монге это очень сложная тема, если приложение чуть сложнее туду листа.
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
А ну еще у монги сам функционал шире пока для работы с json, та же аггрегация
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Быстро не нашел, если найду - скину
источник

MA

Maksim Andreevich in NodeUA - JavaScript and Node.js in Ukraine
Окей
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Индексы бывают разные и обьемы бывают разные

У меня проекты намного сложнее туду и монгус вполне справляется

Правда сами проекты не рассчитаны на большую нагрузку

Да, если нужна серьезная оптимизация придется руками делать

Про валидацию согласен, но я предпочитаю и там и там
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
А и еще про монгу

Я считаю что для 70-80 процентов проектов ее использовать не имеет смысла

Для еще 10-15% нужно использовать в связке с реляционной как вспомогательный инструмент

И только в оставшемся небольшом проценте она имеет смысл кае основная бд
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Проблема в том, что монгусь создаёт индексы абы были. Что сразу же создаёт кучу оверхеда и в дальнейшем кучу проблем. Один индекс может с легкость весить пару сотен гигов.
Второй момент, то как морга выбирает какой индекс юзать. Например, есть два индекса по полям foo и foo, bar, baz. Если сделать файнд по полям foo и bar, какой из них монга заюзает?
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Не понял про индексы по полям

Вообще, по идее должен юзать по тому, который первый в запросе
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Есть коллекция c, в ней сделали
c.createIndex({foo:1})
c.createIndex({foo:1, bar:1, baz:1})
Потом накидал туда доков. И потом сделали
c.find({foo: 'foo', bar: 'bar'})
источник

МЗ

Михаил Золотарёв... in NodeUA - JavaScript and Node.js in Ukraine
Ну видимо монго будет использовать первый индекс прр поиске

А если бы в запросе был bar или baz то второй
источник