
yopp
10.05.2018
16:19:19
Лучше всего посмотреть не умеет ли API возвращать обновления с некоторой точки

Alexandr
10.05.2018
16:19:19

yopp
10.05.2018
16:19:50
не умеет.
Ну тогда вам нужно самостоятельно делать дельты

Google

Nick
10.05.2018
16:19:52
в том что первый вариант используется во вских ОРМ, а второй треубет ручками все делать

Ivan
10.05.2018
16:19:56
Либо перезаписывайте, либо вычисляйте дельту и обновляйте на нее

Илья
10.05.2018
16:20:17
ответ апи не содержит временной метки о том, когда менялась инфа о товаре?

yopp
10.05.2018
16:20:46

Илья
10.05.2018
16:21:15
если нет, то можно дубовым образом вычислить хеш полученного документа, и если он не совпадает с ранее записанным в базе, то обновлять весь документ (и хеш, конечно, тоже)

yopp
10.05.2018
16:21:29
Можно вообще не вычислять дельты

Nick
10.05.2018
16:21:30
еще не забудьте нужно ли вам определят ьчто данные удалились и их нужно так же удалить из вашей базы

Илья
10.05.2018
16:23:27
всё равно весь документ с апи магазина уже выкачан, скорее всего узким местом будет его получение, а не запись в базу.

yopp
10.05.2018
16:23:35
Берем временную метку начала синхронизации. Вытаскиваем все документы. Добавляем временную метку ко всем документам в виде индексируемого поля _v и записываем в монгу. По завершению синхронизации записываем временную метку в отдельный документ в отдельной коллекции. Дальше когда мы делаем запрос в каталог, мы читаем самую последнюю метку из коллекции меток и добавляем ее ко всем запросам.
Это простейшее версионирование. Вы дальше уже сами у себя можете считать дельты и вообще делать все вещи которые позволяет делать версионирование.

Alexandr
10.05.2018
16:26:23

Nick
10.05.2018
16:26:36
а приходит всегда полный актуальный список?

Google

Nick
10.05.2018
16:27:46
т.е. условно можно будет очистить коллекцию и заново наполнить (никогда так не делайте)

Alexandr
10.05.2018
16:27:51
приходит да, актуальный на текущий момент

Nick
10.05.2018
16:28:43
тогда как выше указал yopp вам необходимы метки времени, чтобы после обновления списка удалять все со старой меткой времени
ну и апдейт просто по _id с переписыванием всех полей, это наверняка будет дешевле чем на каждый док делайть сначала ваборку и потом уже решать надо ли обновлять
ну и чистые апдейты позволят использовать bulk, может какой профит и поулчите

Alexandr
10.05.2018
17:14:48
хорошо. это всё понятно, советы дельные.
сейчас поясню вопрос

yopp
10.05.2018
17:15:44
Апдейт всегда дороже вставки :)

Nick
10.05.2018
17:16:15
хм, интересный ход

Alexandr
10.05.2018
17:17:32
Если у нас эта коллекция под нагрузкой в 100к в секунду запросов, с ней ничего не будет?
если методом удалить всё и вставить по-новой

Nick
10.05.2018
17:17:50
а ведь да и просто потом предыдущую версию потереть, если не нужна. тут наверное вопрос в том какие данные и как они используются

Alexandr
10.05.2018
17:18:14
используются только на чтение

Nick
10.05.2018
17:18:16
100к в секунду

Alexandr
10.05.2018
17:18:24

Nick
10.05.2018
17:19:06
тут смысл такой, что через удаление есть момент когда данных в коллекции нет, и в это время туда полетят запросы, то нормально будет что ничего не вернется?

yopp
10.05.2018
17:19:41

Google

yopp
10.05.2018
17:20:19
У вас кеш быстро перебалансируется. Если места под новые документы хватит без сброса на диск, то возможно клиенты даже ничего не заметят
Плюс вы можете не сразу всем клиентам версию сменить, а плавно менять

Alexandr
10.05.2018
17:20:50

yopp
10.05.2018
17:21:01
Чтоб дать кешу перестроиться

Старый
10.05.2018
17:22:37
https://db-engines.com/en/system/Cassandra%3BHBase%3BMongoDB
@dd_bb на сколько эта таблица ещё соответствует действительности

yopp
10.05.2018
17:23:39

Alexandr
10.05.2018
17:23:51
Без апдейтов
Вчитался. понял. Идея хорошая. Тогда нужен какой-то джоб по подчищению старых меток
удаление старых записей, я имею ввиду.

Старый
10.05.2018
17:24:47
selectable replication factor Master-slave replication особенно интересно
просто оч странно что в 2018 до сих пор мастер слейв

yopp
10.05.2018
17:27:48

Старый
10.05.2018
17:28:48

yopp
10.05.2018
17:30:18
В том, что в монге тоже можно в три мастера. Это шардинг и есть

Старый
10.05.2018
17:31:43

yopp
10.05.2018
17:32:06
Ну, шард с зонами

Старый
10.05.2018
17:35:46
Ну, шард с зонами
разница в том, что когда заходишь в доку и читаешь про репликацию, про это сразу не написано, и честно сказать, если надо в голове держать ещё 5-6 субд, в голове это может не отложится

yopp
10.05.2018
17:36:45
Так репликация это просто один из механизмов. :)
Она скорее не о масштабировании хранилища, а о его устойчивости.
Более того, документация в монге явно говорит о том, что так масштабировать не стоит

Google

Старый
10.05.2018
17:39:02

yopp
10.05.2018
17:39:31
Все три вместе?

Старый
10.05.2018
17:39:35
точнее это будет одна из тем, там и оракл будет и постгре, и ci\cd

yopp
10.05.2018
17:40:08
Интересно. А что за индустрия?

Старый
10.05.2018
17:40:15
телеком

yopp
10.05.2018
17:40:38
Биллинг?

Старый
10.05.2018
17:40:45
да

yopp
10.05.2018
17:41:17
??
Очень интересно!
А монга как хранилище чего выступает?

Старый
10.05.2018
17:42:22
пока безпонятия
я знаю что там oracle под счета и тп, постгрес под личные кабинеты, hbase под олапы
но у них ещё где то кассандра и монга
а ещё там сейчас идея всё в openshift запихать

yopp
10.05.2018
17:44:38
Держите в курсе, прямо очень интересно
Я про openshift вообще толком ничего не знаю
Это редхат вроде?

Старый
10.05.2018
17:45:37

yopp
10.05.2018
17:45:59
Прикольно

Google

Старый
10.05.2018
17:46:24
я бы согласился, если бы они в прод не тащили базы в контейнерах

yopp
10.05.2018
17:46:46
Контейнеры поехали в ынтерпрайз по взрослому

Старый
10.05.2018
17:46:59
если бы менеджент понимал их минусы

yopp
10.05.2018
17:48:06
Да ладно. У меня вполне получилось собрать монгу в ранчере. Да, никаких автоматических фейловеров на уровне контейнеров, никакого гибкого стораджа.
Работает как часы
Очень удобно: кластер обновляется в три кнопки
Откатывается тоже в три

Amir
10.05.2018
17:48:48

Старый
10.05.2018
17:48:54

Amir
10.05.2018
17:49:39
у меня к ранчеру одна претензия, как-только нагрузка выше средней, он умирает

yopp
10.05.2018
17:49:45

Amir
10.05.2018
17:50:07
он начинает умирать тупо от кол-ва метрик летящих в него :)

yopp
10.05.2018
17:50:51
Ну не знаю. Я заливал 5 гигабит данных в секунду в тестовый кластер, и всё было гладко :)

Старый
10.05.2018
17:51:25
?мне вот интересно уже как это дело всё в контейнере мониторить нормально

yopp
10.05.2018
17:51:35
А в стартапчике у нас 9 виртуальных хостов только под CI/CD было

Amir
10.05.2018
17:51:51
ну давай так, если запулить какой-то nginx голый и долбануть в него ab - через некоторое время кол-во метрик идущих в дашборд через вебсокет, начнет тупить, потом исчезнет и ранчер перестанет отвечать

yopp
10.05.2018
17:52:07
Там тимсити в рабочее время кипятила три хоста без перерывов.

Amir
10.05.2018
17:52:13
там cadvisor сумасходит

yopp
10.05.2018
17:52:43
А вы его давно пробовали?

Amir
10.05.2018
17:52:44
ладно фиг с ним, вдруг починили)

yopp
10.05.2018
17:52:51
Это мне кажется в 2.0 уже починили