Air
или так { $match: { $text: { $search: name }, "category.name": cat }},
Сергей
Звучит интересно, а какая разница в сравнении с обыкновенным драйвером для любого языка, вроде rust или node ?
Веб-сервис будет на дотнете, но в моей задаче язык действительно не имеет значения. Пока хочу просто понять, рабочая ли это в принципе связка odbc-bi_conector-mongo. Или, может быть, так никто не делает, или работает только на определенных версиях и тому подобное.
Vladyslav
О, спасибо! А что за драйвер?
https://www.nuget.org/packages/MongoDB.Driver
Сергей
https://www.nuget.org/packages/MongoDB.Driver
А это ок, если веб-сервис запросы на sql слать будет? И этот драйвер надо в код встраивать, или можно просто поставить?
Vladyslav
А это ок, если веб-сервис запросы на sql слать будет? И этот драйвер надо в код встраивать, или можно просто поставить?
дотнетчикам дадите, они сами все будут знать что делать. А как вы собрались sql запросы слать в nosql базу?
Сергей
дотнетчикам дадите, они сами все будут знать что делать. А как вы собрались sql запросы слать в nosql базу?
Да вот не знаю. Я думал, что эта исходная схема с bi-connector как-то конвертирует sql в nosql. Такое в принципе бывает?
Vladyslav
Да вот не знаю. Я думал, что эта исходная схема с bi-connector как-то конвертирует sql в nosql. Такое в принципе бывает?
сомневаюсь... но тут вопрос логический - зачем вам монго или зачем вам sql в таком случае? вопросы взаимоисключающие себя
Сергей
сомневаюсь... но тут вопрос логический - зачем вам монго или зачем вам sql в таком случае? вопросы взаимоисключающие себя
Веб-сервис это BI система. Там строишь графики, и она генерит sql. С SQLными базами понятно. Подключил одбц и всё, в принципе, работает. Теперь у заказчика - монга, и задача пришла в формате: научись подключаться к монге. Но и сам задаюсь вопросом, что если и подключусь, то что будет дальше?
Сергей
Для монго лучше уж монго квери и писать, а то вылезет куча проблем и подводных камней... Я глянул этот bi, там пишет нужна какая-то enterprise подписка к нему, вы ее будете оформлять?
Вряд ли будем оформлять. Сколько стоит - непонятно из сайта https://www.mongodb.com/products/bi-connector . Да и вряд ли продадут сейчас. Но, похоже, какой-то SQL она всё-таки поддерживает. За это, видимо, деньги и берут.
a
Есть кластер из трех серверов. Один сервер primary. Если он упадет, то другой станет автоматом primary. Вопрос - а как приложение узнает к какому из них он должен подключаться? Ведь приложение должно подключатся к primary. А primary может менятся.
Easy Rider
Как нахрен убрать оплог вообще, чтобы он не рос
Easy Rider
Если реплика мне нужна тупо чтобы работали транзакции, а там еще оплог этот
Easy Rider
засирает место на диске
Easy Rider
может быть реплика без оплога?
Andrey K.
Обычно эту работу берет на себя mongoDB драйвер, например в mongoose
вы можете поднять шардированный кластер, где будет отдельно служба mongos, который и будет роутить запросы. Приложение будет работать с монгосом, а какой там актуальный праймари ему и знать не надо
Андрей
засирает место на диске
Это сколько? ТБ был задан при деплое или дефолт при каком-нибудь 50ТБ диске? 🤨
Easy Rider
https://t.me/gpt3_unlim_chatbot
Easy Rider
мне тут подкинули, эта херня все знает
Easy Rider
Это сколько? ТБ был задан при деплое или дефолт при каком-нибудь 50ТБ диске? 🤨
диск 150, просто я хз, до каких пор оплог может расти, может он вообще будет бесконечно
Slach
всем привет подскажите пожалуйста mongo 4.4 как через bash запустить простую последовательность команд не создавая .js файлы? use clickhouse_database db.clickhouse_collection.find() пробовал так echo "use clickhouse_database; db.clickhouse_collection.find()" | mongo --username mongo_user --password mongo_password --quiet Error: [clickhouse_database; db.clickhouse_collection.find()] is not a valid database name : Mongo.prototype.getDB@src/mongo/shell/mongo.js:63:12 getDatabase@src/mongo/shell/session.js:922:28 DB.prototype.getSiblingDB@src/mongo/shell/db.js:22:12 shellHelper.use@src/mongo/shell/utils.js:832:10 shellHelper@src/mongo/shell/utils.js:819:15 @(shellhelp2):1:1 и вот так mongo --username mongo_user --password mongo_password --quiet --eval "use clickhouse_database; db.clickhouse_collection.find()" uncaught exception: SyntaxError: unexpected token: identifier : @(shell eval):1:4 exiting with code -4 и даже так echo "use clickhouse_database" | mongo --username mongo_user --password mongo_password --eval "db.clickhouse_collection.find()" MongoDB shell version v4.4.22 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("bc1d9c8f-1d7a-4b16-95cd-cbbe8f801bb5") } MongoDB server version: 4.4.22 не вывело ничего если просто запустить интерактивно то все ок root@2ba0ca2e222d:/# mongo --username mongo_user --password mongo_password MongoDB shell version v4.4.22 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("00d6c93c-d78d-41ec-8416-4f024fb123b5") } MongoDB server version: 4.4.22 --- The server generated these startup warnings when booting: 2023-06-29T13:10:14.936+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem 2023-06-29T13:10:16.052+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' --- > use clickhouse_database switched to db clickhouse_database > db.clickhouse_collection.find() { "_id" : ObjectId("649d82c5671c62720cc9a3e3"), "dt" : "2023-06-29 13:10:29" } как побороть?
Slach
всем привет подскажите пожалуйста mongo 4.4 как через bash запустить простую последовательность команд не создавая .js файлы? use clickhouse_database db.clickhouse_collection.find() пробовал так echo "use clickhouse_database; db.clickhouse_collection.find()" | mongo --username mongo_user --password mongo_password --quiet Error: [clickhouse_database; db.clickhouse_collection.find()] is not a valid database name : Mongo.prototype.getDB@src/mongo/shell/mongo.js:63:12 getDatabase@src/mongo/shell/session.js:922:28 DB.prototype.getSiblingDB@src/mongo/shell/db.js:22:12 shellHelper.use@src/mongo/shell/utils.js:832:10 shellHelper@src/mongo/shell/utils.js:819:15 @(shellhelp2):1:1 и вот так mongo --username mongo_user --password mongo_password --quiet --eval "use clickhouse_database; db.clickhouse_collection.find()" uncaught exception: SyntaxError: unexpected token: identifier : @(shell eval):1:4 exiting with code -4 и даже так echo "use clickhouse_database" | mongo --username mongo_user --password mongo_password --eval "db.clickhouse_collection.find()" MongoDB shell version v4.4.22 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("bc1d9c8f-1d7a-4b16-95cd-cbbe8f801bb5") } MongoDB server version: 4.4.22 не вывело ничего если просто запустить интерактивно то все ок root@2ba0ca2e222d:/# mongo --username mongo_user --password mongo_password MongoDB shell version v4.4.22 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("00d6c93c-d78d-41ec-8416-4f024fb123b5") } MongoDB server version: 4.4.22 --- The server generated these startup warnings when booting: 2023-06-29T13:10:14.936+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem 2023-06-29T13:10:16.052+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never' --- > use clickhouse_database switched to db clickhouse_database > db.clickhouse_collection.find() { "_id" : ObjectId("649d82c5671c62720cc9a3e3"), "dt" : "2023-06-29 13:10:29" } как побороть?
printf "use clickhouse_database\ndb.clickhouse_collection.find()" | mongo --username mongo_user --password mongo_password --quiet победил
Андрей
Андрей
help ведь придуман у всего в линуксе 😉
Slach
help ведь придуман у всего в линуксе 😉
mongo --help | grep database к сожалению мне этого не показал
Андрей
этот бинарник давно депрекейтнули, но и в нём есть помоему опция авторизации в конкретную базу
Андрей
пожалуйста, отрыл у себя старый сервер 😏
Mashxurbek
засирает место на диске
Можно задать лимит на сайт оплога
Mashxurbek
сайт?
Сайз
Mashxurbek
Место в памяти
Easy Rider
а, да я уже сделал, спасибо
Easy Rider
sudo systemctl stop mongod sudo nano /etc/mongod.conf replication: replSetName: "your_replset_name" oplogSizeMB: 1024 sudo systemctl start mongod
Mashxurbek
Круто
vivi
всем привет, помогите с запросом, пожалуйста есть функция, например getUsers, туда пробрасываются разные параметры, но они необязательные например так (nodejs) export async getUsers (data: { isTest?: boolean uids?: UUID[] type?: string } внутри неё пишется запрос в монгу, но как сформулировать его так, чтоб если эти поля были undefined, то они не учитывались? db.users.find({ name: "John", isTest: { $eq: data.isTest } }) думала, что так это может работать таким образом, что если data.isTest undefined, то просто не будет учитываться (сказал чатгпт). но потом выяснилось, что это так не работает я ничего не могу родить кроме конструкций вроде { isTest: data.isTest !== undefined ? { $eq: data.isTest } : { $exists: true } }, но это дичь - так расписывать каждый из парамсов есть другой вариант? помогите, пожалуйста
vivi
ладно, спасибо < 3
Nick
ну, нужно юзеров отфильтровать
вы уверены что в случае отсутствия поля нужно проверять на $exists: true?
Nick
Нет, но я не знаю, что писать во второй части
не надо ничего писать, делаете массив для $and, в него добавляете условие если соответствующий параметр добавлен
Nick
Нет, но я не знаю, что писать во второй части
получается чтото вроде queryArr:[] if(data.isTest){ queryArr.push({isTest: data.isTest }) } и потом find({$and: queryArr})
Easy Rider
Есть какой-то способ получить в mongodb параметр, означающий степень загрузки?
Easy Rider
ну типа как степень загрузки процессора
Easy Rider
от 0% до 100%
Easy Rider
к примеру, при 100% будет считаться что база перегружена запросами и не успевает обрабатывать
Easy Rider
мне это надо чтоб нормальную систему защиты от ддоса сделать на уровне приложения
Easy Rider
то есть как бы если 100%, то те ip которые больше всего времени отъедают запросами, начинают отсекаться
Nikita
а тут есть кто воркал с монго и вебсокетами на тсе? интересует мнение о подходе
Easy Rider
че такое тсе
Nick
а тут есть кто воркал с монго и вебсокетами на тсе? интересует мнение о подходе
а как связаны монга и вебсокеты? совершенно непересекающиеся вещи
Nikita
я имею ввиду просто сокеты и монга
Nikita
типа ща
Nikita
я подписываюсь на нотификейшенсы которые у меня прилетают в бдшку, лучше способа чем watch я не нашел в монге
Nikita
Nikita
получилась такая штука, вроде бы все норм и на дисконекте закрываю ченжстримы чтобы утечек не было, но не уверен, что такое можно использовать в проде
wisp
доброго вечера. прошу, не бейте тапками. в ноде работаю, но запарился с одним моментом в json. можете подсказать, как правильнее будет отправить в запросе neededBlock? или можно даже напрямую, без создания сторонней переменной? const neededBlock = 'items.'+id+'.blocks'; db.users.updateOne({ "id": senderId }, { $inc: { neededBlock: parseInt(blocks[id]) } } );
Nikita
так а в чем вопрос тогда если работает?
в том что на сколько это нормально написано при скейле
Nick
Есть какой-то способ получить в mongodb параметр, означающий степень загрузки?
в db.serverStatus() чистого проца не не нашел, но есть и другие метрики которые можно использовать. Но это все неважно, т.к. если ловить только загрузку по процу не увидишь что сети не хватает или диски перегружены. Если хочется какогото понимания перегруженности, то ставим рядом полноценный мониторинг, в нем набираем историю "нормальной" работы. Потом используем для выявления перегруза, а дальше по событию чтото делать в прикладе
Nick
это уже гемор
эм, хозяин барин, по мне так и сама идея бредовая и будет отстреливать коннекты в случайном режиме - вот тогда будет гемор в выяснении причин и отладке
Easy Rider
базу грузануть любой школьник может на сайте
Nick
в том что на сколько это нормально написано при скейле
проведите нагрузочное и узнаете как для вашего железа и окружения нормально это или надо переработать. В общем случае ченжстрим вычитать не ахти какая большая задача, а вот что с событием делать это уже чисто ваше дело и зависит от решаемых задач
Easy Rider
ну например школьник берет 1000 бесплатных проксей и пишет многопоточный ддос кидая тяжелые запросы
Easy Rider
конечно он может для каждого прокси сделать даже меньший лимит чем нормального юзера
Easy Rider
то есть получается, задача решаема только анализом поведения
Nick
а как сделать нормальную систему защиты от ддоса?
для начала расписать виды ддосов от которых хочется защититься, так сказать вектора атак самому проработать. И потом планомерно искать решения на каждый вектор или группу векторов. Хотя самое главное - а с чего вы решили что вас ктото будет ддосить, и надо ли тратить время и силы на решение пробелмы которой скорее всего не будет. Или не дешевле ли просто переждать атаку как есть
Easy Rider
хотя бы что-то было чтобы, чтоб сайт не лег
Easy Rider
потому что, ну например в рекламу я вложу миллион рублей, и все коту под хвост будет, уж лучше немного перебдеть
Nick
если есть простой способ, почему бы не внедрить....
простой способ - купить защиту, все остальное не простое и требует знаний и большой проработки