
Alex
21.05.2017
07:21:31
что там, хайп по эликсиру умер уже?
https://github.com/theSteveMitchell/after_party
Как вы мигрируете данные в проде?
я тут вот про этот гемчик вспомнил.

Google

Roman
21.05.2017
07:30:32

Alex
21.05.2017
07:30:43
можно забыть какие таски уже запускал а какие нет.

Roman
21.05.2017
07:31:05
приведи пример

Alex
21.05.2017
07:33:02
Пример - команда из пяти девелоперов, есть тимлид который выполняет роль девопса
Ему нужно срочно те фичи которые сдали смержить и задеплоить на прод
бегать и искать какие миграционные таски добавили или куда то их записывать - геморойно.

Igor
21.05.2017
07:39:51

Roman
21.05.2017
07:46:55
я имею в виду примеры миграционных тасок?
типа импорт дёрнуть или что?
или сами migrations

Alex
21.05.2017
07:50:38
Перекинуть top level поле в json филд или наоборот.
или тот же импорт да.

Люда (не зайка)
21.05.2017
08:54:22
?

Google

v
21.05.2017
08:54:50

Klim
21.05.2017
09:08:37
Даже не представляю, как в нашем чатике можно не быть зайкой.

Alex
21.05.2017
09:18:15

Klim
21.05.2017
09:22:14
Error: can't modify frozen String

Alexander
21.05.2017
09:26:26

Плюшка
21.05.2017
09:26:58

desmond
21.05.2017
09:29:52
Унутре миграции же
миграции не для данных https://robots.thoughtbot.com/data-migrations-in-rails

Alex
21.05.2017
09:29:59
не нада так делать.

Alexander
21.05.2017
10:01:13

Alex
21.05.2017
10:01:38
простой кто оплачивать будет? )

Alexander
21.05.2017
10:02:23

Alex
21.05.2017
10:02:28
нет
это данные.
И их может быть ОЧЕНЬ много
если это сделать как часть миграции то сервис будет простаивать пока миграция накатывается.

Alexander
21.05.2017
10:04:11

Alex
21.05.2017
10:04:22
о, городить реплику, да, это гораздо проще.

Alexander
21.05.2017
10:04:34
как та же капистрано делает: папочку создала, всё подготовила — резко заменила

Google

Alex
21.05.2017
10:04:35
это у тебя мастер-мастер получается?

Alexander
21.05.2017
10:05:00
то же самое с БД можно провернуть: вторую бд создал, всё настроил, и поменял. но там посложнее с данными будет, да

Alex
21.05.2017
10:05:34
лол, надо пробовать.

Alexander
21.05.2017
10:05:35
слейв подождёт же простоя мастера?

Alex
21.05.2017
10:05:41
Я тоже могу наобум что то сказать.

Alexander
21.05.2017
10:06:03

Alex
21.05.2017
10:06:10
и нашел инструмент который позволяет это делать проще.

Alexander
21.05.2017
10:08:22
и нашел инструмент который позволяет это делать проще.
да. ты сначала спрашивал, что это типа не изменение схемы (хотя тут я не соглашусь вообще никак)
а потом, что типа простой
это две разные проблемы
я тебе сейчас про вторую
по ней инструментов ты вроде не постил
и свои попытки

Alex
21.05.2017
10:08:54
хорошо, давай по другому
приведи пример миграции данных.

Alexander
21.05.2017
10:10:38
приведи пример миграции данных.
я вообще такое впервые слышу. в контексте приложения это странно.
хотя…
ну вот есть у тебя куча записей с пустыми строками, например. а ты хочешь nil сделать. код меняешь, чтобы пустую строку не отдавал, и в базе подчищаешь, не меняя её структуру — вот тут "миграция для данных" ("миграция данных" звучит как их переезд)

Alex
21.05.2017
10:11:07
https://robots.thoughtbot.com/data-migrations-in-rails
Вот тут глупые ребята обитают наверное.

Alexander
21.05.2017
10:11:21
а когда ты, например, удаляешь повторяющиеся email в разных регистрах, и добавляешь индекс уникальности с игнором регистра — ты меняешь схему anyway, попутно затрагивая данные

Alex
21.05.2017
10:11:26
миграция базы данных - миграция схемы
миграция данных - миграция данных.
я не дропаю столбец в моем случае.

Alexander
21.05.2017
10:11:53

Google

Alexander
21.05.2017
10:11:56
схема остаётся?

Alex
21.05.2017
10:11:59
да ...
я перетаскиваю данные

Alexander
21.05.2017
10:12:10
а то "перенос поля" звучит как дроп столбца

Alex
21.05.2017
10:12:11
потом следующим релизом я просто дропаю пустой столбец.

Admin
ERROR: S client not available

Alexander
21.05.2017
10:12:21

Alex
21.05.2017
10:12:28
а до тех пор приложение умеет работать и с тем и с другим

Alexander
21.05.2017
10:12:40

Alex
21.05.2017
10:12:48
хм-хм, дробишь
ну это нормальный способ делать миграции данных и схемы с минимум простоя.
Потому что простой может быть например час, пока все данные смигрируются.
я мигрирую данные на живую, не останавливая приложение.

Alexander
21.05.2017
10:14:11
так, смотри. мне интересно становится.
ты переносишь данные, не меняя схему. например, час. оставляешь столбец. он до следующего релиза чем-то заполняется? очевидно, да, если "и с тем и с другим"

Alex
21.05.2017
10:14:41
нет, он до следующего релиза ничем не наполняется
потому что у меня приложение записывает данные уже в новое место, а читает из двух
в зависимости от того где эти данные есть.
Таким образом я без простоя мигрирую данные.

Alexander
21.05.2017
10:15:17

Alex
21.05.2017
10:15:22
бля

Google

Alex
21.05.2017
10:15:34
Кто тебе сказал что я все перенес?
оно переноситься может час, два, сутки и т.д
приложение при этом должно продолжать работу.

Klim
21.05.2017
10:15:51
ну пока не перенес, читает. как я понимаю.

Alexander
21.05.2017
10:15:55
всё, понял. ок

Alex
21.05.2017
10:16:09
Это обычная практика мигрировать в два шага для минимум простоя.

Alexander
21.05.2017
10:16:24
дальше: после выполнения задачи переноса — там наверняка во время переноса будут добавляться новые данные, которые уже не попадут в выборку, не?
или ты делаешь кучу запросов, условно while exists?

Alex
21.05.2017
10:17:04
почему тебе дважды приходится повторять? ))
потому что у меня приложение записывает данные уже в новое место, а читает из двух

Klim
21.05.2017
10:17:37
так новые данные в новом столбце. даже я уже понял :)

Alexander
21.05.2017
10:17:46

Alex
21.05.2017
10:18:20
это обычный подход в два шага, если простой - непозволительная роскошь, а данные долго мигрируются.

Alexander
21.05.2017
10:18:31
просто пытаюсь оценить затраты, риски и прочее

Alex
21.05.2017
10:19:07
рисков нет если у тебя есть покрытие тестами.