
Ievgenii
09.04.2018
05:33:26
И хороший мап редьюс
Ну и лично для меня - это скорость
И много разных ништячков:
Поиск случайных записей (одной или более)

Google

Ievgenii
09.04.2018
05:40:24
Модификации записи при ее получении
+ посмотри модификатор графЛукап
+ репликация и шардирование с пол тыка

Evgeny
09.04.2018
06:18:08

Ievgenii
09.04.2018
06:18:38
О.о
Я не Юля)))
Потому, что замеряли

elias
09.04.2018
06:19:13
это опечатка в стиле Юля Зуева? :)

Evgeny
09.04.2018
06:19:19

Ievgenii
09.04.2018
06:19:34
Что значит по выражениям?

Evgeny
09.04.2018
06:19:53

Ievgenii
09.04.2018
06:19:57

Google

Ievgenii
09.04.2018
06:20:26
А в 3.6 добавили ещё "сложные" условия при джойне

Evgeny
09.04.2018
06:22:31

Ievgenii
09.04.2018
06:22:39
С полной агригацией присоединяемой коллекции
Там тривиальные примеры, которые в Монго покрываются простыми индексами
Я не отрицаю, что это полезная вещь, но я пока не понимаю область ее применения

Evgeny
09.04.2018
06:28:11

Ievgenii
09.04.2018
06:28:12
Не проблема самому такое сделать, но когда оно поддерживается с коробки - это удобно
Я в монго для такого просто подготавливал данные и ложил в дополнительное поле
И фильтровал уже по этому полю


Evgeny
09.04.2018
07:02:43
Да, так можно, но в нашем случае неудобно. У нас есть большая таблица по которой идет поиск на основе довольно специфических юзверьских запросов. мы собрали статистику по наиболее частым запросам и создали семь индексов на выражениях для ускорения этих запросов.
И что очень порадовало, для этого не пришлось менять ни код приложения ни структуру БД. Просто добавили несколько хранимых процедур, считающих индексы и использовали их.
эдакая оптимизация БД не затрагивая разработчика апликухи вообще
Я не публиковал. Мы сами замеряли для себя и все.
Вот и возникают сомнения. Часто люди меряют неправильно вставки. Постгра по умолчанию настроена на ACID, а монга, ЕМНИП нет. Надо отключать WAL для таблицы и делать отложеные insert-ы, чтобы сравнивать в одинаковых условиях.


Ievgenii
09.04.2018
07:15:48

Evgeny
09.04.2018
07:22:35
Мы тестили все варианты в равных условиях
Хз как вы тестили. В постгре много тонкостей, которые вы могли просто не знать. Вот например весьма интересный документ:
https://www.percona.com/live/e17/sites/default/files/slides/High%20Performance%20JSON%20-%20PostgreSQL%20vs.%20MongoDB%20-%20FileId%20-%20115573.pdf
Из коробки постгра довольно тормозная.
Но в любом случае мы отказались от монги не из-за скорости. Сильно не хватало транзакций. Вытащить что-то из таблицы сделать кое какие рассчеты и запихать обратно в рамках одной транзакции.

Google

Evgeny
09.04.2018
07:26:47
И как я уже говорил, я не хаю монгу, просто скорее всего у нас специфичный проект для которого постгра подошла лучше.

Ievgenii
09.04.2018
07:29:44
Но правда только одну :(
Нельзя сразу несколько


Evgeny
09.04.2018
07:31:36
Нельзя сразу несколько
атомарность это круто, но нам нужно посерьезнее. сделать несколько select а потом в зависимости от результатов обработки сделать несколько update
что за странная нестабильность в производительности монги в том документе, который я привел?
то она как ракета вставляет, а то падает до нуля записей в секунду!

Ievgenii
09.04.2018
07:32:57
Не наблюдается такого поведения
Стабильно 20-30К апдейтов и около 8К вставок в секунду
Ни и около 30-50К выборок

Ievgenii
09.04.2018
07:33:48
Все норм

Evgeny
09.04.2018
07:34:13
не знаю, видимо у них тесты более тяжелые

Ievgenii
09.04.2018
07:34:20
Может диски?

Evgeny
09.04.2018
07:34:39
постгра очень равномерно все делает, впрочем для нас тоже не аргумент
а как с хранимыми процедурами в монге?
про триггеры не спрашиваю, так как мы ими не пользуемся

Ievgenii
09.04.2018
07:35:11
Все круто! Их нет)))

Evgeny
09.04.2018
07:35:23

Google

Ievgenii
09.04.2018
07:35:29
Ну такое
Мы пришли к тому, что мы все выкинули

Evgeny
09.04.2018
07:35:57
как вы их могли выкинуть если их нет? :)

Ievgenii
09.04.2018
07:36:00
И все на АПП уровне делаем
Из Постгре
У нас 2 СУБД
Основные БД Постгре

Evgeny
09.04.2018
07:36:56
ясно

Ievgenii
09.04.2018
07:37:01
А монго для микросервисов
А свой проект какой пилишь?

Admin
ERROR: S client not available

Evgeny
09.04.2018
07:37:58
а гуй какой-нибудь для монги используете?
для администрирования

Ievgenii
09.04.2018
07:38:30
Парни используют что-то, лично мне очень их консоль нравится

Evgeny
09.04.2018
07:39:09
язык запросов в монге мне ломает мозг

Ievgenii
09.04.2018
07:40:14
))
А вот мне нравится)
Сейчас покажу пример

Evgeny
09.04.2018
07:40:31
еще странный прикол. раньше работало {_id: 123456789} а потмо оп и перестало

Google

Ievgenii
09.04.2018
07:40:32
Одного нашего запроса)))

Evgeny
09.04.2018
07:40:54
приходится писать {_id: NumberLong(123456789)}

Ievgenii
09.04.2018
07:41:13
[{"$match":{"time":{"$gt":1522829200}}},{"$group":{"_id":"$dataId","lastTime":{"$max":"$time"},"countLog":{"$sum":1}}},{"$lookup":{"from":"test_data","as":"test_data","let":{"dataId":"$_id","lastTime":"$lastTime","countLog":"$countLog"},"pipeline":[{"$match":{"$expr":{"$and":[{"$eq":["$$dataId","$_id"]},{"$lt":["$$countLog","$inDay"]},{"$gt":[{"$subtract":[1522915600,"$$lastTime"]},"$delay"]}]}}}]}},{"$unwind":"$test_data"},{"$replaceRoot":{"newRoot":"$test_data"}}]

Evgeny
09.04.2018
07:41:46
да, все эти $gt вместо > вымораживают

Ievgenii
09.04.2018
07:41:53
)))
А мне нравится)))

Evgeny
09.04.2018
07:42:02

Ievgenii
09.04.2018
07:42:56
Так какой свой проект пилишь?

Evgeny
09.04.2018
07:43:17
хз, я не фапаю на SQL, но это однако совсем бида

Ievgenii
09.04.2018
07:43:46
Ну какой замысел?
Что делает проект?

Evgeny
09.04.2018
07:44:21
Это секретная информация. :)
но мы уходим с D на Elixir

Ievgenii
09.04.2018
07:44:38
Ааа)
Ты не сам?

Evgeny
09.04.2018
07:44:55
Нет

Ievgenii
09.04.2018
07:45:04
Ясно

Evgeny
09.04.2018
07:45:49
Но я могу сам принимать решения какие технологии применять