yopp
Любая аутентификация ничего не гарантирует, кроме того что кто-то владеет подходящим секретом.
yopp
С билингом самым сложным был флоу процессинга (нелинейность и асинхронность) и создание подписок по итогам успешной оплаты.
Aleksey
https://jira.mongodb.org/browse/SERVER-30811
ну вдруг..
yopp
Активация подписок была тоже индемпотентной, на счётчике. У подписок был монотонно возрастающий идентификатор. Номер активированной подписки хранился в профиле. Если подписка истекла, а у пользователя открыто 30 вкладок, которые перезагрузились, в итоге все 30 запросов будут гарантированно взаимодействовать с одной подпиской.
yopp
Короче нужно просто перестать мыслить реляционными паттеранами и больше уделять внимания бизнес логике.
Кейсов где реально нужна прямо гарантированная транзакционность очень мало, и обычно там монгу не используют по множеству других причин.
Viktor
интересный кейс про биллинг, нет случайно блога с примерами?)
David
yopp
yopp
Alex
это все прикольно пока подписок ограниченное количество
Alex
а если мильены ?
Viktor
особенно про использование на кластере
Alex
конечное время обработки так или иначе есть для каких то объемов
yopp
Alex
закон Амдала же
Alex
не ?
Alex
или он не работает от слова совсем ?
yopp
Я тебя не понимаю сейчас совсем :)
Alex
ну ты упрешься либо в пропускную способность канала либо дисков либо CPU
yopp
Шардить никто не мешает
Alex
так или иначе где то во что-то что будет лимитировать конечную пропускную способность обработки
yopp
По ацдишникам профиля шардится изумительно
Alex
не мешает конечно
Alex
в другое место по большей части перетаскиваешь узкое место )
Alex
ну и там по цепочке
yopp
Потом сами подписки отмирают, шардить по дате создания и профилю прямо шикарно. Нужно немного извернуться и вручную крошить и балансировать диапазоны, но это не сложно.
Alex
Окай, задефайним это так что в один момент времени для конкретной системы существует конечная пропускная способность
yopp
Эээ. Да.
yopp
В любой информационной системе.
Alex
yep
yopp
И?
yopp
Я не очень понимаю что ты хочешь этим сказать
Alex
успокойсо
Alex
все ок
yopp
Мы можем деражать время обработки в каком-то разумном пределе, лимитируя объём информации. Шардинг отлично решает эту задачу, подписки статистически активируются последовательно в течении конечного временного периода (у нас 4 недели было). Остальные в 90% случаев уже не активируются никогда. На «горячей» зоне живут подписки за последние 8 недель. Ёмкий ключ позволяет хорошо масштабироваться в ширину, в том числе и на запись.
yopp
Автозамену в последней бете окончательно доломали. Роботы бунтуют
Ruslan
мне надо показывать список групп устройств, как правильнее сделать: отдельная коллекция групп и айди групп в документах колекции устройств или поле группы в документе устройства с её айди и названием и поиск по всем устройствам на предмет уникальности групп?
Ruslan
реляционность во мне требует отдельную коллекцию 🙂
yopp
А сколько устройств в группе?
Ruslan
От одного до 10000
Ilya
Есть 2 разные модели, которые лежат в одной коллекции. Как получить всю коллекцию? Обычно я получаю [modelName].find(), но тут так не получится.
Ruslan
почитать бы про проектирование для монго
Alexander
я бы тоже почитал
Alexander
а то пока больше по интуиции
Denis
Denis
Мне кажется такое же озарение наступает когда начинаешь жить с микрлсервисами глубиной вызовов более 1
Ruslan
это я понимаю, просто не хочется бежать за кем-то по граблям
Alex
что вы таки понимаете под термином “глубина вызовов” ???
Ruslan
ну когда сервис запрашивает другой сервис на предмет дополнительной инфы
Alex
и так миллион раз ?
Alex
или миллион микросервисов 7
Ruslan
как сделаешь
Alex
ну я себе слабо представляю миллион микросервисов
Alex
даже у гугла
Alex
не говоря про более рядовые компании
Ruslan
зайди в акронис, в разработку 🙂
Alex
и что там ? :)
Ruslan
там узнаешь много нового
Alex
как то такого желания раньше не возникало =)
Ilya
Не работает, фиксабельно?
Ilya
Как получить записи из базы данных за определённый период?
Pasha
ты имеешь в виду, что у тебя есть поле с датой и нужно отфильтровать документы по этому полю?
Ilya
Pasha
$gte и $lt
Ilya
Покажешь на примере?
Pasha
items.find({
created_at: {
$gte: ISODate("2010-04-29T00:00:00.000Z"),
$lt: ISODate("2010-05-01T00:00:00.000Z")
}
})
Pasha
=)
Pasha
https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb
Ilya
Спасибо
Ilya
ISODate is not defined
Pasha
ты на ноде чтоль пишешь?
Ilya
Ну да
Pasha
new Date('2014-01-22T14:56:59.301Z')
Ilya
Окей
Ilya
Спасибо, заработало
Alexey
привет все. а расскажите про oplog. размера по дефолту 50gb уже мало и время между репликами хотелось бы увеличить. Какие плюсы минусы, подводные камни? oplog Живет в оперативной памяти? будет вытеснять индексы? или можно увеличивать сколько влезет?
yopp
Это capped коллекция, не помню чтоб у неё принципиально отличалось поведение от других.
Если нужно увеличить — увеличивай. Можно попробовать увеличить только на отдельной скрытой ноде, но я не помню могут ли остальные участники читать оплог со скрытых нод. Но это просто проверятся на тестовом столе.