Андрей
не логично. Что, если мне нужно удалить источник из компании?
У вас логика вся - одна - найти петю или васю по принадлежности к ООО Метеорит или АО Гамбит
Elvee
Зачем? У него полностью однородная информация, разложенная по папкам на диске. Он путает сам себя в понятиях.
Да, верно. Которые логически разделены на компании и разные базы которые лежат в этих компаниях
Easy Rider
не логично. Что, если мне нужно удалить источник из компании?
ты вообще как, с монго раньше сталкивался? на чем это будешь делать? языки програмирования знаешь?
Elvee
Андрей
С этим справится grep, sed и awk хоть с миллионом баз и компаний в текстовиках на диске.
Elvee
ты вообще как, с монго раньше сталкивался? на чем это будешь делать? языки програмирования знаешь?
знаем, умеем практикуем) Поверхостно. Не было нужды в организации подобной структуры
Elvee
Ну а как в Json перегонять будешь-то...
написать парсер да и всё
Андрей
Да, тут согласен. Но для меня важно в какой базе я нашёл петю
Вся прелесть носкулей в схемалэс. Для такой логики не имеет практического смысла разбиение по таблицам (коллекциям). Только для себя, если вы хотите в гуи клиентах щёлкать по билдеру запроса на коллекциях с именем тех компаний.
Андрей
Вся разница в значении условно двух полей при одном и том же условии поиска
Elvee
Вся прелесть носкулей в схемалэс. Для такой логики не имеет практического смысла разбиение по таблицам (коллекциям). Только для себя, если вы хотите в гуи клиентах щёлкать по билдеру запроса на коллекциях с именем тех компаний.
именно. Я могу и не спрашивать этот момент так как можно всё в одну коллекцию. Но эту хрень нужно поддерживать и как-то логичестки структурировать. чтобы смотря в компасе я видел - ага, есть компания и у неё такие коллекции. О, эта коллекция мне не нужна - удалил
Elvee
Исходя из ответов можно сделать вывод. Что для удобства базу данных я назову компанией, коллекцию - базой данных, которая в этой компании и документом - записью из этой базы
Андрей
Предполагается адская сложность с ремувом условно вида: db.companies.remove({ cmp_name: mb.regex.startsWith("Google") }) ❓
Elvee
а вот так выглядит, если несколько компаний
Easy Rider
собственно то, о чём я и писал изначально
сделай просто поле в документе с именем папки
Elvee
сделай просто поле в документе с именем папки
имеешь в виду сбить коллекции в одну?
Easy Rider
имеешь в виду сбить коллекции в одну?
ну у тебя ж все в одной коллекции будет
Easy Rider
ты думаешь как сделать так чтобы было понятно в какой папке найдено
Easy Rider
ну просто сделай так чтобы там было поле с именем папки
Elvee
ты думаешь как сделать так чтобы было понятно в какой папке найдено
ну да. Так как это важно. Помимо всего этого есть описания компаний и самих баз, которые лежат в этой папке
Easy Rider
ну сделай поля соотвествующие. просто подумай на какие вешать индекс а на какие нет
Elvee
если мне понадобиться изменить название базы? придеться бегать по всем документам в коллекции и менять поле database
Elvee
в монге они не нужны будут
Андрей
если мне понадобиться изменить название базы? придеться бегать по всем документам в коллекции и менять поле database
Это вообще какая-то печаль. Вам NoSQL СУБД и вообще СУБД не нужна, если вы собираетесь в неё вставлять полностью одинаковые и обезличенные в плане отсутствия любой уникальности записи для того, чтобы было легко их удалять и понимать к чему они относятся только по названию коллекции или таблицы. Это не имеет ничего общего с административным подходом и не отличается ничем от файлов на диске, принадлежащих какой-то папке.
Андрей
Если не предполагается вообще изменение подхода, зачем СУБД?
Elvee
Здесь есть у кого-то опыт работы с elasticsearch и mongodb?
Андрей
Типо ответ на "если мне понадобиться изменить название базы?".
Андрей
А что предполагается переименовать коллекцию и всего делов?
Elvee
А что предполагается переименовать коллекцию и всего делов?
Что проще сделать? Переименовать коллекцию или значение ключа в десятках миллионов документов?
Elvee
Что легче отфильтровать? Коллекцию или перебрать десятки миллионов документов?
Elvee
Риторические вопросы)
Андрей
🤣 развлекайтесь, я посёль себе
Nick
всё вышеперечисленной. Возможен даже фазинг
Тогда только если монго атлас серч. В обычной этого функционала нет. Смотрите в сторону эластика и т.п.
Elvee
Тогда только если монго атлас серч. В обычной этого функционала нет. Смотрите в сторону эластика и т.п.
Спасибо. Атлас не подходит так как нужно развернуть локально. Идея была в том чтобы сделать монгу как базу для хранения. А поиск уже осуществлять в elastic
Elvee
В эластике также все хранится
сейчас крутится в еластике. Свыше 500 индексов уже. Но смущает использование еластики для хранения и поиска
Nick
сейчас крутится в еластике. Свыше 500 индексов уже. Но смущает использование еластики для хранения и поиска
Ну эластик итак будет хранить чтоб поиск работал. Смысла удваивать косты на сопровождение еще одного инструмента и усложнять код работой со второй бд нет
Nick
да, получается нужен ещё и конектор...
Ну эт уже насколько вы захотите усложнить себе жизнь
Elvee
нужно ведь как-то синхронизировать данные.... нужно подумать...
Nick
нужно ведь как-то синхронизировать данные.... нужно подумать...
Не могу понять чем вам мало эластика, что хотите еще и в монгу загнать данные. Какие задачи вы на нем не можете решить?
Elvee
Не могу понять чем вам мало эластика, что хотите еще и в монгу загнать данные. Какие задачи вы на нем не можете решить?
Проблема в том, что мы уперлись в ограничение по количеству индексов на одной ноде. И мы записывали все свои базы как индексы. Сейчас же мы хотим логично разделить наши базы по компаниям. В монге мы компанию можем использовать как базу данных, а сами базы как коллекции. Это удобно
Elvee
Данные по разным компаниям имеют одинаковую структуру?
У компании есть базы данных сотрудников. Поля в этих базах могут быть разными и очень отличаться
Elvee
Пару часов назад в чате предлагали сбить все базы в одну коллекцию. Но для управления это не очень хорошо. Так как может быть такой момент, что базу нужно добавить, удалить, переименовать и т.д
Elvee
У нас есть парсеры. Которые делают ключи одинаковыми во всех коллекциях
Nick
Конечно. Это да
Все в один индекс наливаете, и добавляете поле органиция и допом любые другие. И все это давно удобно
Elvee
Все в один индекс наливаете, и добавляете поле органиция и допом любые другие. И все это давно удобно
Да, рассматривали такой вариант. Единственное уточню. Под индексом вы имеете ввиду индекс эластика?
Elvee
Если да, то методом проб и ошибок наш поиск очень замедлился, когда индекс перевесил 10гб. Как показала практика. Физический размер индекса играет роль. А у нас есть базы по 60 млн. документов. И нам пришлось их делить на индексы поменьше. Получается 1 база имела 3 индекса, к примеру
Alexander Cheprasov
Всем привет! есть коллекция на 600 000 записей , делаем простой find без фильтра через монгус с использованием lean, запрос виснет на 40-50 секунд. В чем может быть проблема, уже запарился искать. или это нормально что нелья такое количество выгрузить?
Alexander Cheprasov
есть индексы?
запрос без фильра
Alexander Cheprasov
есть индексы?
const data = await DB.Worker.find({}).lean() максимально простой запрос
Daniil
Что проще сделать? Переименовать коллекцию или значение ключа в десятках миллионов документов?
Видать у вас каждый день удаляют по несколько баз данных, что для оптимизации этого пришлось изобретать партицирование
Daniil
Daniil
не каждый. Но этому есть место быть)
Ну так и подождут, абсолютно нормальная ситуация, чтобы это оптимизировать, можете попробовать настроить партиции, с индексами чтобы удалялось быстрее
Elvee
Индекс и не должен храниться в оперативке
где-то в офф. доках есть информация что индекс должен составлять какой-то процент от общего количества оперативки
Daniil
В случае такого количества выборки индексы вообще могут не просматриваться
Nick
Не путайте индекс эластиковский и нормальные индексы
Elvee
Я так понимаю все рекомендуют сбить все базы которые относятся к одной компании в одну коллекцию
Can
Прошу помощи. Надо сравнить пароль и хэш пароля, но возникла странная проблема: никак не могу достать password из объекта приходящего из базы данных MDB (getPasswordHash.password). Подскажите, как решить?