@dlangru

Страница 440 из 719
Denis
07.03.2018
17:17:37
это как "маппить" питоновые функции

Pavel
07.03.2018
17:17:50
Ну в большинстве случаев так и есть.

А вот когда начинаются агрегации и реляции то да, сложно

Но например при чтении данных мы можем создать динамический объект с полями равными результату из кортежа. А когда пишешь в базу то тут никакой абстракции нету, схемы таблиц прибиты гвоздями.

Google
Denis
07.03.2018
17:19:23
А вот когда начинаются агрегации и реляции то да, сложно
А нахрена вам РЕЛЯЦИОННАЯ бд без реляций?!))

Pavel
07.03.2018
17:19:54
Реляции по внешнему ключу тоже легко разруливаются

Denis
07.03.2018
17:20:08
> А когда пишешь в базу то тут никакой абстракции нету, схемы таблиц прибиты гвоздями. При запросах ты не пишешь в таблицу. Это частный случай. ты можешь ведь и функцию вызвать.

Pavel
07.03.2018
17:20:39
идем в таблицу по owner_id и вытаскиваем оттуда поля, вот и построили родительский объект. При этом в коде никаких упоминаний про join не будет

> Это частный случай. Вот этот частный случай и решает орм, и случай очень типичен

Бложики, форумы, интернет магазины, CRM системы почти все им покрываются

Denis
07.03.2018
17:23:20
> идем в таблицу по owner_id и вытаскиваем оттуда поля, вот и построили родительский объект. хрен вы чего построите по динамически создаваемой таблице

> Это частный случай. Вот этот частный случай и решает орм, и случай очень типичен
Ага а потом когда наступает момент понимания необходимости нормальной работы происходит переписывание всего кода

Pavel
07.03.2018
17:24:05
Ой, этого и без ORM всегда происходит :)

У нас в базе были почти везде ORM объекты, и штук 10 мест где были аццкие реляционные raw запросы, которые драйвер тоже легко позволяет делать.

Но если бы не было ORM объектов то при изменении схемы нам бы пришлось бегать по сотне мест и подправлять запросы, это ваще не ок

Maxim
07.03.2018
17:31:22
в такие моменты должны закрадываться сомнения в адекватности архитектуры приложения)

Google
Pavel
07.03.2018
17:33:31
Против лома нет приема. Если растет сложность логики и инфраструктурная нагрузка, то как ни исхитряйся, все будет трудно и проблемно.

Когда создается все больше сущностей и динамических отношений между ними, то как их не группируй, а с голыми запросами все равно повесишься.

Maxim
07.03.2018
17:35:15
нужно стремиться к минимизации источников данных и мест, создающих/модифицирующих данные

если при изменении схемы хранения данных приходится бегать по сотням мест, значит, слишком много бизнес-логики работает с сырыми данными, что не есть гуд)

Pavel
07.03.2018
17:36:23
И что ты предлагаешь? Заюзать ORM чтобы не работать с сырыми данными?

Maxim
07.03.2018
17:37:05
правда, избавляясь от этого, обычно мы получаем систему вроде ORM, только очень специализированную, заточенную конкретно под наши нужды)

Pavel
07.03.2018
17:37:17
Воот

То есть хотели убежать от орм, потом решали сложности построения динамических запросов и все равно к орм пришли

Maxim
07.03.2018
17:37:50
ну, то есть, это не прямое отображение таблиц на объекты, а некие бизнес-сущности, структура хранения которых не важна для остальной части приложения

Pavel
07.03.2018
17:38:38
Ну да, там целый дивный мир DDD, агрегаты, слои хранения и прочее и прочее

Maxim
07.03.2018
17:38:39
и, естественно, там будут некоторые компромиссы между удобством и скоростью)

Pavel
07.03.2018
17:41:00
Это попахивает старым добрым god классом с 100500 методами апи на все случаи жизни, и у каждого метода по 15 аргументов? =)

Denis
07.03.2018
17:41:17
нет

ну вот на последнем большом SQL проекте так описывали: https://github.com/DSoftOut/pgator

создаётся натурально API, в данном случае - rest

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

Pavel
07.03.2018
17:43:11
Знаешь же зачем придумали GraphQL ? )

Denis
07.03.2018
17:43:27
примерно догадываюсь. Оно там ЛЕЗЕТ в схему

Pavel
07.03.2018
17:43:56
Потому что загрузка сложной страницы через REST превращается из 100 запросов в базу в 100 HTTP запросов и в каждом 1 запрос в базу.

Google
Pavel
07.03.2018
17:44:26
Это АПИ это все ровно те же яйца только в профиль

Denis
07.03.2018
17:44:40
блять, ну значит не rest используйте, не важно что - принцип важен

Pavel
07.03.2018
17:44:46
Взяли выкинули слой объектов, подсунули слой JSON объектов, ну отлично )

Denis
07.03.2018
17:44:55
НЕ объектов

функций вызываемых

Pavel
07.03.2018
17:46:29
{ "jsonrpc": "2.0", "method": "test_echo", "params": { "value_for_echo": "Hello, world!" }, "id": 1 }Вот это вот json объект

И возвращается тоже json объект

Denis
07.03.2018
17:46:44
определение объекта в студию

ебанулись ООПшники, везде у них объекты мерещатся

Pavel
07.03.2018
17:47:14
https://www.w3schools.com/js/js_json_objects.asp

Maxim
07.03.2018
17:47:49
Подозреваю, идея GraphQL появилась, когда большую часть бизнес-логики вынесли на фронтэнд)

Denis
07.03.2018
17:48:01
Ну в этом смысле объект, терминология у них такая. Но это не объект ORM или как в С++

это просто декларации функций по факту

Pavel
07.03.2018
17:48:36
Ну вообще класс это концептуально набор данных и определенных над ними операций. А всякие заморочки про виртуальные методы, аллокации, время жизни и все остальное это уже детали реализации.

Pavel
07.03.2018
17:49:25
Туда добавить еще метод с логикой и получится поведение

Pavel
07.03.2018
17:49:40
class Message(Json)

Maxim
07.03.2018
17:49:55
Объект с нулевым поведением)

Google
Maxim
07.03.2018
17:50:25
Как они там у джавистов называются?

Pavel
07.03.2018
17:50:26
ValueObject

Или DTO

Denis
07.03.2018
17:50:47
а в чём там суть?

Pavel
07.03.2018
17:51:06
Во многом, так всего и не объяснишь. Смотря с какой стороны смотреть :)

Maxim
07.03.2018
17:51:18
Суть в том, что это просто структура в терминах си)

Связанный набор данных

Denis
07.03.2018
17:52:02
ну пусть будет. ну короч суть такая - обозначаем явный API и каждый сидит в своём загоне

А если у вас прикладные кодеры схему БД пытаются понимать получится херня

Pavel
07.03.2018
17:52:41
Почему это херня? Может получиться и миллиардный бизнес

типа телеграма )

Denis
07.03.2018
17:52:56
но чаще - херня

Pavel
07.03.2018
17:54:06
Вот на сайте dlangru кто будет прикладным кодером а кто инженером БД ?

Надо там делать API для бложека?

Denis
07.03.2018
17:54:41
везде надо где БД используется. Это же роли, так что может и один человек исполнять.

Pavel
07.03.2018
17:55:16
Ну и почему тогд он схему не сможет понять? Да там вообще будет стайная разработка.

Пришел аноним, сделал пулл реквест, кто-то его замержил.

Кто-то отревьюил.

Так может в плюсах просто кривые ОРМки все? Которые только проблем доставляют. Такое тоже бывает.

Google
Denis
07.03.2018
17:58:26
/me больную мозоль разворошили

Pavel
07.03.2018
17:59:14
Ну не кривее чем машинный нуль какой-нибудь

Denis
07.03.2018
17:59:39
ты о чём?

Pavel
07.03.2018
18:00:29
О том что есть импеданс между дробными числами и их представлении во флоате. Тоже можно сказать что все пропало и нельзя использовать байты для описания рациональных чисел.

Denis
07.03.2018
18:01:00
нельзя, верно

Pavel
07.03.2018
18:01:23
Ну и как теперь жить? Ракеты то взлетают как-то, иногда.

А CAP теорема это тоже концепт с кучей компромиссов

Denis
07.03.2018
18:02:56
Про БД и ОРМ: БД не отдают вам свои внутренние "переменные" (таблицы) или их части - они отвечают на запросы. Это две большие разницы. Поначалу когда вы делаете heloo world всё отлично, вроде бы ОРМ работает потмоу что вам кажется что вы куски из таблиц запрашиваете. Но рано или поздно наступает момент когда эта концепция даёт трещину. И переписывать приходится всё, потмоу что к тому времени идея ОРМ пускает корни по всему проекту (связность)

Ну и как теперь жить? Ракеты то взлетают как-то, иногда.
Никто не использует float для описания рациональных дробей

Pavel
07.03.2018
18:04:30
> Но рано или поздно наступает момент Да не обязательно он наступает

Denis
07.03.2018
18:05:32
"Обязательно в жизни специалиста", поправлюсь

на 10 проекте

5 твиттеров, 2 телеграмма и потом херак - форум превратился в лапшу

Pavel
07.03.2018
18:07:26
Но без этого ты не сможешь стартовать )

ОРМ - необходимая ступень.

Либо ты пишешь на нем либо на голых запросах и потратил все деньги на разработку.

Denis
07.03.2018
18:08:03
Но без этого ты не сможешь стартовать )
когда я был "молодой и зелёный" я шикарно стартовал - я сразу начал писать свою ОРМ)

знатно потрахался, пока мне программисты БД на пальцах не объяснили бредовость затеи.

Либо ты пишешь на нем либо на голых запросах и потратил все деньги на разработку.
Максимализм какой. Сколько тех запросов для форума надо? 10? полчаса делов.

Страница 440 из 719