yopp
ищите что с тонелем
yopp
да
yopp
я так понимаю что проблема с jubmo чанками у вас возникает сразу после первичной вставки
Aleksey
уже нет логов) надо заново начинать. погляжу когда буду повторять
Aleksey
yopp
а значит чанки не смогли поделится при вставке
Aleksey
сделал гигабайтные чанки, более менее даже разлились по шардам (одна больше, но миграции идут)
Aleksey
поэтому вопрос с добавлением в индекс шардирования дататайма - актуальный
yopp
Aleksey
yopp
я имею ввиду ключ сам не делится
Aleksey
ну или не хочет. потому что если руками по одному store_id я делаю сплит - то не уходит в джамбо
yopp
т.е. если у вас есть ситуация когда чанк будет равен ровно одному значению account_id:, store_id и туда попадает больше документов, чем размер чанка, то это объясняет ситуацию
Aleksey
yopp
ага
Aleksey
тут видно что мельче уже некуда
yopp
да, по этому этот чанк уже не разбить
yopp
это проблема с выбором ключа
Aleksey
по сути это коллекция чеков, их много) разбивать кроме как по аккаунтам и магазинам - больше ничего в голову не приходит
Aleksey
только даташтампы
Aleksey
попробовать добавить даташтамп в индекс?
yopp
тут вопрос упирается в то, какую проблему вы хотите решить шардированием
Aleksey
1. хранение. места надо всё больше, надо размазать хранение просто добавляя шарды
2. нагрузка. желательно нагружать сервера равномерно, не дергая на каждый запрос все шарды
yopp
с п.2 всё будет зависеть от запросов и распределения данных
yopp
зависит от
Aleksey
в самом деле вопрос фундаментальный - насколько корректно datetime использовать в ключе шардирования.
yopp
в суффиксе смысла особого нет
yopp
как мне кажется
Aleksey
в каком суффиксе?
yopp
в суффиксе шард ключа
yopp
в конце короче :)
Aleksey
типа того что забить на эти джамбы?
Aleksey
распределилось и пофиг?)
yopp
нет, это не штатная ситуация и с этим будут проблемы
Aleksey
ну и чанки размером по гигабайту меня смущают тоже
yopp
а даты как используются?
yopp
и оставшиеся 10% запросов какого рода?
yopp
есть ли запросы без account_id/store_id в принцпе?
Aleksey
yopp
а без store_id?
Aleksey
а без store_id?
очень маловерятно. скорее без account_id могут быть, но это перепишем
yopp
Aleksey
ну за ~год
Aleksey
врядли дальше ктото полезет
Aleksey
и это очень редкие запросы
yopp
тут есть две крайности :)
Aleksey
ок, давайте исходить из того что ВСЕ запросы содержат поля account_id + store_id+ datetime
yopp
дата неплохой кандидат, но с ней получается две крайности
1) если поставить её в конец шард ключа, то появится возможность настроить зоны таким образом, чтоб сбалансировать отдельных клиентов/магазины на отдельный шард. это позволит контролитровать «эффект джастина бибера».
2) если поставить в начало ключа, то появится возможность с минимальными затратами поделить на холодные, тёплые и горячие по дате, так как данные со временем теряют свою актуальность и как вы заметили, выбирать архивные данные будут редко
и это два взаимоисключающих подхода :)
Aleksey
горячие решаются кешированием. сверкрупных клиентов нет, усредненный шардинг по аккаунту - вполне равномерен
yopp
в данном случае это не query tiers, а storage tiers
Aleksey
меня смущает только две вещи
1 то что у меня поле - не дата, а дататайм
2 то что добавив постоянно расширяемое поле рискую нарваться на постоянное молотилово балансировщика которые будет постоянно создавать новые чанки (не знаю насколько это плохо в долговременной перспективе)
yopp
зачем хранить данные которые никому не нужны, например на толстой ноде, с большим объёмом памяти и nvme, если можно сложить это на ноду с большим объёмом дешёвого хранилиша
yopp
как следствие масштабирование будет дешевле
yopp
но если придёт толстый клиент то будет грустно :)
Aleksey
разумно, но до такого уровня еще надо дорасти)
yopp
но там где «если» это вобщем-то предварительная оптимизация
yopp
Aleksey
толстые клиенты приземляются в отдельные окружения, там шардирование выходит только по store_id
yopp
в вашем случае это даже хорошо
Aleksey
ну да ну да)
yopp
а про то что постоянно будет рубилово, то ничего страшного в принципе в этом нет
Aleksey
Aleksey
спасибо, буду пробовать
yopp
так как у вас дата не в начале, рубилово вобщем-то будет вполне валидное
yopp
единственный минус который я вижу, это что у тех, у кого много данных, вставка будет всегда ехать на один шард
yopp
в смысле магазин с большим потоком чеков
Aleksey
Aleksey
усредненный шардинг по аккаунту - вполне равномерен
Viktar
Господа есть разница в перформансе когда в find указывать не все поля а конкретные. Документы довольно большие ~200кб
db.collection.find ({id:<id>, weigth{$gte: 500}}) и db.collection.find ({id:<id>, weigth{$gte: 500}},{lastName:1, firstNme:1})
yopp
yopp
Так что зависит от того где ботелнек
Viktar
Получается, со стороны монги будет больше работы.
yopp
Не всегда, но да
Viktar
Ботлнек диски. Чтение.
yopp
На диски не повлияет, так как всё равно документ надо целиком прочитать