✙ Nikita
?
Александр
https://tech.geekjob.ru/fun-mongo-1-objectid/
тут пишут что это просто функция от времени
✙ Nikita
yopp
Mika
О каком шифровании речь?
Я про функцию Dara at rest encryption. Там указывается внешний ключ (aws, azure, gcr), которым дополнительно шифруются данные. Этот ключ действует на уровне проекта. Но мне нужно, чтобы это работало на уровне кластера или бд. Чтобы один пользователь не смог своим ключом расшифровать данные другого пользователя этого же проекта.
yopp
yopp
yopp
Data at rest не предполагает управления ключами на уровне базы данных, только на уровне физического хранилища
Mika
yopp
Это фича драйвера, по-моему с 4.0
yopp
https://docs.mongodb.com/manual/core/security-client-side-encryption/
Mika
Спасибо!
Anton
А может ли возникуть ситуация совпадения _id двух коллекций одной БД
Kenan
Anton
Насколько я знаю _id это хэш различных параметров, поэтому если в этих параметрах есть имя коллекции то будут всегда разные
Kenan
Kenan
Тогда сорян за не правильную информацию
Daniil
Чисто теоретически может пересечься между двумя разными коллекциями
Daniil
Но вероятность не очень большая
Anton
Наверное вероятность равна вероятности возникновения коллизии
Максим
Ffff
стоит ли хранить сами изображения в mongo ? или лучше хранить ссылки на изображения?
Ffff
какие тут бестпрактис?
Rostyslav Pidburachynskyi 🇺🇦🍉
Ffff
Ffff
но относительные ссылки кажутся лютым костылём
Ffff
да, вариант с размещением файлов в cdn кажется самым привлекательным
Anton
Ffff
Anton
Ffff
✙ Nikita
+
✙ Nikita
если будешь мигрировать на cdn - просто скриптом проходишся по ссылкам, и меняешь их
Anton
и отдаватся с помощью nginx?
Но в любом случае у тебя будет ссылка. У меня ссылка ведет на эндпоинт который вытаскивает картинку из монги (гридфс чанков) и выдает на выходе байты картинки
Ffff
Ffff
монга не отвалится?
Anton
Монга масштабируема)
Не отвалится
✙ Nikita
✙ Nikita
типа поэтому отдачу статики ставят на nginx
Ffff
Anton
✙ Nikita
yopp
yopp
Почти все драйвера генерируют на клиенте
✙ Nikita
Понял, спасибо
Ilya
подскажите по такой ситуации делается запрос на поиск докуметов с limit =10 и при skip = 10, последний документ в этой выборке равен первому документу при skip=20, результат упорядочен по полю типа Date
Ilya
если поле по которому идет сортировка имеет одинкавую дату - то как монга в этом случае их сортирует? не должен же этот порядок меняться при skip?
Daniil
Александр
Александр
Александр
а так подобный эндпоинт не сложно пишется
Александр
кстати, если у меня файлы до 16МБ, стоит хранить в обычной коллекции, или всё же лучше в GridFS?
✙ Nikita
✙ Nikita
думаю лучше сразу в gridfs
✙ Nikita
требования к размеру файлу поменяются и все
✙ Nikita
будешь сидеть переносить все в gridfs
Dr
Парни, а как можно "разъединить" кластер на два независимых?
Dr
Просто сделать rs.remove по каждой из репликасетов, включая конфиг-сервера?
Artem
const model = await Model.findOne({})
model.x = 1
console.log(model) // {x: 1, _id: a}
await model.save()
console.log(await Model.findOne({})) // {_id : a}
Artem
Почему .save() не работает?
yopp
Dr
да
yopp
Вы хотите из одного шаржированного кластера сделать два шардированных кластера или хотите выделить один из шардов в репликасет?
Dr
Сделать два шардированных кластера.
Идея простая - нам нужно сделать "переезд" кластера из одного расположения в другое. Для этого мы сделали реплики в новом расположении, переключили primary, указали приложению адреса новых конфиг-серверов.
Теперь идея в том, чтобы "разорвать" коннект между кластерами
Dr
При этом хотелось бы, чтобы приложение не закешировало старые конфиг-сервера и шарды и не продолжало пытаться законнектится к ним
yopp
Самый простой способ, это добавить новый регион в шард, зонировать его и настроить балансировку таким образом чтоб все существующие документы начали миграцию в новую зону. Придётся шардировать все коллекции, чтоб потом шард из новой зоны пометить как primary. Дождаться окончания миграции данных в новый регион и вывести старый шард из кластера.
Конфиг сервера перенести похожим образом, только через увеличение числа реплик в новом регионе. В новом регионе вам временно потребуется на две реплики больше чем в старом. После завершения initial sync, старым нодам назначить нулевой приоритет. Сделать stepDown и убедится что новый праймари в новом регионе.
А у монгосов можете просто поменять записи в днсах на адреса монгосов в новом регионе м дождаться когда апдейты днс записей доедут до клиентов
Dr
А зачем зонироваться, если обычная репликация всё и так сделает?
Dr
То есть первую часть, если убрать зонирование, мы уже и сделали
Dr
Клиенты наши, на них поменяли адреса на новый кластер
Dr
Теперь вопрос просто в том, как быстро монго драйвер, в котором есть информация от нового кластера о всех его нодах - как старых так и новых, "позабудет" старые после rs.remove
Максим
Daniil
Всем привет ✋🏻