@phpclubru

Страница 383 из 956
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
а какая связь между орм и статистикой?
DQL оперирует именами сущностей

работа на разных базах реализуется через конфигурацию энтити менеджера(ов). статистика - не головняк доктрины и аще общего бэкэнда
Вот доктринофилы постоянно произносят какой-то такой ответ: "доктрина для этого не предназначена" :)

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
вы изначально выстроили какую-то ректальную схему, а сейчас героически с ней боретесь, подставляя костыли и ругая доктрину

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

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

Maksim
09.11.2017
10:30:23
и да, siteid рулит
бесплатная подсказка пролетала

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

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

Pavel
09.11.2017
10:32:13
кто-то не хочет разделять модели на write and read :)
А что надо сделать? Как это поможет?

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

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
Ну например в случае отдельных схем можно легко организовать дополнительную реплику для самых важных клиентов. И бэкапить их очень удобно.

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

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
с фильтрами как раз попроще будет)

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), хранить все в одной куче черевато

из другой оперы пример - один клиент создает большую нагрузку, затрагивая всех остальных. Без отдельной схемы отделить его на другой сервер будет ой каким гемором.

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

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

Страница 383 из 956