
Nick
02.10.2018
14:57:58
)))

yopp
02.10.2018
14:58:24
перед тем как заливать большие массивы, чтоб потом не было больно и обидно, лучше всегда на каком-то срезе пробовать

Nick
02.10.2018
14:58:42
кстаит а если я сейчас кластер перезагружу он эти данные не потеряет? т.е. я все так же смогу на конкретном шарде их юзать?

yopp
02.10.2018
14:58:48
потому что на условном 1 гигабайте отлаживать быстрее чем на десятке терабайт %)

Google

Nick
02.10.2018
14:58:53

yopp
02.10.2018
14:59:11
а зачем его тогда назад сливать?

Nick
02.10.2018
14:59:54
только реальных данных а не их копии. сначала поигрался никаких пробелм не было, когда перелил срез на 50лямов и шардинг начал на полную работать, то вылезла такая херь
есть коллекция дохера большая (9млрд доков/12Тб/4шарда) решил выделить горячий сет в отдельную коллекцию (50млн/70Гб/4шарда) , попереливал часть данных. прошло полторы недели, чекаю каунтеры по базе и вот наткнулся

Alexey
02.10.2018
15:09:01

Nick
02.10.2018
15:09:35
на каждом шарде raid10 из обычных, 1500рпс не напрягаясь на кластер

yopp
02.10.2018
15:39:15
зоны же есть

Nick
02.10.2018
15:39:45
зоны не подходят, у меня шард ключ не позволяет отзонить свежие данные от старых

yopp
02.10.2018
15:40:06
в ключе даты нет?

Nick
02.10.2018
15:40:17
нет

yopp
02.10.2018
15:40:32
а что в ключе есть?

Nick
02.10.2018
15:40:58
некоторый индентификатор устройства

Google

Nick
02.10.2018
15:41:09
с которого идут доки

yopp
02.10.2018
15:41:24
и всё?

Nick
02.10.2018
15:41:28
да

yopp
02.10.2018
15:42:07
пойти от обратного и выселить холодные устройства? :)

Nick
02.10.2018
15:42:15
все горячие
поэтмоу и зоны не подходят

yopp
02.10.2018
15:45:01
нет повести печальнее
конечно отсутствие механизма изменения шард ключа — одна из самых больших проблем

Nick
02.10.2018
15:45:42
причем можно было бы выделить холодные данные, но изза необхоидмости иметь доступ по ключу, в котором нет даты - вот что обламывает

yopp
02.10.2018
15:46:19
а в чём проблема? date: { gte: MinKey, lte: MaxKey }
дату всегда можно ставить в постфикс индекса
хотя для временных рядов я за дату в префиксе и постфикс какой-то, который хорошо дробится
и делать скрипт, который чанк с MaxKey будет пилить по постфиксу и балансировать по шарду, чтоб когда дата новая наступила, данные размазались

Alexey
02.10.2018
15:50:09
вот и у нас похожая ситуация
10 млрд 4 шарда, все в одно коллекции и ключ не позволяет дробить. и тоже идентификатор устройства

yopp
02.10.2018
15:51:13
если тоже временные ряды, то вот выше
к сожалению иначе hot/cold будет сложно сделать
так можно по дате сделать зоны
и подкручивать их постепенно
у временных рядов обычно время является самым весомым аргументом в пользу «горячести»

Nick
02.10.2018
15:52:39
уникальный ключ ID-K-N. id - постоянно, k меняется периодически, n номер докав пределах id-k
если я делаю шард ключ ID-DATE и часть данных улетает в другую зону, то монга нормально сможет выбрать по связке ID-K-N ?

Google

yopp
02.10.2018
15:53:57
если дата в постфиксе то балансировку по дате не сделать

Nick
02.10.2018
15:54:12
вот это и остановило меня
прост подумал может всетаки чтото упустил и хотя бы сейчас можно будет переделать

yopp
02.10.2018
15:54:46
а какой порядок устройств?

Nick
02.10.2018
15:54:52
200к
20кк событий в сутки

yopp
02.10.2018
15:55:01
а что переделать?

Nick
02.10.2018
15:55:05
все)
типа я уже подумываю переделать то что сейчас есть, но пока точно не придумал как

yopp
02.10.2018
15:55:39
ну если есть возможность шард-ключ поменять, то ключ типаа {time: 1, k: 1, n: 1}
у вас горячие последние N дней?

Nick
02.10.2018
15:57:24
есть необходимость помимо хранения передавать в смежные системы, поэтому в зависимости от вида ошибок и ее доступности данные могут не остывать неделями
самый большой промежуток был около 2 с половиной недель

yopp
02.10.2018
15:58:09
а если ошибок нет?

Nick
02.10.2018
15:58:22
то полчаса-час

yopp
02.10.2018
15:58:43
т.е. горячие всего 1.6м документов?

Nick
02.10.2018
15:58:54
гдето так

yopp
02.10.2018
15:59:02
а какой read:write рейт?
документ прилетел и всё? или он может обновляться?

Nick
02.10.2018
16:00:20
может, поэтому и полчаса, если не прилетел дубль или еще чтото, то он отсылается и фактически охлаждается. дубли событие не очень редкое

Google

yopp
02.10.2018
16:01:44
т.е. по сути документы потом никак не используются?

Nick
02.10.2018
16:01:55
было бы хорошо условно все что больше месяца тупа скидывать кудато, но пока не было желания разделать хранилище, собственно были большие проблемы по выборке из монги по типу запрос отрабатывает полчаса на получение нескольких тыщ горячих доков
да

yopp
02.10.2018
16:02:17
hot/warm/cold

Nick
02.10.2018
16:02:26
вот сейчас для этого и делаю вторую коллекцию, т.к. даже тупо индексы в память не влезают

yopp
02.10.2018
16:02:44
дату в префикс, в постфикс какие-то нормально распределённые айдишники
которые в запросах учавствуют
cold всё что больше месяца
в hot последние несколько часов
в warm пока есть ошибки

Nick
02.10.2018
16:09:18
я просто чую что сама структура данных немного не правильна под мою задачу, т.к. делалось с небольшим заделом на будущее как обычно и само собой в наличии преждевременные оптимизации. нужно думать

yopp
02.10.2018
16:23:48
:)

Nick
02.10.2018
16:52:32
:)
rs3 : { "rs0" : 0, "rs3" : 73568 }
вот это "rs0" : 0 меня беспокоит, как монге сказат ьчто все ок и ей нужно дропнуть инфу

yopp
02.10.2018
16:59:41
это что значит вообще?

Vova
02.10.2018
17:00:21
$unset если я правильно понял что нужно

Nick
02.10.2018
17:03:37
количество доков на шардах,
db.runCommand({count: "aaa",
это что значит вообще?
{
"shards": {
"rs2": 0,
"rs3": 70119
},
"n": 70119,
"ok": 1
}
вот так наверное понятнее будет

yopp
02.10.2018
17:14:17
тебя беспокоит что 70к документов осталось?

Nick
02.10.2018
17:14:55
наоборот, что в rs2 0, т.к. данный чанк должен быть полностью на rs3

Google

Nick
02.10.2018
17:15:13
я взял count по диапазону чанка
походу понял это бага монги, она почемуто игнорит то что в $lt передается верхняя граница и она не должна включатсья в поиск
натравил балансер на эту коллекцию в логах появилась такая дичь
mongod: SHARDING [conn273068] Refreshing chunks for collection docs_hot based on version 584|232||5bab860e1195cf944681375d
mongod: SHARDING [CatalogCacheLoader-4511] Refresh for collection docs_hot took 3 ms and found version 584|232||5bab860e1195cf944681375d
mongod: SHARDING [conn273068] can't accept new chunks because there are still 840 deletes from previous migration

Max
02.10.2018
18:32:43
надо теперь ждать, пока наудаляет то, что смигрировало
сам сталкивался не единожды
и, как обычно, очень невовремя :)

Nick
02.10.2018
18:34:40
просто единственное что нашел в инетах, помимо описанной баги в жире монги, что люди ребутали шарды и тогда собственно курсоры самособой отваливались

Evgeny
02.10.2018
21:23:22
а как можно в монго искать сразу по 2+ коллекциям? не по связанным сущностям, а просто независимые коллекции. и там и там есть допустим поле "name" и вот по ним искать. киньте пример или ссылку в доку)

yopp
02.10.2018
21:26:40
два запроса сделать

Evgeny
02.10.2018
21:29:47
ну а если это поиск в приложении с пагинацией, то склеивать их руками?

yopp
02.10.2018
21:35:25
да
а как так случилось что у вас несколько коллекций по которым надо пагинацию делать?

Evgeny
02.10.2018
21:39:26
просто на UI текстовое поле, в котором можно найти несколько типов сущностей (представленные разными коллекциями), допустим, кредит, вклад, и.т.д.

yopp
02.10.2018
22:11:09
тогда да, руками склеивать
ну или сделать ещё одну коллекцию, куда складывать что-то по чему ищут и ссылку на документ
но это уже попытка поисковый движок переизобрести

AstraSerg
03.10.2018
08:02:01

Иван
03.10.2018
10:40:08
ребята питонисты, кто пользовался асинхронным драйвером для монги???
вот нашел мотор https://github.com/mongodb/motor
или мб другой посоветуете?\

Constantin
03.10.2018
10:50:13

Иван
03.10.2018
10:50:39