Andrey
yopp
это когда картинка вставляется прямо в html/css код
yopp
в base64 кодировке
Viktar
Хорошая практика не хранить в базах картинки. Только ссылки. Для картинок есть свои стораджи
Vlad
Спасибо вам!
Denis
У меня есть 15 полей по которым производится поиск (иногда по одному, иногда несколько разных вместе). Лучше сделать один compound индекс или 15 single? Сортировки не нужны
Viktar
Это. Так не работает. В вашем случае надо делать либо текстовый индекс по всем полям(так себе идея). Либо использовать что то другое. Например эластик серч
Denis
inqfen
Коллеги, в тестовой среде упала по питанию secondary реплика(по питанию сервер). монга - версия 4.4.1, после рестарта такое:
"msg":"Detected unclean shutdown - Lock file is not empty","attr":{"lockFile":"/data/db/mongod.lock"}}
"ctx":"initandlisten","msg":"WiredTiger error","attr":{"error":-31802,"message":"[1603616892:949640][1:0x7f6e2821aa80], file:local/collection/16--7182651441678380803.wt, txn-recover: __wt_block_extlist_read, 1132: file contains a corrupted live.avail extent list, range 10284097536-12431585280 past end-of-file: WT_ERROR: non-specific WiredTiger error"}
"ctx":"initandlisten","msg":"WiredTiger error","attr":{"error":-31804,"message":"[1603616892:949678][1:0x7f6e2821aa80], file:local/collection/16--7182651441678380803.wt, txn-recover: __wt_block_extlist_read, 1132: block manager extension list failure: WT_PANIC: WiredTiger library panic"}}
{"t":{"$date":"2020-10-25T09:08:12.949+00:00"},"s":"F", "c":"-", "id":23089, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":50853,"file":"src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp","line":446}}
{"t":{"$date":"2020-10-25T09:08:12.949+00:00"},"s":"F", "c":"-", "id":23090, "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}
{"t":{"$date":"2020-10-25T09:08:12.949+00:00"},"s":"F", "c":"CONTROL", "id":4757800, "ctx":"initandlisten","msg":"Writing fatal message","attr":{"message":"Got signal: 6 (Aborted).\n"}}
И не стартует базу - есть какая-то общепринятая практика действий по восстановлению реплики. Или проще удалить все, и заново подключить реплику к кластеру?
Лок удали
inqfen
Стартани опять, если синкнется, все норм, если нет - то возможно надо будет файлы бд снести, стартануть и он пойдёт её снова стягивать
yopp
вы не сможете использовать один compound индекс
Viktar
yopp
yopp
Про compound index, скорее всего ваш случай не подходит под те задачи, для которых он существует: compound index, это иерархический уточняющий индекс. Т.е. напимер он отлично подходит для поиска по адресу: страна, город, улица, дом. Или группа, пользователь, сообщение
Нашёл вот тут, https://t.me/mongodb_ru/40233, где-то ещё писал
yopp
Поиск по $null в принципе не очень идея, скорее всего у вас какие-то пробелмы с моделью данных.
Вероятно,
1) это признак того, что у вас есть специализация вашего объекта, но вместо явного указания типа объекта, вы используете косвенные признаки.
2) у вас есть динамические аттрибуты, например в карточке товара. Динамических аттрибутов лучше старатся избегать, так как получается ситуация как у вас. Вместо этого эффективне использовать Attribute-Value паттерн:
Например,
# db.products
{
name: String,
…
attributes: [
{type_id: OID, value: .. }
]
# db.attribute_types
{
_id: OID,
name: String,
desc: String
…
}
Тогда вы можете сделать compund индекс attributes.type_id, attributes.value и сможете очень гибко искать и по типам аттрибутов, и по значению конкретного аттрибута
Женя
Ребят, хочу сделать резервную копию базы данных на работающем сервере, и скачать еёнду
скажите пожалуйста, верную ли команду я выбрал?
mongodump --db database --out /path
Viktar
Да. Дампом можно выгрузить данные в файл
Viktar
Именно так
Roman
как смигрировать данные с монги в постгрес?
Гена
Всем привет
Подскажите пожалуйста, почему монга закрывает клиентские коннекты?
Гена
записи типа
NETWORK [conn1708106] end connection********:** (267 connections now open)
Kairzhan
всем привет,
подскажите в чем может быть проблема. есть коллекция. довольно большая
"size" : 12251415017.0,
"count" : 1437727,
"avgObjSize" : 8521,
"storageSize" : 3053105152.0,
при изменений документа выходит ошибка Document failed validation
Даже если вставить пустой документ только с ключом выходит такая ошибка.
может ли эта быть проблема с размером этой коллекции?
Andrey
коллеги, странный может вопрос. Смотрю на jsonSchema - и вот такой вопрос.
Можно ли как-то реализовать следующее - на запись в монгу приходят документы, часть из полей которых не нужны в коллекции, то есть их не писать
То есть от лог-коллектора идут данные, часть их полей - не нужны.
Andrey
Повлиять на лог-коллектор - нет возможности (там баг видимо в плагине logstash (mongdb))
Timur
Коллеги, привет.
Подскажите пожалуйста, можно делать агрегацию через GraphQL в realm mongodb.?
Делаю веб аппликуху которая смотрит на GraphQL endoint.
Хочу сделать простую группировку по полю category, вывести уникальные и count
query {
goods {
category
}
}
yopp
yopp
yopp
вы можете раз в минуту просто делать $unset у тех полей, которые вам не нужны
Andrey
yopp
либо внутри транзакции переливать данные из одной коллекции в другую через aggregate с merge
yopp
Andrey
крон?
понятно, :) ну так себе вариант
yopp
почему?
Andrey
потому что крон - мне думалось, или всё средствами базы, или сервис я и сам могу накидать, хоть крон хоть что, но уже другое
yopp
в монге нет триггеров, по этому средствами базы вы это не сделаете
yopp
вы можете в кроне просто mongo —eval одного запроса запилить
yopp
ну или через systemd timers
yopp
у вас будет поток 400 мегабит?
yopp
реально?
yopp
вот завтра
Andrey
реально
Andrey
да прям хоть сейчас
yopp
вы уже пробовали в монгу писать 400 мегабит?
Andrey
да
yopp
вам нужно будет сделать partialIndex по полю, которое вы будете добавлять вместе с $unset
yopp
в partialIndex будет только сабсет необработанных полей, по этому стоимость $unset будет равна прочитать все документы за минуту и записать их обратно
Viktar
Сдается мне если у вас 400 мегибит постоянный поток, то смысла не будет хранить все в монге. С такими объемами, сложно будет что то сделать. Попробуйте складывать это на с3 а потом перекладывать в монгу, то что реально надо
Andrey
yopp
yopp
размазывать на несколько шардов и отлично
Andrey
Viktar
ну почему же
Была у меня такая практика. Правда не с монгой а с хайвом. В итоге упёрлись в то, что такие объемы стало очень дорого хранить.
Andrey
планирую писать чаще чем читать
yopp
дорого это уже другой вопрос :)
Andrey
yopp
вопрос зачем вам это всё
Andrey
монга пишет очень быстро
yopp
я про конечную цель
yopp
т.е. что вы будете с данными делать
yopp
надо из этого исходить, потому что записать быстро данные можно почти в любое хранилище
Andrey
ну хорошо, пусть например: вот проект у человека - > https://sonar.omnisint.io/
Andrey
ну хорошо, пусть например: вот проект у человека - > https://sonar.omnisint.io/
вот по этому проекту, автор "говорит", что он обновляет данные 1 раз в неделю(так выходят паблик датасеты), в 1 датасете - 3 млр. записей, они укладываются условно в 200 гигов у меня (в качестве теста). Так вот, автор кладет данные в виде стрингов, из кода посмотрел. Я честно говоря вообще не понимаю, как у него сервис работает тогда. Или у него минидатацентр - бесплатно, или есть что-то, о чем он не пишет.
yopp
основной вопрос не как записать, как потом прочитать
Andrey
2 датасета
yopp
а как читается?
yopp
если выбирается небольшой диапазон по индексам, то да
yopp
если выбириаются большие диапазоны или есть запросы мимо индексов то будет больно
Andrey
по полям, по которым построены индексы
Andrey
нет только по индексированным
yopp
я правильно понимаю, что 400 мегабит случается в момент обновления датасета?