
Maksim
16.04.2018
17:52:34
Не, его ща пол года так и не загрузили работой)
Он в общем ютубчик смотрел)

Roman
16.04.2018
18:02:21

Bohdan
16.04.2018
18:05:51
Некрофилия какая-то. Центуру бы ещё помянули)
меня как - то мой научрук попросил помочь за деньги дочери его друзей
девочка училась на втором курсе в каком - то пафосном экономическом вузе в Москве, но на специальности, связанной с программированием (название не помню)
так вот у них предмет "базы данных" был на примере Clipper
я посмотрел на это, погрустил, нашёл ей побольше книг по теме и отказался - нервы дороже

Google

Bohdan
16.04.2018
18:06:21
и это было года два назад максимум, если что

Roman
16.04.2018
18:07:09

Bohdan
16.04.2018
18:08:11

Roman
16.04.2018
18:08:53

Bohdan
16.04.2018
18:09:37
тогда не повезло - у меня тоже пять лет назад все это было...

Roman
17.04.2018
05:29:50
Как думаете можно используя CQRS + Event Sourcing полностью отказаться от реляцийниих БД и перейти на NoSQL?

Maksim
17.04.2018
05:45:18
Твм ключ/значение) стримы можно хранить без проблем в любой)

Bohdan
17.04.2018
05:53:54
я думаю, речь про документную скорее
монга и прочие

Maksim
17.04.2018
06:24:12
Монга чет не зашла(

Roman
17.04.2018
06:44:36
мне интересно смогу лия отказатся от мускуля и перейти на монгу полностю. например: Будет ли удобно работать з большим скоупом ивентов? Будет ли удобно хранить юзеров и пароли.

Dmitriy
17.04.2018
06:46:35
лучше отказаться от категоричных выборов, мнений и т.п.

Google

Dmitriy
17.04.2018
06:46:49
каждый инструмент создается для своей области

Дмитрий
17.04.2018
06:48:24
Вброшу, но хайп по NoSQL был ошибкой
Это радикально узкоспецифичный инструмент

Ярослав
17.04.2018
06:49:57

Roman
17.04.2018
06:51:08

Дмитрий
17.04.2018
06:51:31
Пофиксил

Roman
17.04.2018
06:52:13

Ярослав
17.04.2018
06:52:36

Дмитрий
17.04.2018
06:52:45
Я считаю, что в абсолютном большинстве кейсов эффективнее обходиться без NoSQL, учитывая скорость работы и поддержку jsonb в постгре
А откуда у вас денормализованные данные — это лень или обстоятельства?
Я могу ошибаться, но первое встречается гораздо чаще второго

Ярослав
17.04.2018
06:53:30

Дмитрий
17.04.2018
06:54:46
По сути как кэш работает? ?
Ну и опять же, jsonb

Ярослав
17.04.2018
06:55:33

Дмитрий
17.04.2018
06:55:44
¯\_(ツ)_/¯

Ярослав
17.04.2018
06:55:47
особенно когда по полям, внутри jsonb надо фильтрацию делать
По сути как кэш работает? ?
кеш кешируют результат, денормализация убирает лишние джойны. Когда приходится джойнить таблицы даже лям на лям записей, уже грустно

Maksim
17.04.2018
06:57:59

Google

Roman
17.04.2018
06:59:12
я ж могу создать CreateUserEvent, и потом по почте найти ивент и юзера в нем

Maksim
17.04.2018
06:59:29
если у тебя нету какого-то индекса, не сможешь
индекс - не в контексте конечного стораджа. А в контексте какого-то kv, который хранит связь между требуемым значением и агрегатом
https://github.com/mmasiukevich/service-bus-demo/blob/master/src/Customer/Services/RegisterCustomerService.php#L58
как-то так.
если хранить в jsonb в каком-нить постгресе и искать финальную версию email'а юзера в громадном списке событий - херня выходит

Roman
17.04.2018
07:02:29
ясно. спасибо

Maksim
17.04.2018
07:04:25
при es у тебя нету кучи табличек, где данные красиво разложены. Поэтому поиск без представлений - занятие странное.
а представления (зависит от реализации, конечно), тоже не самая актуальная штука

Roman
17.04.2018
07:44:51
Maksim Masiukevich - смотрю твой код, можеш расказать зачем ти хочеш перейти на AmPHP. "Get away from callback hell (change ReactPHP to AmPHP)"

Maksim
17.04.2018
07:46:35
скажем так, вся срань с промисами там изящно спрятана

Roman
17.04.2018
07:46:56
суть у них одна и таже я верно понял?

Maksim
17.04.2018
07:47:09

Roman
17.04.2018
07:47:17
ясно) спасибо посмотрю в ету сторону

Aleh
17.04.2018
09:37:21
Хоть индексы добавляй, хоть фильтруй, хоть на лету строй
И все равно быстрее монги

Ярослав
17.04.2018
09:45:18

Bohdan
17.04.2018
09:49:23
пинг

Aleh
17.04.2018
09:54:27
пруфы?
http://tiborsimko.org/postgresql-mongodb-json-select-speed.html
http://erthalion.info/2017/12/21/advanced-json-benchmarks/

Евгений
17.04.2018
09:59:55
пинг

Roman
17.04.2018
10:03:36
все переходим на посгрес все

Google

Hell
17.04.2018
10:22:21

Maksim
17.04.2018
10:24:42
монга ок для лентяев и любителей apt-get install) если смотреть дальше и больше, начинается развлекуха и её необходимость вызывает вопросы

Tex
17.04.2018
10:25:22

Maksim
17.04.2018
10:25:55

Hell
17.04.2018
10:33:16
detached metadata "injecting mapping dictionary from composition root"
у меня инстанцы IBasketCalculator уже имеют зависисмости в конструкторе
т.е. они должны быть в контейнере
как их проще добавить в SimpleInjector ?


Roman
17.04.2018
12:05:39
Одним из преимуществ использования Event Sourcing пишут о возможности восстановления объекта до нужной точки (состояния). Предположим что я использую Doctrine для работы с БД. И я удалил на каком-то из этапов жизненного цикла заказа колонку с БД в которой был какойто атрибут заказа. Как я смогу создать обект на основе ивента где еще есть информация о колонке? Получается что я теряю цилоснисть объекта. И во время востановлення не будет найден нужна колонка и я получу ошибку.
Или я неверно понял возможность востановления?

Bohdan
17.04.2018
12:06:10

Maksim
17.04.2018
12:06:13
нет никаких колонок с заказами
у тебя есть максимум 2 таблицы

Shmaltorhbooks
17.04.2018
12:06:46

Sergey
17.04.2018
12:06:49
короч судя по характеру вопроса - не стоит тебе тула лазить пока.... рано

Roman
17.04.2018
12:07:21
я думал мы храним состояние обекта на момент когла пришол ивент

Sergey
17.04.2018
12:07:34
нет, с ES ты хранишь ивенты

Maksim
17.04.2018
12:07:34
мы храним список событий

Sergey
17.04.2018
12:07:35
и только их

Google

Bohdan
17.04.2018
12:07:36

Maksim
17.04.2018
12:07:47
а не состояние. состояние - следствие наступления событий

Sergey
17.04.2018
12:07:48
снэпшеты данных построенные по этим ивентам - это скорее как кэш
а не как "храним"
потому если тебе надо модель данных поменять - ты просто проигрываешь события заново
если у тебя у сущности по 10-100 событий то можно вообще даже снэпшеты не делать

Roman
17.04.2018
12:08:31
чтоб потом пройтися по цепочки и получить обект

Sergey
17.04.2018
12:08:53
entity = leftFold(events)

Roman
17.04.2018
12:09:29
да.. пока сложно идет информация.. нужно еще разбиратся. спасибо

Sergey
17.04.2018
12:10:19

Maksim
17.04.2018
12:11:18

Hell
17.04.2018
12:25:35

Bohdan
17.04.2018
12:49:21
господа, возвращаясь к уходу от сеттеров
по вашему мнению, корректно ли использовать методы вроде $foo->change($firstName, $lastName, $email, $phone) для штук вроде обработчика формы редактирования (утрированно)?

Maksim
17.04.2018
12:51:32
я бы сделал 2 объекта и на 2 метода разделил)