yopp
да
Anonymous
Можно я еще позадаю, если будут? )
yopp
нет
yopp
сами проходите :)
Anonymous
Понял принял
yopp
не пройдёте, приходите, поможем
CC-BY-SA-4.0/Docker-ce30.0
Короткие поля ммм
CC-BY-SA-4.0/Docker-ce30.0
Всякие метрики так хранят и отдают по апи
Nikita
не кажется ли вам, что это экономия на спичках ?
CC-BY-SA-4.0/Docker-ce30.0
В больших масштабах экономия на спичках не может быть заметна?
Nikita
В больших масштабах экономия на спичках не может быть заметна?
а есть какие-нибудь статейки (или свои данные) с графиками/статистикой типа: "сидели горевали, потом на спичках поэкономили и все полетело" (ну я утрирую конечно, но суть ясна)
yopp
можно на таких вот спичках до 25% экономии получить
yopp
оно никуда не полетит
yopp
скорость от этого практически не меняется, меняется объём хранилища
yopp
хорошо резервируемое хранилище стоит _очень дорого_ за гигабайт
yopp
очень дорого это доллары за гигабайт
yopp
или даже десятки долларов
yopp
например если нам нужно хранилище с горячим резевированием в нескольких регионах
CC-BY-SA-4.0/Docker-ce30.0
и в нескольких АЗ на регион
yopp
да-да
yopp
и тут когда мы можем из 10Тб сделать 9Тб, мы можем получить например -10-15к в год
yopp
короче когда разговор заходит о том как не разориться на четырёх девятках, спички начинают играть существенную роль :)
Nikita
не, внесу ясности, на больших объемах я понимаю зачем такое делается, но я попросил ссылки на статейки/выступления, которые показывают как было и как стало
Nikita
(если конечно под рукой они)
Nick
ну тут не статьи, но изза кривой начальной архитектуры и недальновидности, получили что в трех отдельных нодах лежало 5Тб данных без репликаций и бекапов. После принятия факта проблемы, заделали шард, перепелили структуру данных, вынесли часть логики на эластик. в результате чистых данных около 2Тб на шардированном кластере + реплики. Собственно задействовано новых 4 сервака+под монгос нормально дышащих, вместо старых 3 еле шаволящихся.
Nick
с моей точки зрения это как раз были спички, которыми можно было сразу жертвовать, зная что через год данных будет овердохера
Nick
к тем же спичками улетели и нидексы на запросы. котоыре может быть когдато в будущем понадобитсья выполнить. не понядобилось. сожрало всю память. вставка была пиздец, удаление индексов например приводило к кратному ускорению вставки изза освободившейся памяти
yopp
когда уже сделают sharded indexes
yopp
или index-only ноды
Nick
да хоть и такие есть, собственно по этой инсталляции я прикидывал что на индексы, чтобы прям помещались надо 1:10, потом тупо дропнул один из них
Nick
стало 1:20
Nick
даже 1:40 сейчас проверил, 100Гб индексов на 4.5Тбданных
yopp
хорошие у вас данные
yopp
а сколько документов?
Nick
3млрд
yopp
100 гигов это вместе с _id?
Nick
да
Nick
43Гб на _id
Nick
22 на шард ключ
yopp
1.5кб на документ
yopp
нормально
Nick
да
yopp
а суть какая у документов, если не секрет?
yopp
стата?
Nick
да все банально, пришли документы, нужно все хранить, дальше нужно передать в другое место. т.е. фактически нужно отслеживать факт доставки + периодиски выборки по ключам
Nick
типа првоерка приходил док или нет
yopp
электронный документооборот?
Nick
есть желание както замутить неизменяемое хранилище, в которео перкидывать после отправки. чтобы там было типа ридонли. но для этого нужно ряд организационных моментов и они не от меня зависят. так что пока храню чтоб можно было сбросить влаги и перепослать например
Nick
наподобие
yopp
клёво
Nick
доки толкьо добавляются, так что можно и так назвать
Nick
но проблемы монги сначали сказываться гдето на 30мультах записей, любой запрос не по индекс лез на диск, а тогда доки хранились распаршенные и было все печально
Nick
в итоге и было решено тупо оставить как хранилище, без случайных запросов
Nick
а да диски обычные HDD, поэтому только хранить)))
Nick
ну и могу сказат ьчто на новый кластер данные перегоняли примерно 2 недели
Alexander
привет. подскажите, тюню приложение. можно как-нибудь получить живой лог запростов(какие, сколько, куда)?
yopp
Можно включить db.profile
Alexander
ок, спасибо за оба совета!
Arthur
Привет! При перезапуске(первом запуске) nodejs - tailable cursor возвращает все документы из capped коллекции. Как можно получить только новые документы, без документов, которые были уже получены ранее? Вот код получения курсора: dbutils.sub = function(filter){ return ps.find({filter:filter}) .lean() .tailable() .cursor(); } подписываюсь на новые документы так: dbutils.sub() .on('data', doc => console.log('on doc', doc));
yopp
в фильтр добавить условие
Petro
Как правильно написать валидатор масива строк? Пишу просто { “category”:{$type: ‘array’}} пишет validation failed
ikasymov
_id в Mongodb уникален на всю базу или только внутри коллекции?
Yar
Such an id must be unique for each member of a collection;
ikasymov
Such an id must be unique for each member of a collection;
то есть он уникален только внутри коллекции?
ikasymov
Там не сказано что он не уникален на всю базу
Yar
id уникален внутри коллекции
Yar
как и id в таблицах реляцыоных бд
Yar
коллекции ~ таблицы (если брать идею)
ikasymov
точно?
Sergey
Он уникален в пределах primary index, как и в любой БД.
ikasymov
можно ссылку на это в доке? найти не могу
Sergey
https://docs.mongodb.com/manual/core/index-unique/
Sergey
A unique index ensures that the indexed fields do not store duplicate values; i.e. enforces uniqueness for the indexed fields. By default, MongoDB creates a unique index on the _id field during the creation of a collection.
Alexander
так там же id формируется что-то типа дата-мак-пид-сам_инкрементируемый_ид
Sergey
Никто не мешает писать свой.
Alexander
только не так часто это нужно
Yar
это же свойство _id, т.е. по соглашению не стоит менять