Nick
да есть проблема, у меня нет подходящего поля, которое было бы не монотонное
yopp
а что за данные?
Nick
агрегаты по докам, у доков есть id источника, нужно считать параметры по содержимому дков и делат ьпочасовые агрегаты, а по часовым суточные
Nick
причем треубется хранение
Nick
т.к. эти даныне отсылаются в некий сервис, и нужно фиксирвоать факт доставки илбо ошибки и перепосылать
Nick
короч, нужно гдето хранить состояние, вот и пришлось заюзать монгу, т.к. доки и так монге хранятся
Nick
в результате у меня у агрегата составной id : {docId,year,month,day,hour, type}
Nick
у type 10 занчений фиксированных, так что я первоначально сделал шард индекс над hashed _id_docIDd
yopp
ужас какой
yopp
я бы пересмотрел логику
Nick
думаю этим и займусь.
yopp
хранить данные надо так, как ты их потом достаёшь
yopp
т.е. идти от запросов
Dzmitry
Люди а киньте ссыль на русскую книжку по сабжу плз, начальный уровень.
Igor
http://www.pvsm.ru/download/mongodb-ru.pdf
Dzmitry
http://www.pvsm.ru/download/mongodb-ru.pdf
Огромное спасибо.
Igor
резисты должны помогать друг другу (:
yopp
Latest: 3.4.3 (Mar 28, 2017), Stable: 3.2.12 (Feb 1, 2017) 3.4.3: https://docs.mongodb.com/manual/release-notes/3.4/#mar-28-2017 3.2.12: https://docs.mongodb.com/manual/release-notes/3.2/#feb-1-2017 Пришло время обновлятся до 3.4.1+: https://aphyr.com/posts/338-jepsen-mongodb-3-4-0-rc3
yopp
Это, никто не хочет написать нативный монговский драйвер для crystal?
yopp
Есть возможность изучить новый язык и глубоко изучить протокол монги. Там ничего в целом сложного, но куча мороки
yopp
Не биндинги, имено нативный
yopp
Я даже готов проспонсировать!
yopp
Можно вообще взять и попробовать рубишную версию портировать.
Sergey
По-моему кроме тебя на Crystal никто не пишет
Sergey
нормально ли делить один replica set между разными микросервисами?
Dzmitry
У кого нет звонков в ТГ?
Aleksey
не тематичненко. велкам с таким вопросами на талк каналы. благо они есть на любой вкус.
Nick
возможно ктото вкурсе но при апдейте одного поля в документе перезаписывается весь док? а при добавлении длинного поля? и где грань, если она есть
Nick
понять на сколько дорого обновление полей
Nick
ну интересно мне понять какого рода работа происходит на уровне хранения документа, происходит ли перед этим полная вычитка документа, его изменение, и сохранение измененной верси
Nick
Там по-моему аппендится новая версия поля. Не ?
хотелось бы линк на доку, а то чтот не нашел
yopp
это детали реализации хранилища. их как минимум два
Nick
тогда WT, причина в попытках меньше жрать диска
yopp
ну вот что мешало с этого и начать-то?
Nick
только сейчас мне не от чего оттталкиваться
yopp
последняя вещь от которой надо отталкивать — реализация хранения
Nick
для этог ои нужно хотя бы понять как идет работа с документом на низком уровне
yopp
оно тебе не надо, ты спать плохо будешь
yopp
не нужно
yopp
ты уже знаешь что именно упирается в диск?
Nick
я знаю, что выжираю диск, а производительность недостаточно большая
Nick
при использовании индексов
yopp
как ты это выяснил?
yopp
почкему у тебя индексы на диске?
Nick
индексы в памяти, но они не помогают, т.к. у меня обновление данных это 25% запросов по куче документов за раз, 25% обновлений по id, гдето 10% инсертов, остальное агрегация на мапредьсах. и все это задыхается на 2 шардах над двумя 10ми рейдами
Nick
и мне нужно понять какого рода операции делаются во время апдейтов
Nick
ибо это считай 80% моих запросов с учетом мержа от мап редьюса
yopp
ох
Nick
природа данных документная, поэтому не реляционки
yopp
ты сейчас пытаешься диагностировать простуду через колоноскопию
Nick
возможно, но это не отменяет факта, что я до сих пор не знаю как происходит апдейт документа
yopp
я на 97% уверен что тебе надо не в кишках ковырятся, а взять в руки explain и настроить нормальный монтиоринг, чтоб понять _что именно_ и _когда_ и _как_ выжирает диск
yopp
тебе не надо этого знать
yopp
сейчас у тебя недостаточно улик, чтоб точно сказать что является причиной
Nick
эксплейн мне говорит что норм индексы юзаются
yopp
окей, у тебя slowquery анализируется?
yopp
что он тебе говорит?
yopp
«это задыхается на 2 шардах». как именно задыхается?
yopp
«выжирает диск»: тикетов нормальное количество или не хватает? из чего рейд? чего не хватает чтения или записи?
Nick
да, анализируются, сейчас ничего не пишет
yopp
какой трешхолд стоит?
Nick
100мс дефолтный
yopp
что знаичит «задыхается»?
Nick
задыхается - это субъективно через nmon 100% busy рейт
yopp
👍
yopp
тикеты это система ограничения количества одновременных запросов к хранилищу
yopp
оно актуально для любого типа хранилища
Denis
На тему апдейта по-моему он инплейс апдейт делает с новой версией поля. Для того и пэддмнг фактор задирали. Или у меня инсульт
yopp
нет padding в wt
yopp
и никогда не было
Denis
оно актуально для любого типа хранилища
Обычные диски раньше дохнут чем дефолтные значения. Не ?
yopp
padding нужен был для того чтоб монга не искала куда записать документ, когда после обновления он стал больше чем был. и это было в mmapv1
yopp
т.е. это запас по размеру
yopp
монга не kv сторадж, документ, я напоминаю, это просто блоб bson
Denis
You do not have to worry about document movement, padding etc. with WiredTiger. New writes initially get written to files in unused regions and then incorporated in with the rest of the data in the background later. WiredTiger, during an update, will actually write a new version of documents rather than overriding existing data the way a mmapv1 does in many cases. (Check the video from MongodDB free online courses)