Anatoly
$switch
Спасибо, оно
Easy Rider
Есть такой жизненный сценарий. Вот я например запускаю свой сайт, ну там бекенд в виде сервиса на линуксе (который общается в свою очередь с сервисом монги на том же сервере). И предположим, мне надо перезалить бекенд, я останавливаю сервис. Но что произойдет с транзакциями? они отменятся все получается?... бля, написал, и понял что так и будет
Easy Rider
то есть никаких проблем как бы нет, просто все критическое надо обернуть в транзакции
Easy Rider
Научить бэкенд перехватывать сигналы и завершать все операции, graceful shutdown
а смысл.... ну завершат они операции, а там еще сотня юзеров новые операции породят.
Easy Rider
один хрен, начиная с какого-то момента сервер будет отключен
RapidCodeLab
Новые перестать принимать, очевидно же
Easy Rider
вопрос был как бы в том, что сделать для того чтобы база не перешла в несогласованное состояние. все же в этом отношении реляционная модель удачнее
RapidCodeLab
Хозяин барин
Easy Rider
но тут я просто понял, что для того чтобы она не перешла в несогласованное состояние, как раз транзакции и предназначены
Easy Rider
у меня уже 26 тысяч строк кода (это по мнению анализатора студии), поздно рыпаться, придется жить с монгой какое-то время
Easy Rider
но если бы я знал заранее какие мозговые штурмы придется устраивать чтобы внимательно вглядываться и думать как сохранить согласованность коллекций, я бы всерьез подумал о том чтобы подучить SQL
Alexandrr
вопрос был как бы в том, что сделать для того чтобы база не перешла в несогласованное состояние. все же в этом отношении реляционная модель удачнее
что за ересь я тут читаю? просто, берёшь и гасишь аппу свою, фронт отрабатывает по 500, а ты занимаешься своими делами в чём проблема не пойму?
Easy Rider
что за ересь я тут читаю? просто, берёшь и гасишь аппу свою, фронт отрабатывает по 500, а ты занимаешься своими делами в чём проблема не пойму?
ну смотри, например просто даже чат. человек блокирует другого юзера, эта операция затрагивает несколько коллекций, если часть изменений не будет сохранена, база придет в несогласованное состояние
Easy Rider
но транзакции решают эту проблему
Easy Rider
Alexandrr
че за триггеры?
https://www.mongodb.com/docs/atlas/app-services/triggers/database-triggers/
Easy Rider
у меня не такая
Easy Rider
я занимаюсь сразу всем - бекендом, фронтом, дизайном, юридическими вопросами,разработкой рекламной концепции и тд. тупо нет времени изучать что-то еще, увыф
Easy Rider
что такое pg
Easy Rider
что мда....
Easy Rider
в монго тоже есть транзакции
Easy Rider
монго + транзакции не катит?
Easy Rider
а какая принципиальная разница транзакций в монго и в pg? в монго они до сих пор не полноценные разве?
sp
Кто нибудь может помочь?)
sp
Как сделать так чтобы операции на 76 и 78 либо обе выполнились успешно, либо обе откатились в состояние до манипуляций? тобишь транзакцию не могу в монгузе
sp
В операции надо передавать session, повнимательнее посмотрите примеры в доках
На самом деле я пробовал так делать. В операциях первый параметр передается массив, второй объект {session}. Почему то не работало. Пробовал делать по доке. Позже скину конкретные примеры моего неработающего кода еще
Easy Rider
даже если сервер монги один
Easy Rider
я хз, может где-нибудь в облаках она и так есть
Easy Rider
но на VDS мне пришлось сделать
Nick
точнее сказать для транзакций нужен oplog, а его включение сейчас делается через включение режима репликации
Makar
Всем привет. Как мне хранить большие данные?
Aleksandr
Всем привет. Как мне хранить большие данные?
https://metanit.com/sql/postgresql/2.3.php#:~:text=text%3A%20%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9%20%D0%B4%D0%BB%D0%B8%D0%BD%D1%8B.
Aleksandr
text: представляет текст произвольной длины.
Makar
Всем спасибо, извиняюсь за такой глупый вопрос)
HR Center
@LSNV_Loki ответьте в лс
wisp
Вопрос про библиотеку MongoDB в NodeJS. Использую официальную библиотеку от монго. Немного барахлит обычный .find(), ну или я чего-то не понимаю. Дело в том, что при выборе некоторых необходимых значений из find выводится вообще всё, а не только то, что меня интересует. const theReachest = await collections.find({}, { "balance": 1, "id": 1 }).sort({ "balance": -1 }).toArray(); Код, который должен возвращать только объект (массив) самых богатых людей. Можно ли как-то сделать так, чтобы отправлялись только нужные мне данные?
yopp
Вероятно вам нужен limit чтоб ограничить число возвращаемых документов https://www.mongodb.com/docs/drivers/node/current/fundamentals/crud/read-operations/limit/
wisp
мне нужны все документы как раз, нужно ограничить остальные выводимые данные вместе с balance и id
wisp
$projection
точно, спасибо
-
точно, спасибо
const theReachest = await collection.find({}, { projection: { balance: 1, id: 1 } }).sort({ balance: -1 }).toArray()
Tentura
Добрый вечер, подскажите пожалуйста как можно профилировать возникновение page faults? Есть несколько кластеров объем от 500 гб до 1,5ТБ, от 30 до 50 Гб RAM. Судя по графикам мониторинга на нодах нет проблем с RAM, но page faults все равно возникают.
Makar
Это можно как-то фиксануть?
Tentura
разбором логов, очевидно же
логично) но как среди портянки логов найти из-за чего эти page faults возникают?
Makar
Да
Makar
Есть какая-то дока?
Alexandrr
Tentura
для разбора логов существуют не один инструмент
вопрос не в инструментах, где эти логи агггрегировать, а в том по каким критериям определять что проблема относится к page faulst
Tentura
page faults это ошибка чего? фронта или бэка?
Это ошибка монги, которая связана с работой os
Alexandrr
в чём вопрос тогда?
-
в чём вопрос тогда?
Он хочет понять, из-за чего появляется page faults т.к. по его словам оперативной памяти хватает
-
И как это исправить
Alexandrr
Он хочет понять, из-за чего появляется page faults т.к. по его словам оперативной памяти хватает
ну я явно не гадалка, они дальше по улице. а очевидные вещи уже написал: - разбор логов - поиск в интернетах - анализ полученной информации и выводы
Андрей
Всем привет! подскажите плз, можно ли в агрегации в lookup взять определнный процент записей? допустим у меня 100 пользователей и я хочу взять только 10% от них
Андрей
да, математическую операцию через let напиши
не совсем понял, как это сделать где мне получить кол-во и как сравнивать
Alexandrr
не совсем понял, как это сделать где мне получить кол-во и как сравнивать
результат лукапа нужно вычислять, в самом лукапе только можешь создать специальную переменную для работы с ней далее
Thunder
Привет чат. Как сделать в mongosh что то подо бное, в документах есть Language: 'uk-UA', надо обновить коллекцию и установить первую часть от сплита значения текущего документа , что то типа этого updateMany({query}, {$set: {F: spliited[0]}})
Thunder
апдейт с агргеацией и там задействовать $split
db.subscribers.updateMany({LanguageFirst: { $exists: true}}, [{$set:{LanguageFirst:{$split: ["$Language", "-"]}}}]) пишется весь сплиттед массив, не могу догнать как взять только первый элемент)
Thunder
обернуть в $arrayElemAt
красота, спасибо)
Ян 🌙
Всем привет, помогите разобраться почему данные не обновляются... Есть документ примерно такой id: 1 resources [{id:1, number: 1}, {id: 1, type: 'inc', number: 1}, {id:2, type: 'inc', number: 1}] Вот, и такой запрос updateOne({id: 1, 'resources.type': 'inc', 'resources.id': 1}, {$inc: { 'resources.$.number':1 }})
Ян 🌙
updateOne({id: 1, 'resources.id': 1}, {$inc: { 'resources.$.number':1 }}) Если вот так, то результатом будет id: 1 resources [{id:1, number: 2}, {id: 1, type: 'inc', number: 1}, {id:2, type: 'inc', number: 1}] А вот как добраться до того объекта с типом, не понятно
Ян 🌙
acknowledged: true, modifiedCount: 0, upsertedId: null, upsertedCount: 0, matchedCount: 0
Ян 🌙
updateOne({id: 1, 'resources.id': 2, 'resources.type': 'inc', 'resources.number': {$exists: true}}, {$inc: { 'resources.$.number':1 }}) Почему-то обновляет первый объект.. как оно вообще работает..