Andrey
программист на питоне
Может он просто джанго-программист, поэтому?
Qwerty
Может он просто джанго-программист, поэтому?
Звучит как определение диагноза, почему?
Andrey
Звучит как определение диагноза, почему?
Наверно, потому что «программисту» всё равно какая база данных, главное чтоб отвечала решению задачи максимально оптимальным способом. Джанго программисты, это те кто кроме джанго - не знают, остальное +- минимум уровнь джуна в питоне, или у меня такая выборка встреч с кандидатами.
Сергей
Может он просто джанго-программист, поэтому?
Да не понятно. Подробнее узнаю. Он из финансистов стал разрабом)
Qwerty
Наверно, потому что «программисту» всё равно какая база данных, главное чтоб отвечала решению задачи максимально оптимальным способом. Джанго программисты, это те кто кроме джанго - не знают, остальное +- минимум уровнь джуна в питоне, или у меня такая выборка встреч с кандидатами.
Честно, по мне, притянуто за уши. Просто через дверь с надписью Django много кто пытается «войти в айти», как впрочем и через Python в основном. Потому и может складываться такое впечатление. А я еще слышал, что программисты на питоне и не программисты вовсе, так что ж теперь?)
Andrey
Честно, по мне, притянуто за уши. Просто через дверь с надписью Django много кто пытается «войти в айти», как впрочем и через Python в основном. Потому и может складываться такое впечатление. А я еще слышал, что программисты на питоне и не программисты вовсе, так что ж теперь?)
Чаще встречаются разрабы со стеком: flask, django, fastapi + postgresql + sql alchemy + redis(из-за celery) - и это базовый суповой набор до мидла (ml и "датасаентологи" не в счет). Причем, в моей выборке, из стека выше - именно как совокупность, поэтому, что-то за рамках этого - очень так себе.
Qwerty
Мне правда трудно представить программиста умеющего в один фрейм, учитывая то, что это, в большинстве случаев, всего обертка за бизнес-логикой. Но, в любом случае, я считаю, что быть «плохим программистом» вовсе не вытекает из того, что он использует ту или иную технология, думаю проблема в самом человеке. ИМХО
Andrey
Мне правда трудно представить программиста умеющего в один фрейм, учитывая то, что это, в большинстве случаев, всего обертка за бизнес-логикой. Но, в любом случае, я считаю, что быть «плохим программистом» вовсе не вытекает из того, что он использует ту или иную технология, думаю проблема в самом человеке. ИМХО
такого же мнения, для решения поставленной задачи - надо выбирать - то что будет максимально оптимально по кучи метрик. Лично мне очень нравится mongodb, и очень не нравится postgresql. Ну это не повод везде тащить одно, или отказываться, когда удобней, от иного.
Denis
Хочу мониторить managed mongodb на яндекс облаке через mongodb-exporter от percona Почему то нет метрик от serverStatus (количество подключений и тд) и сыпятся такие ошибки time="2024-04-18T11:24:25Z" level=error msg="Failed to get $dbstats for database local: (Unauthorized) not authorized on local to execute command { dbStats: 1, scale: 1, lsid: { id: UUID(\"111") }, $clusterTime: { clusterTime: Timestamp(1713439465, 55), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"local\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot run getDiagnosticData: (Unauthorized) not authorized on admin to execute command { getDiagnosticData: \"1\", lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 76), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"admin\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot run getDiagnosticData: response is empty" time="2024-04-18T11:24:35Z" level=error msg="cannot decode getDiagnosticData: <nil> for data field: unexpected data type" time="2024-04-18T11:24:35Z" level=error msg="cannot decode getCmdLineOtpions: cannot execute getCmdLineOpts command: (Unauthorized) not authorized on admin to execute command { getCmdLineOpts: \"1\", lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 76), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"admin\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot retrieve engine type: Engine is unavailable" time="2024-04-18T11:24:35Z" level=error msg="Failed to get $dbstats for database local: (Unauthorized) not authorized on local to execute command { dbStats: 1, scale: 1, lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 79), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"local\", $readPreference: { mode: \"primaryPreferred\" } }" У пользователя есть права на чтение ко всем бд, и mdbMonitor на admin Запускаю через compose services: mongodb-exporter: image: percona/mongodb_exporter:0.40 container_name: mongodb-exporter ports: - 9216:9216 - 17001:17001 command: --collect-all --web.listen-address=:9216 --mongodb.uri="mongodb://user:pass@fqdn:27018/?tls=true&tlsCAFile=/root/.mongodb/root.crt" volumes: - ./.mongodb:/root/.mongodb
Хикматжон
Хочу мониторить managed mongodb на яндекс облаке через mongodb-exporter от percona Почему то нет метрик от serverStatus (количество подключений и тд) и сыпятся такие ошибки time="2024-04-18T11:24:25Z" level=error msg="Failed to get $dbstats for database local: (Unauthorized) not authorized on local to execute command { dbStats: 1, scale: 1, lsid: { id: UUID(\"111") }, $clusterTime: { clusterTime: Timestamp(1713439465, 55), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"local\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot run getDiagnosticData: (Unauthorized) not authorized on admin to execute command { getDiagnosticData: \"1\", lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 76), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"admin\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot run getDiagnosticData: response is empty" time="2024-04-18T11:24:35Z" level=error msg="cannot decode getDiagnosticData: <nil> for data field: unexpected data type" time="2024-04-18T11:24:35Z" level=error msg="cannot decode getCmdLineOtpions: cannot execute getCmdLineOpts command: (Unauthorized) not authorized on admin to execute command { getCmdLineOpts: \"1\", lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 76), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"admin\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot retrieve engine type: Engine is unavailable" time="2024-04-18T11:24:35Z" level=error msg="Failed to get $dbstats for database local: (Unauthorized) not authorized on local to execute command { dbStats: 1, scale: 1, lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 79), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"local\", $readPreference: { mode: \"primaryPreferred\" } }" У пользователя есть права на чтение ко всем бд, и mdbMonitor на admin Запускаю через compose services: mongodb-exporter: image: percona/mongodb_exporter:0.40 container_name: mongodb-exporter ports: - 9216:9216 - 17001:17001 command: --collect-all --web.listen-address=:9216 --mongodb.uri="mongodb://user:pass@fqdn:27018/?tls=true&tlsCAFile=/root/.mongodb/root.crt" volumes: - ./.mongodb:/root/.mongodb
А вы давали роль clusterMonitor для пользователя?
Denis
А вы давали роль clusterMonitor для пользователя?
У яндекса аналог этой роли mdbMonitor Но в первую очередь интересует, почему нету метрик с serverStatus (кол-во коннектов и тд)
Хикматжон
У яндекса аналог этой роли mdbMonitor Но в первую очередь интересует, почему нету метрик с serverStatus (кол-во коннектов и тд)
в мануале есть доступ до serverStatus но для роли clusterMonitor. Может в роле яндекса такого нету?!
Хикматжон
У яндекса аналог этой роли mdbMonitor Но в первую очередь интересует, почему нету метрик с serverStatus (кол-во коннектов и тд)
можете посмотреть все привилегии через команду: db.getRole( "username", { showPrivileges: true } )
Denis
в мануале есть доступ до serverStatus но для роли clusterMonitor. Может в роле яндекса такого нету?!
Ну я заходил руками под этим пользователем, db.serverStatus() выполняет
Нуриддин
Хочу мониторить managed mongodb на яндекс облаке через mongodb-exporter от percona Почему то нет метрик от serverStatus (количество подключений и тд) и сыпятся такие ошибки time="2024-04-18T11:24:25Z" level=error msg="Failed to get $dbstats for database local: (Unauthorized) not authorized on local to execute command { dbStats: 1, scale: 1, lsid: { id: UUID(\"111") }, $clusterTime: { clusterTime: Timestamp(1713439465, 55), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"local\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot run getDiagnosticData: (Unauthorized) not authorized on admin to execute command { getDiagnosticData: \"1\", lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 76), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"admin\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot run getDiagnosticData: response is empty" time="2024-04-18T11:24:35Z" level=error msg="cannot decode getDiagnosticData: <nil> for data field: unexpected data type" time="2024-04-18T11:24:35Z" level=error msg="cannot decode getCmdLineOtpions: cannot execute getCmdLineOpts command: (Unauthorized) not authorized on admin to execute command { getCmdLineOpts: \"1\", lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 76), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"admin\", $readPreference: { mode: \"primaryPreferred\" } }" time="2024-04-18T11:24:35Z" level=error msg="cannot retrieve engine type: Engine is unavailable" time="2024-04-18T11:24:35Z" level=error msg="Failed to get $dbstats for database local: (Unauthorized) not authorized on local to execute command { dbStats: 1, scale: 1, lsid: { id: UUID(\"111\") }, $clusterTime: { clusterTime: Timestamp(1713439475, 79), signature: { hash: BinData(0, 111), keyId: 111 } }, $db: \"local\", $readPreference: { mode: \"primaryPreferred\" } }" У пользователя есть права на чтение ко всем бд, и mdbMonitor на admin Запускаю через compose services: mongodb-exporter: image: percona/mongodb_exporter:0.40 container_name: mongodb-exporter ports: - 9216:9216 - 17001:17001 command: --collect-all --web.listen-address=:9216 --mongodb.uri="mongodb://user:pass@fqdn:27018/?tls=true&tlsCAFile=/root/.mongodb/root.crt" volumes: - ./.mongodb:/root/.mongodb
По ошибкам кажется вы не выдали роль на чтение баз
Нуриддин
Попробуйте для роли кластер монитор выдать привелегии на чтение admin и local
Нуриддин
Ну я заходил руками под этим пользователем, db.serverStatus() выполняет
Она будет выполняться, но экспортер не берёт конкретно от туда данные для метрик
Нуриддин
Кстати тут статья по Яндекс мониторингу монгодб. Вы пробовали её
Нуриддин
@dendw
Denis
Кстати тут статья по Яндекс мониторингу монгодб. Вы пробовали её
Ну тут про другое У меня есть система мониторинга на основе victoria-metrics, хотелось бы и могу прикрутить к ней Базовые показателя вроде количества подключений, размер и тд
Denis
Она будет выполняться, но экспортер не берёт конкретно от туда данные для метрик
Ну вот serverStatus отдаёт инфу основную про подключения например, по логике exporter должен брать оттуда, название метрик, которые есть (mongo_ss_...) говорит о том, говорят о том же И в репе указано, что выдаёт от serverStatus. Но в моем случае нет
Нуриддин
Хорошо, попробуйте от юзера у которого роль будет mdbMonitor как в этой ссылке
Нуриддин
Возможно в облаке были заменены роли для каких-то целей
Нуриддин
Вы используете пользователя у которого есть роли помимо mdbMonitor?
Нуриддин
На все базы на чтение, на admin mdbMonitor
На все базы перебор, все равно данные он берёд из админ и локал, а остальные динамические данные уже от флагов зависит
Нуриддин
А там есть тех поддержка, возможно этот вопрос стоит обсудить с ними
Hovo
привет всем, кто может объяснить когда нужно вызвать метод close конекшна? я написал такую функцию что бы 1-ый раз открить конекшн а потом везде импортировать и използват ее, но не знаю когда нужно закриват, или вообще не нужно закриват?))))
Hovo
Hovo
-
А где вызов await client.connect()
Hovo
А где вызов await client.connect()
нигде, код взял из документации https://www.mongodb.com/docs/drivers/node/current/quick-start/connect-to-mongodb/ думаю const client = new MongoClient(uri); откривает конекшн
Hovo
Можешь написать глобальный перехватчик, когда приложение крашится
Ну то есть это нормально что 1 раз открываю соединения при старте сервера и оставляю открытым пока приложения не крашится?
-
Да
Hovo
Да
Спасибо
Daniil
Привет всем! Может кто сможет подсказать с чего начать изучать sql. Нужно по работе) Заранее спасибо
Nick
Привет всем! Может кто сможет подсказать с чего начать изучать sql. Нужно по работе) Заранее спасибо
sql - с поиска соответсвующих видосов на ютубе для минимальной базы, потом любые книжки по реляционным БД, потом уже какуюнибудь конкретную БД уже в деталях по документации
Нуриддин
+ для экономии времени, лучше сразу смотреть примеры под той реалиционкой с которой хотите работать. Они имеют общий стандарт sql но исполнение и функции могут различаться и стоит понимать это с начала
Нуриддин
Спасибо)) но пока доступа к БД нет, надо понять общие и как работать с ними
В интернете есть игрушка для тренировки sql на postgresql
Qwerty
Спасибо)) но пока доступа к БД нет, надо понять общие и как работать с ними
Если вам вообще о реалиционным БД надо инфа, а не сугубо по sql, что скорее всего, то есть отличная книга, которую не могу не порекомендовать.
Qwerty
Тут об инфраструктуре.
Тима $SNET
Всем доброго вечера, помогите пожалуйста с подключением Python Telegram бота к базе данных Mongo DB. Выдает эту ошибку: pymongo.errors.ServerSelectionTimeoutError: ac-ly1vtnw-shard-00-02.9xgnu6e.mongodb.net:27017: timed out,ac-ly1vtnw-shard-00-01.9xgnu6e.mongodb.net:27017: timed out,ac-ly1vtnw-shard-00-00.9xgnu6e.mongodb.net:27017: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 662543cd2eb0a29446d9761f, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-ly1vtnw-shard-00-00.9xgnu6e.mongodb.net', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('ac-ly1vtnw-shard-00-00.9xgnu6e.mongodb.net:27017: timed out')>, <ServerDescription ('ac-ly1vtnw-shard-00-01.9xgnu6e.mongodb.net', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('ac-ly1vtnw-shard-00-01.9xgnu6e.mongodb.net:27017: timed out')>, <ServerDescription ('ac-ly1vtnw-shard-00-02.9xgnu6e.mongodb.net', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('ac-ly1vtnw-shard-00-02.9xgnu6e.mongodb.net:27017: timed out')>]>
Yevgenii
привет. помогите уже полдня не могу понять в чем проблема. мне нужно использовать призму с бд монго. все сделал по доке но проблема в том когда использую команду npx prisma db pull у меня ошибка Kind: An error occurred during DNS resolution: proto error: io error: A socket operation was attempted to an unreachable network. (os error 10051), labels: {} 0: schema_core::commands::schema_push::Calculate `from` at schema-engine\core\src\commands\schema_push.rs:29 1: schema_core::state::SchemaPush at schema-engine\core\src\state.rs:433 это ошибка именно с подключением к бд Монго . Но тот же Compass исправно подключается к базе данных по той же url ссылке. Ip list настроен верно: у меня там мой ip плюс ещё 0.0.0.0/0 .
Nick
докер?
Yevgenii
докер?
нет -
Yevgenii
докер?
просто использую некст js и все. думал проблема с dns - так как нашел похожу проблему на гитхаб. поставил dns от гугла. все так же
Nick
уф, проблема то старая https://github.com/prisma/prisma/discussions/14908 видимо приколы призмы
Nick
просто использую некст js и все. думал проблема с dns - так как нашел похожу проблему на гитхаб. поставил dns от гугла. все так же
могу предложить глянуть через tcpdump (или чтонить дружелюбной типа wireshark) идут ли обращения к днс и к какому. Может это даст подсказку куда крутить
Yevgenii
уф, проблема то старая https://github.com/prisma/prisma/discussions/14908 видимо приколы призмы
главное решение там не использовать VPN но блин я его и не использую. плюс я написал в поддержку призмы https://github.com/prisma/prisma/discussions/23915#discussioncomment-9186758 . заметил кстати такую штуку что если использовать протокол mongodb без srv то будет такая ошибка Server selection timeout: No available servers. Topology: { Type: Unknown, Servers: [ { Address: cluster0.omq80gx.mongodb.net:27017, Type: Unknown, Error: Kind: I/O error: No such host is known. (os error 11001), labels: {} } ] }, labels: {}
Yevgenii
разрезолвить не может, это ошибка тоже про днс по факту
та хз даже посоветовали поставить dns сервера IPv4 и IPv6 от гугла(IPv4 - 8,8,8,8 IPv6 - 2001:4860:4860::8888) все равно ничего не помогло
Yevgenii
microsoft firewall вообще выключил
Nick
и всетаки придется дампить трафик
Yevgenii
и всетаки придется дампить трафик
короче говоря я искал ответ на форуме монго и нашел совет что бы скачать Cloudflare WARP VPN . и все начало работать - я чесно говоря не бекендщик даже всех тонкостей не понимаю
Yevgenii
та и вообще это канечно все забавно но почему не работает все без этого vpn
Nick
та и вообще это канечно все забавно но почему не работает все без этого vpn
смотри дамп трафика, там либо прибит гвоздями какойто ДНС куда он лезет резолвить, а он залочен наверняка. По крайне мере можно будет понять, использует ли он системные ДНС, которые настраивал. Плюс еще есть еще вариант с тем что запрос к днс перехватывается и подменяется там днс, провайдер может так развлекаться
Yevgenii
смотри дамп трафика, там либо прибит гвоздями какойто ДНС куда он лезет резолвить, а он залочен наверняка. По крайне мере можно будет понять, использует ли он системные ДНС, которые настраивал. Плюс еще есть еще вариант с тем что запрос к днс перехватывается и подменяется там днс, провайдер может так развлекаться
здесь мне с утра пришла идея. так как у меня призма не подключается к монго из-за проблем с днс, хотя с впн все работает – я пришел к выводу что проблемы только на моем пк. само подключение происходит в файле scheme.prisma который выполняется на сервере.т.е. в будущем когда я это приложение задеплою на версель – конект из монго будет выполняться на сервере версела. и, скорее всего, там будет все конектиться успешно. все же верно? идея в том что бы использовать впн и не париться
Y
Доброго дня, подскажите хочу проджойнить две коллекции. В первой коллекции adjustments_collection есть поле id_light_snapshot типа Стринг, ключ, который лежит во второй коллекиции light_snapshots это _id, тип ObjectId, Если джойнить так, то 'joinedResult будет пустой, если во вторую коллекцию light_snapshots ввести test_id типа стринг, аналогичное по значению _id, то все проджойнится. Может можно обойтись как-то без дополнительной предобработки а обрабатывать прям в запросе? """ cursor = adjustments_collection.aggregate( [ { '$lookup': { 'from': 'light_snapshots', 'localField': 'id_light_snapshot', 'foreignField': '_id', 'as': 'joinedResult' } }] ) result = await cursor.to_list(length=None) """
Y
Может тебе к реляционным БД обратиться? Монга не для джойнов
Если бы у меня был выбор, то я бы с радостью:) Но для части проекта нужна монга, а опыта у меня на ней ноль, поэтому и пришел с вопросом
Y
А как так получилось что у вас айтишники это содержание object id? Извращение
Правильно тебя понял, ты спрашиваешь, почему _id имеет тип ObjectId? Хз, у меня сейчас тот же самый вопрос. Как правильно сделать?
Val
Мне пока расписывать некогда, но попробуй вначале добавить $project операцию и преобразовать айдишник с помощью функции $toObjectId
Val
Сначала сделай, потом спросишь)
Val
Но сам факт, что понадобилось заниматься такими костылями, вызывает кучу вопросов к создателям. Айдишники желательно должны быть генерируемые ObjectId. Все остальные варианты требуют жёсткого обоснования
Нуриддин
Если бы у меня был выбор, то я бы с радостью:) Но для части проекта нужна монга, а опыта у меня на ней ноль, поэтому и пришел с вопросом
Такие задачи лучше выводить в код бэкенда. Поручать монге какую-то логику не очень практично