@dlangru

Страница 441 из 719
Denis
07.03.2018
18:10:46
ну орм то писать долго и сложно. Их пишут стаей много много лет
я не говорю просто его писать или сложно - я говорю что невозможно. Это всегда будет набор костылей.

Потому что БД оперирует не теми объектами что ожидают прикладные программисты, и маппить БД невозможно никуда если не лочить её.

Всё, кончил.

Во, придумал: ОРМ это как внешнюю программу на другом языке вызывать не через биндинги, а попытавшись покрыть снаружи часть её внутрненнего кода своей логикой на своём языке.

Google
Denis
07.03.2018
18:13:50
и где-то там её приватные методы дёргать

Pavel
07.03.2018
18:14:18
Ну да. Так вещи в мире и работают.

https://github.com/Mihail-K/Dart смотрите какая прикольная вещь есть

Denis
07.03.2018
18:19:45
Вот это вот: @Table("users") @Id @AutoIncrement Сразу можно закапывать.

Pavel
07.03.2018
18:20:31
Ну ты пишешь программу на своем языке и потом она через костыли переводится в опкоды )

Denis
07.03.2018
18:21:51
Ну ты пишешь программу на своем языке и потом она через костыли переводится в опкоды )
Нет, тут 2 программы: на ди и на SQL и одна другую не вызывает как обычно а пытается понять внутреннее устройство и вызвать "за внутренности"

Pavel
07.03.2018
18:22:19
SQL тьюринг полный значит это возможно

Denis
07.03.2018
18:22:20
Аннотации, крутяк
Это сразу расползётся по всему проекту.

Pavel
07.03.2018
18:23:01
Да и пусть ползёт.

Заархитектурить нужно правильно.

Google
Denis
07.03.2018
18:23:21
ну збс. оно уже неверный дизайн притащит и дублирование данных.

Pavel
07.03.2018
18:23:54
Откуда дублирование?

Denis
07.03.2018
18:24:30
Заархитектурить нужно правильно.
невоможно это будет заархитектурить потому что там id а он скорее всего прикладному слою не нужен. Правильный путь может быть таким: по id функцией взять из БД структуру без этого id (всё равно мы его уже знаем)

Denis
07.03.2018
18:27:09
дык когда вы запросите такую структуру вы её запросите по какому-то id, который УЖЕ известен

Denis
07.03.2018
18:27:27
DDD?

Pavel
07.03.2018
18:27:37
domain driven design

а там уже можно на слое данных быстренько подменить auto increment id на uuid какой-нибудь и вся логика этого даже не заметит

Denis
07.03.2018
18:28:37
далее момент - а генерит id эта хрень? судя по аннотации

щас бы на стороне клиента генерить idшники 32-64 бита длиной и надеяться что они не пересекутся, ага

64 ещё туда-сюда если правильно заморочиться - заморчивается ли эта фиговина?

Pavel
07.03.2018
18:30:43
Это скорее всего аннотация для правильного построения запроса

UserRecord user = UserRecord.get(id);

Если вызывается вот такое то билдер внутри найдет колонку с аннотацией @Id и добавит ее в часть WHERE и сравнит с пришедшим аргументом

Denis
07.03.2018
18:31:48
UserRecord user = UserRecord.get(id);
и внутри структура с id - и что будет если эти id окажутся разными потому что база решит так ответить?

Pavel
07.03.2018
18:33:05
UserRecord.get(id); вот по такой записи орм не может понять по какой именно колонке нужно выбрать строку. А аннотация ей подскажет.

Denis
07.03.2018
18:33:05
// Update auto increment columns. auto info = getColumnBindings(getIdColumn); if(info.autoIncrement) { // Fetch the last insert id. query = SelectBuilder.lastInsertId; ResultSet id = executeQueryResult(query); // Update the auto incremented column. info.set(this, id[0][0]); пиздец

Google
Denis
07.03.2018
18:34:32
UserRecord.get(id); вот по такой записи орм не может понять по какой именно колонке нужно выбрать строку. А аннотация ей подскажет.
Ну даже вот звучит неправильно - БД не таблицы возвращает. В совсем запущеном случае можно сделать SELECT и получить 3 таблицы подряд

в PG, по крайней мере.

Pavel
07.03.2018
18:35:12
так орм сама контролирует чтобы запущенных случаев не было

Denis
07.03.2018
18:35:49
так орм сама контролирует чтобы запущенных случаев не было
ну я вижу как она классно инкремент делает

Pavel
07.03.2018
18:35:51
Будет в select просто перечисление колонок структуры, в FROM подставится имя из аннотации @table а в WHERE подставится колонка из аннотации @id

Denis
07.03.2018
18:35:54
ох она наконтролирует

А разве нет таких nosql решений?

SQL тут ведь лишний. Набор простых таблиц + пересечения по ним + ключи.

А то мучаются с SQL зачем-то.

Pavel
07.03.2018
18:37:17
Там есть джоины значит не лишний

а вот в nosql невозможны джоины

Denis
07.03.2018
18:37:36
джойны можно тоже в виде функций API описать

Denis
07.03.2018
18:37:54
просто очевидно что им SQL прямо мешает

Pavel
07.03.2018
18:38:21
даже не знаю как приложения БД до сих пор писали

Pavel
07.03.2018
18:38:26
Жаль там нету примеров, особо не понятно как оно все работает

Denis
07.03.2018
18:40:05
Или вот ещё вопрос: допустим данных станет много и надо будет партиционировать или ещё что-то сделать - лезем руками в БД ведь? И как потом ОРМ будет работать? Придётся его глубоко изучить + глубоко изучть SQL.

Pavel
07.03.2018
18:40:27
орм сама ничего не решает, а только ретранслирует в субд. целостность обеспечивает субд.

Denis
07.03.2018
18:41:07
ну вот у нас огромный объём данных

тормозить стало всё

и мы впервые лезем туда и охреневаем чего она там наделала

Google
Denis
07.03.2018
18:41:28
и пытаемся понять как оно работает

такой сценарий?

Pavel
07.03.2018
18:42:09
виновата не орм, а програмеры

работа орм прозрачна. по крайней мере должна такой быть.

Denis
07.03.2018
18:44:07
виновата не орм, а програмеры
вторая отмазка на все случаи жизни)

Pavel
07.03.2018
18:44:36
ну, что ей напишут, то и сделает

Denis
07.03.2018
18:45:23
в реале дело выглядит так: неофит прибегает и думает "нафиг SQL если можно ОРМ?" и фигачит

и фигачит

Admin
ERROR: S client not available

Denis
07.03.2018
18:46:01
огребает проблем и думат: "О, это был плохой ОРМ, нужен более лучший", и так несколько итераций

Pavel
07.03.2018
18:46:14
ну, фигачит, заглядывая в кишки БД и посматривая на генерируемые запросы и их параметры.

Denis
07.03.2018
18:47:47
я вас умоляю

он придёт к выводу что надо точнее тюнить ОРМ

Pavel
07.03.2018
18:48:21
Или вот ещё вопрос: допустим данных станет много и надо будет партиционировать или ещё что-то сделать - лезем руками в БД ведь? И как потом ОРМ будет работать? Придётся его глубоко изучить + глубоко изучть SQL.
По идее если ORM это поддерживает то можно где-то в конфиге указать ей что такую-то сущность мы начали партициировать по колонке ил по выражению. А дальше ORM уже сама везде подставляет это в запросах. Остальная логика ваще не меняется.

Denis
07.03.2018
18:48:23
ну и расползающийся код я хз что с ним делать, мы выкинули в нашем подобном случае.

> По идее если ORM это поддерживает то можно где-то в конфиге указать ей что такую-то сущность мы начали партициировать по колонке ил по выражению. А дальше ORM уже сама везде подставляет это в запросах. Проще голую БД юзать и не мучиться

Dark
07.03.2018
18:49:07
Вы уже 2 часа про ORM пишите

Pavel
07.03.2018
18:49:08
Где ты увидел мучения то? написать 2 строчки конфига. Остальной проект вообще никак не трогается.

Вы уже 2 часа про ORM пишите
Как ты собрался переписать unity на D если там небось кода дофига?

Denis
07.03.2018
18:50:33
Где ты увидел мучения то? написать 2 строчки конфига. Остальной проект вообще никак не трогается.
чтобы их написать надо ЗНАТЬ. выгоднее знать БД чем какой-то ОРМ (который школьник написал и забыл)

Google
Pavel
07.03.2018
18:51:02
Ну ОРМ не отменяет знания БД. Она просто помогает писать меньше бойлерплейта

А знать нужно конечно

Dark
07.03.2018
18:52:30
Как ты собрался переписать unity на D если там небось кода дофига?
Во-первых, как одно связана с другим, а во-вторых, кто сказал, что я собрался переписать Unity на D?

Pavel
07.03.2018
18:52:53
Dark
07.03.2018
18:54:42
Просто помню сообщения от тебя часов 5 назад, а спросить забыл
О.о Нефига у тебя кэш-память огромная Я хочу использовать вместо C# D в Unity, переписывать сам Unity я не собирался (в любом случае, пока)

Denis
07.03.2018
18:54:51
Ну ОРМ не отменяет знания БД. Она просто помогает писать меньше бойлерплейта
ОРМ подразумевает очень глубокие знания БД и ОРМ. А в реальности мы имеем другое - люди воспринимают ОРМ как лёгкий удобнй способ. И авторы ОРМ их так рекламируют.

Pavel
07.03.2018
18:55:07
Denis
07.03.2018
18:55:37
Если школьник написал и забыл - это точно неправильная орм)
Пока головой не ударишься не поймёшь же

и в редакторе

Pavel
07.03.2018
18:56:36
Я не знаю вообще как-то из чего состоит юнити. Если это графический движок то явно он не на шарпе написан, может там биндинги к шарпу?

Pavel
07.03.2018
18:57:31
3d это очень сложно, а вот 2d движок я бы поковырял

Denis
07.03.2018
18:57:58
есть отличный (ну я не разбираюсь на самом деле) написанный на ди движок

Atrium

Dark
07.03.2018
18:58:17
Это не движок

А игра

Точнее

"Игра"

Т.к. там почти ничего нет

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