
yopp
17.07.2016
15:21:14
можно
какая разница какие у тебя таблицы вообще :)

Alexander
17.07.2016
15:21:36
так данные потеряются

Google

yopp
17.07.2016
15:21:45
так ничего не удаляется
я там выше написал

Alexander
17.07.2016
15:22:37
ну вот старая версия - таблица А и Б, новая версия, таблица А, Б, В, в таблицу А и Б добавлены fk на В

yopp
17.07.2016
15:23:07
ну, таблица В никуда больше не денется

Alexander
17.07.2016
15:23:09
если мы откатываем и fk остаются - старые скрипты не знают про них и при попытке что-то там отредактировать - ошибка

yopp
17.07.2016
15:23:10
она там навсегда
никуда БД не откатывается
вообще

Alexander
17.07.2016
15:23:32
окей, тогда код возвращаем старый
а бд новая
так?

yopp
17.07.2016
15:23:36
я ещё раз повторяю: НИЧЕГО ВООБЩЕ НЕ УДАЛЯЕТСЯ
да

Google

Alexander
17.07.2016
15:23:52
но старый код не знает про новые фк в базе данных
и при редактировании тех кортежей будут ошибки
он просто не будет догадываться, что там какие-то фк ещё есть
допустим, они обязательные и при попытке сохранить будет ошибка

yopp
17.07.2016
15:24:54
такой подход требует изменения подхода к проектировнию субд
конечно твои обычные практики работать не будут
и к разработке тоже требования меняются
сначала больно и обидно, стыдно, а потом всё разработалось и уже стало приятно и хорошо
в воскресенье в 4 утра ты получил от page duty нотис: шеф, всё пропало, я откатилась на прошлый билд, ошибки пропали, спи спокойно

Semyon
17.07.2016
15:26:56
Слушай, @dd_bb, а накидай статей вот про это вот с БД?
Я просто совсем ничего про реальность БД не знаю
звучит круто

Alexander
17.07.2016
15:27:25
так сделать можно и в общем-то я так и делаю
но это всё как-то криво
то есть да, я вот так же разрешаю пустые фк

yopp
17.07.2016
15:27:50
у них давно были несколько телег по этому поводу

Semyon
17.07.2016
15:28:35
спасиба

Google

yopp
17.07.2016
15:28:52

Alexander
17.07.2016
15:29:06
ну, возникает технический долг
на добавление потом not null
на эти фк

yopp
17.07.2016
15:29:37
если ты потом добавишь not null, ты не сможешь откатится

Alexander
17.07.2016
15:29:41
да

yopp
17.07.2016
15:30:09
по этому мне нравятся документо-ориентированные бд
вся эта беготня с консистентностью уже головная боль приложения

Alexander
17.07.2016
15:30:47
Couchbase?

yopp
17.07.2016
15:31:08
меня говном закидают если я скажу монга :)
но я её готовлю уже сколько, лет 6 наверное?
мы вобщем-то на монге делали один продукт, почти сразу после того как она вышла.

yopp
17.07.2016
15:33:48
2010 или 2011 год, не помню точно
да, наелись с ней говна, я иногда продолжаю его с ней есть, но в остальном оно сильно человечнее чем всякие там кассандры
тогда вообще штука когда у тебя нахуй полетела стойка с праймари и всё само поднялось без какого либо вмешательства с небольшим количеством разорванных запросов казалось прямо космосом
на фоне постгресов всяких, где надо было ручками файлы двигать, а потом попробуй назад мастера поставь, ага
а тут стойку вернули, оно само чонадо сделало и все радуются
а ты только смотришь на демократию
как они там голосуют
ну и шардинг тоже. знай себе реплики добавляй

Google

Alexander
17.07.2016
15:38:35
ну вот а если с PostgreSQL - то можно просто сложный релиз делать несколько недель и протестировать его, а потом 1 раз мигрировать базу и дальше никаких откатов, только полный вперед, не BGD, без технического долга, сразу not null фк сделать и другие изменения...

yopp
17.07.2016
15:39:10
(правда потом выяснилось что map/reduce c output в существующую колелкцию ставит весь кластер раком, потому что создание временной коллекции требует глобальной блокировки на запись, ха-ха)
и ха-ха
я не знаю, в 2016 году уже чонибудь приличное для пг сделали или нет
но раньше это был пиздец и ад, и ты хоть обтестируйся
а повалившиеся друг за другом стойки, это не такое уж и редкое событие

Alexander
17.07.2016
15:41:23
ну, всё равно для бизнеса postgres монгой не заменить

yopp
17.07.2016
15:41:42
у нас как-то аналитический фронтенд для скады работал с монгой и ничо
в соло

Admin
ERROR: S client not available

Semyon
17.07.2016
15:42:09
Я знаю три проекта которые считают Бизнос Аналитику™ для чиновников на монге

yopp
17.07.2016
15:42:11
в смысле это было единственное хранилище

Semyon
17.07.2016
15:42:14
хотя к монке я чот как-то так

yopp
17.07.2016
15:42:35
как и у любой другой субд у монги есть свои хорошие и плохие стороны
плохие стороны заключаются в том, что они выбрали eventually consistent модель и это в некоторых случаях делает какие-то простые вещи сильно нетривиальными
например если усраться как надо аналог транзакций

Alexander
17.07.2016
15:45:58

yopp
17.07.2016
15:46:09
мне нравится идея кассандры, про то что ты можешь сам выбать какие два стула из CAP тебе надо

Alexander
17.07.2016
15:46:10
и связано с финансами

Google

yopp
17.07.2016
15:47:57
ну вот мы сейчас делаем штуку которая работает с баблом, микротранзакции по сути. нам там аналог транзакций понадобился в трёх местах

Semyon
17.07.2016
15:52:40
вы их в итоге на стороне приложения делаете?


yopp
17.07.2016
15:54:03
в итоге я наебался с реализацией тразакций по монговскому феншую вдоль и поперёк и получил пиздец, а не код. в итоге мы приняли стратегическое решение сделать тупо всё идемпотентным, так чтоб если операция свалилась, мы могли её свободно повторять до упора
в нашем случае это работает
транзакции в монге на уровне приложения это очень сложно
в итоге всё сводится к тому что ты как идиот раз десять долбишься в базу
на каждый чих
а если долбятся двое, то всё очень сложно и лайвлоки и дедлоки и вот эти все многопоточные развлечения
https://docs.mongodb.com/manual/tutorial/perform-two-phase-commits/
вот например как они предлагают с этой проблемой работать
это ещё работает с одной коллекцией, когда у тебя коллекций несколько, то лучше настя
я решил накидать прототип, и когда у меня получилось в итоге полторы тысячи строк кода, я понял что нет, нихуя не работает :)
я вот эти последние 10 лет в основном цифрами и занимаюсь. бабки и всякая ололитика.
блядь, шесть вечера а я всё ещё докера не доебал :(
отдохнувший завтра буду


ptchol
17.07.2016
16:42:41

Semyon
17.07.2016
16:43:13
опять срач будет

yopp
17.07.2016
17:04:04
можно сказать по буквам
про документацию кстати
As can be seen, all image layer IDs are cryptographic hashes
тоесть если раньше слои просто uuid генерировали (кто там говорил про айдишник машины?)
судя по исходникам у них там какой-то tarsum свой