Mykola
Подскажите что почитать по оптимизации многопоточности в Mongo !!. Сейчас занимаюсь парсиного RPC Ethereum сервера выборкой всех транзакци с блока и запихиваю в Монго и индексирую транзацкии к привязке по _id. Жрет мног оопертивы уже 23Гб. Нужен ваш совет как сделать теперь более оптимальный выборку.
Mykola
Да, о многопоточности. Запиху в базу при помощи bundle.
yopp
Какую проблему ты пытаешься решить?
yopp
О, нас внезапно полтыщи
Alex
наркоманы
Mykola
Какую проблему ты пытаешься решить?
Поскольку индексирю каждую транзакцию для быстрой выборки, их уже 47M будет еще больше, запихиваю от 400 до 5к траезаций в секунду. Монго держит их в опертавки иногда переполняет память и крешить, рестартую, пока что на локальной мащине, потом перенусу сппарсеную базу на Azure там ей необходимо будет много опертивы что бы держать индексы, мне нужно подумать как эфективно делать выборку транзакций по кошельку.
yopp
Сделать индекс по полю кошелька
yopp
47 млн записей это не много
yopp
Какой средний размер документа в коллекции с транзакциями?
yopp
А как монга крешится?
yopp
По хорошему её даже OOM не должен пристреливать, там под кеш половину памяти выделяют. Остальное ось сама под дисковый кеш заберёт
yopp
Если там ничего кроме монги нет
Mykola
47 млн записей это не много
Вся база 20гб из них 8гб индексы.
yopp
А что в _id?
yopp
Но ещё раз: какая сейчас проблема?
Mykola
Но ещё раз: какая сейчас проблема?
Отпишу завтра, нужно собрать больше дейты что бы задать более правильный вопрос. Спасибо что откликнулся.
yopp
🤔
Mykola 🤷🏼‍♀️
Здравствуйте. А подскажите пожалуйста каким образом делается триггер на новый документ в mongoose? В документации нашел только на save
Denis
collection.create()
Mykola 🤷🏼‍♀️
collection.create()
ой, я значит неправильно все делал. Спасибо!
Denis
там можно двумя путями это делать
Denis
http://mongoosejs.com/docs/models.html
Denis
Constructing documents смотри
Mykola 🤷🏼‍♀️
там можно двумя путями это делать
вот, я как раз делал первым. Но этот запрос триггерит ивент save
Mykola 🤷🏼‍♀️
Соответсвенно если я где-то еще в коде буду менять модель и делать save, то будет тот же ивент
Mykola 🤷🏼‍♀️
Вот таймаут снова триггерит сейв (очевидно), хочу сделать, чтобы только создание документа триггерило
Denis
Я почти не использую функциональность монгуса по сути, на больших документах она медленно работает. Использую монгусовские обертки для нативных методов и почти всегда использую .lean(), оно тем самым отдаёт чистые js объекты которые в 3-4 раза быстрее чем монгусовские
Mykola 🤷🏼‍♀️
мм, но у меня ничего большого нет) Просто ковыряюсь
Denis
Ну если тебе надо обновить документ а не создать то есть findOneAndUpdate
Mykola 🤷🏼‍♀️
В общем, единсвтвенное, что приходит на ум, это сравнивать текущую дату с датой создания... Но это так костыльно шо капец
Denis
И монгус ещё не возвращает промис
Denis
Он возвращает объект
Mykola 🤷🏼‍♀️
у меня возвращает
Denis
У которого есть then
Mykola 🤷🏼‍♀️
а...
Denis
Чтобы он возвращал промис
Denis
Надо .exec() использовать
Mykola 🤷🏼‍♀️
ну мне вроде бы и так подходит)
Denis
Вот таймаут снова триггерит сейв (очевидно), хочу сделать, чтобы только создание документа триггерило
А тебе нужно чтобы ты изменял объект, а потом ещё раз вызывал сейв и он как бы перезаписывался?
Mykola 🤷🏼‍♀️
ну так и происходит, он перезаписывается в бд. Это я так делал раньше, но как я понимаю, так делать лучше не надо, да?)
Denis
Ну я не считаю это хорошей штукой. Когда речь идёт о работе с дб, то проще обойти баги имея иммутабельность. Создал, получил объект, сделал что-то с объектом, записал его отдельной операцией, а не доставать, мутировать объект и записывать потом(по сути вот этот вот save вызывать на том же объекте только мутированном как у тебя на скрине). Так сложнее баги отловить. С первым подходом ты просто постоянно выполняешь контракты, всегда на поверхности видно что ты получаешь, что должен записать, с flow/typescript совсем приятно в таком стиле работать.
Server
В mongo shell есть ли возможность сделать автозакрытие скобок в терминале и подвсетку синтаксиса?
yopp
Нет
Server
Как это реализовано тогда?
Server
Нет
https://github.com/TylerBrock/mongo-hacker
Slava
Как это реализовано тогда?
я так понял это обертка, с кастомной логикой и все
Slava
есть добротный gui для монги, это так, к слову)
Server
есть добротный gui для монги, это так, к слову)
мне vim и терминал ближе всех gui ) спасибо
CC-BY-SA-4.0/Docker-ce30.0
кек
CC-BY-SA-4.0/Docker-ce30.0
CC-BY-SA-4.0/Docker-ce30.0
inf-mongo поверх обычного монгоклиента.
CC-BY-SA-4.0/Docker-ce30.0
И можно делать всё что обычно делается в текстовом редакторе.
Sergey
Лучше бы human-friendly синтаксис завезли. В этом аде из скобок порой утопаешь.
Slava
думаю это дело привычки, после долгого использования монги мне sql синтаксис кажется перегруженым
Alex
lol
yopp
http://plusnconsulting.com/post/MongoDB-Change-Streams/?linkId=44461593
Mykola
What’s up ?
Jimmy
иногда кажется, что в индии даже кобры могут писать небольшие скрипты и админить конторки. Простите за оффтоп - вырвалось.
yopp
Generally, relation mapping in mongo is terrible idea. Why do you need that?
yopp
Basically, you can just map table columns to document fields as-is. You won’t be able to properly join documents in one query, but you’ll still be able to query docs by foreign keys in separate query.
yopp
https://docs.mongodb.com/manual/reference/database-references/
yopp
This is a good start
yopp
Giant? This is just a slogan. :)
yopp
There is still just two editions: community and enterprise. And also couple of 3rd party forks.
Alina
Всем привет! Ищу nosql-базиста
Alina
#вакансия #Иннополис #разработчик #работа #fulltime #mts_IT #bigdata #nosql #database Компания MTS IT. Ищем разработчика БД (преимущественно nosql) для проектов с Big Data по построению различных микровервисов Обязанности 📌 : - создание схем данных, хранимых процедур; - анализ и оптимизация производительности запросов; - анализ производительности работы СУБД; Требования📌 : - знание нереляционных БД (MongoDB, Cassandra др); - знание популярных алгоритмических языков программирования (Java, JavaScript, др); - уверенные знания строения современных РСУБД (разновидность РСУБД, табличное хранение, отношения, ключи и индексы, блокировки и транзакционность).
CC-BY-SA-4.0/Docker-ce30.0
> алгоритмических языков
CC-BY-SA-4.0/Docker-ce30.0
лолкек
yopp
Базист!
yopp
Мне кажется на нас испытывают боевой хантинг
Anonymous
тян = эйчар
Alina
Ой всё)
Alex
А ужин при свечах с хр будет ?
Alex
:)
Старый
Ой всё)
😂и главная женская фраза
tenni
Вилка не указана - можно сразу бан
там немного, иннополис же, в домах трещины еще если снимать там придется