CherryTea
Ну если тестовая то пофиг
yopp
Совершенно нет
Anonymous
Всем привет. Вопрос про mongoose/mongo; В Schema Mongoose модели описал требующее индексации поле таким образом: { query: { type: String, text: true, index: true } } в query может лежать очень жирный текст с версткой и пр; Вопрос: как правильно совершить like поиск по этому полю? попробовал таким образом: https://stackoverflow.com/questions/24714166/full-text-search-with-weight-in-mongoose но match совершается только при соответствии слово в слово; по слогам не матчит
CherryTea
Совершенно нет
Что страшного случится при потере тестовой бд?
yopp
Что страшного случится при потере тестовой бд?
Сломаный CI ведёт к потере времени разработчиков, что убытки для компании.
CherryTea
Сломаный CI ведёт к потере времени разработчиков, что убытки для компании.
Ну иногда да, но если деплой сложный то экономии больше
yopp
Не надо деплоить монгу каждый раз
Max
случайно ваш тред увидел - а чего для тестов не юзать in-memory монгу? типа https://www.npmjs.com/package/mongodb-memory-server ?
CherryTea
Не надо деплоить монгу каждый раз
Тестовую для локальной разработки то чего нет
yopp
Потому что проблема не в хранилище, а в доступности сервиса.
yopp
Тестовую для локальной разработки то чего нет
Слово «каждый раз» ключевое
CherryTea
Ладно я понял к чему вы клоните
Nick
по умолчанию 20
бредовое предложение: попробуйте разбить на два этапа, на первом вы получаете нужно N доков, на втором делаете выборку по обычному find
yopp
Если у вас stand-alone нода, да пожалуйста. Если вы деплоите кластер для разработки то быстрее это делать через mlaunch
Evgeniy
спасибо сейчас попробую
Nick
поулчится что вы фактически часть обогащения данных делаете вручную
yopp
спасибо сейчас попробую
добрался до ноута. во-первых, не используйте базу данных чтоб управлять отображением. "$ifNull": ["$smi_type", "No data"] это отвественность потребителя данных, а не монги
yopp
тоже самое касается подстановок title, description и тд
Max
@dd_bb а подскажите, плиз, доку, где можно почитать про то, как wt хранит данные на диске? там же какой-то минимальный размер страницы должен быть. и отдельно это все в разрезе компрессии :) или только в сорцах?
yopp
не надо это читать
yopp
зачем!
Max
я псих интересно
yopp
зачем?
yopp
не бывает просто так интереса, бывает попытка решить проблему вообще не тем способом :)
Max
у меня тут много решений "не тем способом", к сожалению. и я тут для себя понял, что не понимаю, как это всё лезет на диск. потому и хочу понять, для теории.
yopp
вообще не важно как лезет
yopp
проблема не в этом 100%
yopp
спасибо сейчас попробую
без данных и индексов очень сложно, но да, @yatoba вероятно прав, про несколько запросов. Без $expr будет эффективнее, потому что $expr в вашем случае похоже не пытается пересекать индексы
yopp
памяти, хранилища?
yopp
хранится в байтах, да действительно постранично. размер динамический, жмётся всё содержимое перед записью, если включена компрессия
Max
понял, спасибо!
yopp
спасибо сейчас попробую
рекомендую посмотреть в сторону изменения схемы вообще. у вас слишком много вычислений, их будет дешевле делать перед записью данных в коллекцию, чем потом при чтении обрабатывать
Max
но зачем?
я и правда это для теории. Возникла она из вопроса в воздухе - если мы будем писать в документ на ~40% / 1k данных меньше, какой будет профит и в каком %% соотношении с точки зрения монги и нашей нагрузки. отсюда и стало интересно понять, как wt пишет данные.
Max
да, я отдаю отчёт, что это не подход к решению решения проблемы, что есть еще индексы на этой коллекции, есть сжатие, вот это всё. но для себя -интересно. не более.
Max
а ответ на возникший вопрос будет сделан в боевых условиях :)
yopp
в целом меньше пишем, меньше IO, меньше места занимаем
yopp
если говорить в разрезе компрессии, то эффект будет практически полностью зависеть от алгоритма и данных
yopp
по этому теоритические изыскания не имеют смысла вообще
yopp
берём срез, берём тестовый стол и меряем
Max
Диск на данный момнет - узкое место. его утилизация в пиках - 100% а в не-пиках — те же 100%, но секондари начинает отматывать время обратно. в этот момент меняется соотношение read/write, что, в общем-то, логично и ожидаемо.
yopp
что такое «отматывать время обратно»?
Max
берём срез, берём тестовый стол и меряем
однозначно. потому - не только теория, а чтобы и тесты были хоть с какой-то теорией. И чтобы результаты тестов на теорию накладывались.
yopp
то как оно на диске или в памяти хранится вообще к вашей проблеме отношения не имеет :)
yopp
точнее это знание ничего не изменит
Max
что такое «отматывать время обратно»?
во время пиков реплика не успевает догнаться и начинает отставать.
yopp
а, лаг увеличивается, окей
Max
то как оно на диске или в памяти хранится вообще к вашей проблеме отношения не имеет :)
отрицательный результат - тоже результат. и понять, что мне это не надо - тоже результат :)
yopp
вопрос скорее стоит в том, что будет дешевле — заменить железо или заменить софт
yopp
40% снижения размера документа, если у вас уже включена компрессия, не приведёт к 40% снижению размера данных
yopp
если у вас много cpu, вы можете попробовать переехать на zlib
yopp
но опять-же, это всё надо оценивать с точки зрения экономической целесообразности
yopp
потому что zlib потребует перелива всех данных
Max
"creationString" : "access_pattern_hint=none,allocation_size=4KB,app_metadata=(formatVersion=1),assert=(commit_timestamp=none,read_timestamp=none),block_allocation=best,block_compressor=zlib
yopp
ну тоды ой :)
Max
Уже на злибе
Max
но опять-же, это всё надо оценивать с точки зрения экономической целесообразности
всё так и очевидно, что нет волшебной ручки, которая сделает счастье. но иногда интересно поковыряться там, где раньше не был, гг
yopp
«будем меньше писать» это будущий эффект, так как проблемы у вас уже сейчас, то либо вам придётся ретроспективно почистить данные, либо эффекта не будет
yopp
там ничо интересного. wt внутри интересен когда хочешь написать свой kv сторадж :)
yopp
ну вобщем-то дороги две: если можно влезть в какое-то ещё железно за разумные бабки — вертикально масштабироваться. если такое железо дороже, чем заводить себе шардированный кластер, то горизонтально масштабироваться
yopp
чикать данные конечно можно, но маловероятно что это пройдёт без измнений в по, а это скорее всего будет очень дорого
Max
Изменение диска в амазоне не дает ощутимого прироста. даёт, но не ощутимый :) это странно, потому и лезу в теорию. Софт поменять будет в разы проще, но перед этой заменой как раз и хочется понять, стоит ли овчинка выделки.
Max
да, у нас всё не как у людей :)
Max
я не беру это в расчет - я опираюсь на то, что купил у амазона. а там явно и иопсы, и скорость, и вот это вот всё.
yopp
ну у амазона вообще дофига органичений по пропускной способности. они зависят как он инстанса, так и от типа EBS
yopp
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html
yopp
там таблички есть
yopp
если у вас не EBS-optimized инстанс, то там не такие уж и большие цифры по bandwidth
Max
да, я в курсе этих дел - там всё подходит, - и лимиты по iops на конкретный инстанс, ну и на сами диски, конечно же.
Max
чтото мне подсказывает, что то одно, то другое суть в чем - утилизация в 100%, что достаточно красноречиво. по метрикам с самого инстанса иопсы редко за 10к вылезают, равно как и по bw никак до лимита по ebs не влазит.
Max
но тесты fio на этот диск упирались в iops - что логично, в общем-то
Max
10k иопсов - это если мерять со стороны самого инстанса. у aws их будет поменьше чуть, скорее всего - они ж умеют merge-ить запросы.
yopp
100% iops это одна история, 100% bw это другая совершенно