
Dmitry
09.11.2017
10:19:57
а зачем юнионы между ними?

Pavel
09.11.2017
10:20:50

Andrei
09.11.2017
10:20:54
угу

Alex
09.11.2017
10:21:17
Народ помогите плз!

Google

Dmitry
09.11.2017
10:21:25
а какая связь между орм и статистикой?

Maksim
09.11.2017
10:21:55
работа на разных базах реализуется через конфигурацию энтити менеджера(ов).
статистика - не головняк доктрины и аще общего бэкэнда

Pavel
09.11.2017
10:22:09

Maksim
09.11.2017
10:23:12
для этого в принципе ни что не предназначено

Pavel
09.11.2017
10:23:39
Голый SQL прекрасно предназначен.

Dmitry
09.11.2017
10:24:16
э...для olap не предназначена, да

Pavel
09.11.2017
10:24:22
Ну или, как я выше написал, yii2 по крайней мере никак не препятствует, позволяя в рантайме подставлять в класс любой префикс схемы.

Maksim
09.11.2017
10:24:50
если у вас 1 и тот же пользователь имеет доступ во все базы, то это проблема вашей реализации. sql позволяет строить запросы сквозные, но их в жизни увидешь не часто
мухи отдельно, котлеты (статистика) отдельно

Dmitry
09.11.2017
10:25:27
любая орм... если ты приделал орм пофиг какую к olap профилю, то... ну... ты не прав ;)
и да, siteid рулит

Andrei
09.11.2017
10:26:09
вот искал бы проблем сделал через одну схему, таблицу

Google

Maksim
09.11.2017
10:26:24
и в конце контов кто вам мешает из доктрины получить объект пдо и херануть такой же нативный sql запрос?

Pavel
09.11.2017
10:26:54
Ну не бывает так что olap отдельно, орм отдельно. В маленьких/средних компаниях все подмешано понемногу. Надо и систему в порядке держать и по запросу директоров всякую статистику по базе тянуть.
Репорты так вообще одна из любимых тем.

Maksim
09.11.2017
10:28:03
какая задача, такое и решение

Dmitry
09.11.2017
10:28:12
репорты прекрасно живут отдельно рядышком

Maksim
09.11.2017
10:28:49
вы изначально выстроили какую-то ректальную схему, а сейчас героически с ней боретесь, подставляя костыли и ругая доктрину

Pavel
09.11.2017
10:29:16

Maksim
09.11.2017
10:29:33
ну, видимо, вы из числа тех, кто круд клепал всё время

Pavel
09.11.2017
10:29:54
Понятно что в тривальных случаях все ORM движки работают примерно хорошо.

Maksim
09.11.2017
10:30:23

Adel
09.11.2017
10:30:58

Pavel
09.11.2017
10:31:33
siteid не рулит. Это будет вмешивание в структуру абсолютно всех таблиц и куча доп условий в запросах. Кроме того, если какому-то клиенту понадобится свое эксклюзивное изменение в схеме, то облом.

Maksim
09.11.2017
10:32:06
тогда глупый вопрос: почему sql?

Andrei
09.11.2017
10:32:07

Pavel
09.11.2017
10:32:13

Maksim
09.11.2017
10:33:58
просто в вашем "эксклюзиве" логика страдает: сущность итак будет изменена с кучей ифов)

Andrei
09.11.2017
10:34:09

Maksim
09.11.2017
10:34:37
какую к чёртовой матери разнородную структуру?
мы правда про sql сейчас говорим?

Google

Maksim
09.11.2017
10:35:50
json поле - это круто, но...

Andrei
09.11.2017
10:36:19
я не понял комментарий про "...эксклюзивное измнение в схеме.."

Maksim
09.11.2017
10:36:37
никто не понял

Andrei
09.11.2017
10:37:14

Maksim
09.11.2017
10:37:31
но с таком случае проблема решается не с того конца

Andrei
09.11.2017
10:37:32
понятно что это уже попахивает nosql

Dmitry
09.11.2017
10:38:41
в общем щадача - говнокод ;) решается элементарно написанием обработчика события loadClassMetadata скорее всего

Andrei
09.11.2017
10:39:18
что и следовало ожидать

Pavel
09.11.2017
10:39:24
А тут кто-то вообще работал с мультитенантными системами? )
Было бы интересно послушать как оно на практике у него делается.
И как работают сайты наподобие wix, insales, tilda

Dmitry
09.11.2017
10:40:53
я бы шел siteId. Поднобные систмы априори не предполагают "кастомное изменение схемы"

Pavel
09.11.2017
10:41:31
Хм ну ладно. В морг, значит в морг :\

Maksim
09.11.2017
10:41:37
работали. Так же изолировано всё расположено.
Но при этом нет 1й вундервафли, которая знает всё и обо всех. Каждый кусок собирает свою статистику и в конце агрегируется. И, да, схема у всех одинаковая.

Dmitry
09.11.2017
10:42:11
а фильтры по siteId в доктрине можно вынести в фильтры и автоматически применять ко всем запросам...

Pavel
09.11.2017
10:42:35
> Так же изолировано всё расположено.
А почему не siteId ?

Maksim
09.11.2017
10:43:02
вопрос размеров. Если что-то мелкое, или среднее - site_id наше всё

Alexey
09.11.2017
10:44:37
емнип эта задача решается через обработчик события loadClassMetadata

Maksim
09.11.2017
10:44:48
т.е. если у вас там тысяча сайтов, например, нет абсолютно никакого смысла делать что-то круче, чем простой и ламповый siteId

Alexey
09.11.2017
10:45:16
в шардировании, в принципе, всегда есть смысл :)

Google

Maksim
09.11.2017
10:45:30
это не шардирование, по факту

Andrei
09.11.2017
10:45:54
ну если применить логику на имя схемы
то почему нет

Alexey
09.11.2017
10:46:11
отдельная схема на отдельный сайт - как раз шардирование

Pavel
09.11.2017
10:46:16
Ну например в случае отдельных схем можно легко организовать дополнительную реплику для самых важных клиентов. И бэкапить их очень удобно.

Maksim
09.11.2017
10:46:49

Andrei
09.11.2017
10:47:01

Dmitry
09.11.2017
10:47:07
а зачем реплика, вынеси их на отдельый сервер ;)

Alexey
09.11.2017
10:48:47
вот объясните пожалуйста тогда, почему это не шардирование

Dmitry
09.11.2017
10:49:21
потом схему реплицировать - это все-равно логическое реплицирование будет

Admin
ERROR: S client not available

Pavel
09.11.2017
10:49:31
да впринципе шардирование в каком то смысле. Смотря как термин трактовать.
Несколько мест с одинаковой схемой и разными данными - шарды и есть.

Dmitry
09.11.2017
10:51:51
лучше это называть партицированием ;) что бы не путать вертикальный и горизонтальный шардинг

Alexey
09.11.2017
10:52:23
okay :(

Dmitry
09.11.2017
10:53:07
хотя в общем вертикальный и горизонтальный есть суть похоже, только горизонтальный подразумевает, что ты шарды разносишь физически
хотя скорее шардирование это горизонтальное партицирование ;) в общем есть определенная путаница

Alexey
09.11.2017
10:55:09
по теме - это должно быть реализуемо через loadClassMetadata event, даже похожий вопрос на SO нашелся https://stackoverflow.com/questions/17134855/programmatically-modify-tables-schema-name-in-doctrine2

Pavel
09.11.2017
10:56:32

Maksim
09.11.2017
10:56:46
таких уже 2 было)

Google

Dmitry
09.11.2017
10:58:52
но вообще апгрейд саас с апгрейдом схемы в случае мультисхемной архитектуры превращается в какую-то боль ;))

Pavel
09.11.2017
10:59:34
Ну а с siteId эксплуатация превращается в боль. Везде в запросах надо учитывать фильтр по нему.

Maksim
09.11.2017
10:59:54
с фильтрами как раз попроще будет)

Dmitry
09.11.2017
11:00:07

Pavel
09.11.2017
11:00:37
Ну и отдельного клиента не забекапишь.

Maksim
09.11.2017
11:01:13
а какой юзкейс для бэкапа отдельного клиента?

Alexey
09.11.2017
11:01:28
да это логичнее в т.ч. и с точки зрения доступа, аудита, разделения рисков и т.д.

Maksim
09.11.2017
11:01:50
чем не угодил инкрементальный бэкап?

Alexey
09.11.2017
11:02:18
тем, что восстановление *данных* одного пользователя может затрагивать всех остальных

Pavel
09.11.2017
11:02:22
я не понял комментарий про "...эксклюзивное измнение в схеме.."
Поясню. Я имел в виду, например мы захотели для половины клиентов выкатить какой-то апдейт движка с измененными структурами. В случае мультисхемы мы делаем копию всех сущностей, редактируем их и привязывем к новым клиентам. При этом старые клиенты спокойно себе работают на старой кодовой базе.

Maksim
09.11.2017
11:02:39
это сраный ад будет

Pavel
09.11.2017
11:03:28

Alexey
09.11.2017
11:03:36
ну нет же, А/В никто не отменял, а писать код, который будет поддерживать разные версии И уметь переключаться между ними - вот ад

Maksim
09.11.2017
11:03:52
а/б тут рядом не стоял даже

Alexey
09.11.2017
11:03:56
а так раскатил обновление кода и базы для части, протестировал, откатил обратно или накатил всем остальным

Dmitry
09.11.2017
11:04:05
ну и раздели физически толстых и тонких ;) и на тонких эксперементируй ;)

Alexey
09.11.2017
11:04:19
когда речь о данных разных клиентов (saas), хранить все в одной куче черевато
из другой оперы пример - один клиент создает большую нагрузку, затрагивая всех остальных. Без отдельной схемы отделить его на другой сервер будет ой каким гемором.

Pavel
09.11.2017
11:05:23

Maksim
09.11.2017
11:06:52
оки, а условия в mysqldump кто-то отменил?)

Dmitry
09.11.2017
11:07:08

Maksim
09.11.2017
11:11:52
у меня, кстати, глупый вопрос есть. А сколько коннектов открывает ваш замечательный движок? десятки? сотни?
какое кол-во у вас клинтов (читать, баз)