
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

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 (всё равно мы его уже знаем)

Pavel
07.03.2018
18:26:41

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

Pavel
07.03.2018
18:27:13

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

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
в 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

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 строчки конфига. Остальной проект вообще никак не трогается.

Denis
07.03.2018
18:50:33

Google

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

Dark
07.03.2018
18:52:30

Pavel
07.03.2018
18:52:53

Dark
07.03.2018
18:54:42

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
Я не знаю вообще как-то из чего состоит юнити. Если это графический движок то явно он не на шарпе написан, может там биндинги к шарпу?

Dark
07.03.2018
18:57:01

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

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

Dark
07.03.2018
18:58:17
Это не движок
А игра
Точнее
"Игра"
Т.к. там почти ничего нет