@MongoDBRussian

Страница 94 из 342
George
01.06.2017
18:17:33
И кстати, как обновлять индексы на WiredTiger? Слышал что раньше на mmap он сам обновлял. Сейчас нужно RebaseIndexes или что-то такое?

yopp
01.06.2017
20:09:26
эм

ускоряют, но не исключают. операция чтения — дорогая операция в любом случае. вставка существенно дешевле. индексы автоматически обновляются вместе с данными, иначе в них никакого смысла нет. ничего для этого делать не надо

георгий
02.06.2017
11:07:55
Почему чтение дороже вставки?

Google
георгий
02.06.2017
11:08:27
Запись на диск всегда дороже чтения с него, разве нет?

yopp
02.06.2017
11:08:31
Нет

Vitaliy
02.06.2017
11:08:38
поиск же

георгий
02.06.2017
11:08:39
Почему?

yopp
02.06.2017
11:09:12
Во-первых, запись в монгу нельзя сравнивать с сырым дисковым io

Как и чтение.

георгий
02.06.2017
11:09:33
За счёт wired Tiger?

yopp
02.06.2017
11:09:33
Это гораздо более сложный и затратный процесс, который в себя включает огромное число операций.

георгий
02.06.2017
11:10:04
Есть что читнуть по теме

?

yopp
02.06.2017
11:10:17
Исходники монги?

strace?

Доку по архитектуре wt?

Google
yopp
02.06.2017
11:11:32
Во-вторых, чтение в монге это сложная операция, так как она происходит в несколько стадий. В лучшем случае это index fetch и document fetch.

В случае с записью в лучшем случае это index fetch (_id duplicate check) + index insert + document insert.

Если брать холодный сторадж, то запись будет быстрее, так как она не требует поиска данных.

В общем случае в вакууме. В реальности всё гораздо сложнее, так как есть множество уровней кешировния.

А простые операции чтения или обновления документов, где всё ограничивается index fetch крайне редкое явление.

Но в среднем когда мы вставляем документ, необходимо сделать fetch и несколько update в индексы и один insert в document storage. Что будет сильно проще чем update, в котором обычно есть условия.

А это уже многоуровневая операция, обычно со сканированием индексов. А это уже другие порядки

Но вообще, исходя из постановки, задача выглядит как предварительная оптимизация. Смысла мерять сколько можно вставить документов в монгу из вашего драйвера — нет.

Nick
02.06.2017
11:22:10
Где хранится индекс на шардированной коллекции, если в нем нет префикса из шард ключа?

yopp
02.06.2017
11:22:45
В шарде индексы всегда хранятся на самом шарде.

георгий
02.06.2017
11:22:45
@dd_bb развернутый ответ, спасибо

yopp
02.06.2017
11:23:11
Так что ответ: на самом шарде.

Sergey
02.06.2017
11:24:01
Эм, при записи всё равно будет fsync делаться, почему она бустрее чтения должна быть?

yopp
02.06.2017
11:24:42
Разница межу использованием запроса с указанием shard key и без, только в том, что в первом случае планировщик исходя из данных о диапазонов шард-ключей будет знать на какой конкретный шард отправить запрос. В случае если ключа нет, запрос будет отправлен на все шарды

Nick
02.06.2017
11:25:13
Ок, спасибо. Про сами запросы итак понятно

yopp
02.06.2017
11:25:44
Шард это просто кусок коллекции.

Sergey
02.06.2017
11:26:26
С чего вдруг
Ну ок, только при "j: true"

хотя, я бы не рискнул писать без этой опции

yopp
02.06.2017
11:31:50
Я бы вообще предложил не обсуждать что быстрее или медленнее в отрыве от конкретного кейса и конкретных данных.

Google
yopp
02.06.2017
11:32:11
Потому что ответ: ¯\_(ツ)_/¯ или как повезёт

Dmitry
02.06.2017
11:34:42
посоветуйте плиз хостинг кроме AWS с большим IOPS для монги

смотрю на vultr, но хз

думаю может реально съехать с aws

yopp
02.06.2017
11:36:05
А бюджет какой?

Dmitry
02.06.2017
11:36:52
Ну 300-400 баксов

Вообще любой если дешевле AWS

:)

yopp
02.06.2017
11:37:19
Посмотри на ovh public cloud

Dmitry
02.06.2017
11:37:51
Да я думаю уже может дедики брать а не облака

Если такие засады с io

А, вижу там есть

yopp
02.06.2017
11:41:39
Могу записать в waiting list, для нашего решения, но боюсь что с вашим объёмом смыла пока нет. К нам будет выгодно идти с террабайтом и выше.

Dmitry
02.06.2017
11:42:29
Да, пока ещё мало...да может и нет смысла дёргаться даже...как вырастим можно будет и съехать

Slava
02.06.2017
12:40:00
а hetzner'овские vps сильно хуже чем ovh public cloud?

Denis
02.06.2017
15:21:19
Если такие засады с io
А ты средствами монги мерил? Просто например mongoose если не дописать .lean() отдаёт монгус объект, который на больших объёмах замедляет общее время работы кода в 5-10 раз по сравнению с чистым JS объектом. Это я намекаю что возможно проблема где-то ещё может быть.

Dmitry
02.06.2017
15:23:52
ну то есть код дергает запросы, монга начинает очень много читать

как я это вижу судя по статистике и графикам

ну и там на самом деле агрегации

Google
Dmitry
02.06.2017
15:25:17
в цикле

Denis
02.06.2017
15:25:30
А, тогда да. Я думал ты померил просто грубо и вкатился

С CPU проблемы, угу

Dmitry
02.06.2017
15:26:01
ну вот у меня с CPU все ок

и RAM полно

а диску плохеет

Denis
02.06.2017
15:27:18
А индексирование проверял? Может есть что поправить

Dmitry
02.06.2017
15:28:09
ну индексы работают..

вначале без индексов у меня запросы выполнялись по 5 минут

ну и в итоге ведь я читаю полные документы

то есть индекс помогает быстро его найти, но в итоге прочитать то его нужно все-равно :)

yopp
02.06.2017
15:29:21
Денис мысль говорит. Сделай explain

Dmitry
02.06.2017
15:29:46
ок, проверю

сейчас правда сделали клинап и порезали данные в 3 раза )

но скоро будет та же история так что посмотрю

хм, ну вроде IXSCAN везде

на что еще смотреть?

Denis
02.06.2017
15:46:34
У тебя же update, он после обновляет индексы

Dmitry
02.06.2017
15:47:09
не, у меня апдейты в другом месте, в самом тяжелом месте где начинаются проблемы с диском count & aggregate, внутри цикла ?и они оба используют индексы

upsert() и все такое не критично грузят, и это другой сервис делает

Google
Pavel
03.06.2017
10:20:43
Привет! Как в монге можно найти объект по значению, которое есть в списке у атрибута объекта?

Igor
03.06.2017
10:21:35
https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/ не?

Pavel
03.06.2017
10:21:42
https://webapi.steemdata.com/Accounts?where={%22id%22:%20174758} Нужно найти по posting. key_auths что бы этот ключ был там STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V

я с монгой никогда не работал, не получается почему то.. :(

получается делаю так: 'posting.key_auths': {'$elemMatch': {'$eq': 'STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V'}}

есть идеи?

yopp
03.06.2017
10:44:19
Покажи документ в котором ты хочешь сматчить (не в чат, на gist.github.com или пастбине)

Pavel
03.06.2017
10:44:38
я ссылочку оставил

https://webapi.steemdata.com/Accounts?where={%22id%22:%20174758}

yopp
03.06.2017
10:44:52
Вообще тебе не надо $eq.

https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#single-query-condition

По ссылке 400

Pavel
03.06.2017
10:49:22
просто я использую $eq так как там обычный список со строками и числами вот он ['STM5fZi2pQsAQq4UvD8cyBtD5Hu9cJj52Q9i6cBsMFGvC8JfHmcz6', 1]

yopp
03.06.2017
10:51:11
Ты можешь куда-то репоснуть пример документа? По ссылке на айпаде просто текст рендерится, видать там xml

Pavel
03.06.2017
10:53:17
там xml все верно, момент

<resource> <posting> <key_auths> ['STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V', 1] </key_auths> <weight_threshold>1</weight_threshold> </posting> </resource>

короткая версия xml документа

у меня есть ключ STM6a4GQKwLokWPz6wJHzC5yEfxcu9dkW1GXhcJCZCfsMmRj8sg9V

Страница 94 из 342