yopp
Впрочем можно просто zlib вместо snappy врубить
yopp
И хранить в отдельной коллекции
Владимир
на самом деле идея классная, но факт остается фактом при сыром хранении в файлах место меньше кушается, но не контралируемо(
yopp
Можно даже только в отдельной коллекции наверное zlib включить через ключи настройки WT
Владимир
возможно мне стоит пересмотреть структуру документа и порезать ключи
Владимир
или сделать для состояний коллекции
Владимир
а сырые ответы правда хранить в gzip в отдельной
yopp
Попробуйте настроить compression engine при создании коллекции
Владимир
спасибо вам большое))
Владимир
буду дальше думать как все это прикрутить)
yopp
Если можно отдельно настроить, то не надо gzip даже делать
Владимир
ото в файликах дампы json хранить это прям совсем хардкор
yopp
Уж лудтше gridfs :)
Владимир
обязательно почитаю что за зверь )) ото думал с наскоку на монгу перелезть и тут началось)
yopp
Ну с таким кейсом везде более-менее одинаково больно будет
yopp
Ну тащемто можно вроде как: db.createCollection( "foozlib", { storageEngine: { wiredTiger: { configString: 'block_compressor=zlib' }}})
Mykola
Вызываю в другом классе `DeviceLatestBlock.saveLatestBlock` выдает ошибку `Property ‘saveLatestBlock’ does not exists on type PaginateModel<DeviceLatestBlockModel>` ?
Mykola
Что делаю не так ?.
yopp
охренеть. это что за язык вообще?
Mykola
TypeScript
yopp
жуть какая
Mykola
Просто типизация добавленна
yopp
там есть возможность цепочку наследования отдебажить?
Mykola
Я не знаю как это сдалать
Nick
там вроде как methods должны вызыватсья у объектов
Nick
а statics можно у модели
Mykola
Нашел ответ https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mongoose#static-methods
Дмитрий
чат, а что за папка journal в папке с базой данных монги ? там не логи ?
Oleg
Как для такого запроса сделать правильные индексы?
eshch
по этим трем полям сделай и все
eshch
ну да
Viktor
один составной не будет работать
Viktor
Он не будет покрывать запрос правильно
Viktor
По сути он будет использовать только bid_1, а хвост проигнорит и выбросит
Viktor
Только RAM прожигаете
Oleg
Он не будет покрывать запрос правильно
Как сделать, чтобы покрывал правильно? Какие удалить индексы и какие добавить?
Viktor
Расскажите кейс свой
Oleg
Зависит от сценария использования
Постоянно отправляются такие запросы в базу для вывода информации юзеру Но есть и другие к этой коллекции, но чаще всего такие
Sergey
Профилинг говорит что они занимают ~500ms
Потому что по admins нет индекса (как минимум)
Sergey
Ну он делает фуллскан скорее всего
Viktor
данные можно попортить
Sergey
Вообще, explain в студию
Viktor
Вообще, explain в студию
без explain понятно, что индексы не покрывают запрос. Начинать надо со схемы
Aleksei
Использовать materialized path, а не «матрешки»
Потыкал, не подошло. А плох ли подход, хранить документы по отдельности и для редактирвания по id получать, а для сбора в дерево у каждого id детей хранить?
Sergey
без explain понятно, что индексы не покрывают запрос. Начинать надо со схемы
То что не покрывают - понятно, но примерную схему и так из запроса видно
Viktor
Смотрите, индекс, который вылечит сразу все здесь построить нельзя. Но можно поменять схему, а потом сделать хороший индекс. Например, добавить в admins еще и owner'а, а затем построить multikey-index над bid, name и admins.id
Nick
а что мешает переписать запрос из вида A & (B || C) в (A&B)||(A&&C) и покрыть инедксами два этих случая
Viktor
тогда поиск и сортировка будут по индексу работать
Nick
хотя может и не заработать
Nick
и что?
Viktor
и что?
На бекенде потом клеить?
Nick
ну сделать два индекса А-B и А-С
Nick
сортировка то с чего сломается
Viktor
Монга будет один юзать в итоге
Oleg
Но еще есть запросы без bid
Nick
выбираешь индекс с большей селективностью, его строишь и радуешься
Sergey
про сортировку забыть в индексе плохая идея.
Если там сортируются три документа после фильтра, то пофиг. Мы же не знаем какие данные лежат в базе.
Viktor
Но еще есть запросы без bid
Каких запросов больше? с bid или без?
Nick
хотя наверн да
Viktor
40 на 60 (with bid) где-то
Тогда меняете схему (добавляете овнера к админам в коллекцию) и делаете индекс вида {admins.id: 1, name: 1, bid: 1}
Viktor
Тогда покроете оба кейса с bid и без
Viktor
Но сразу скажу, что такой индекс будет большим
Oleg
А если сделать подругому { name: "asd", access: [123123123, 123, 432], admins: [{...}, {...}], bid: 123321, owner_id: 123123123 } UPD.
Viktor
А если сделать подругому { name: "asd", access: [123123123, 123, 432], admins: [{...}, {...}], bid: 123321, owner_id: 123123123 } UPD.
Можно и так: сделать отдельную коллекцию, где смешать айдишники админов и овнера