metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-08-19 03:44 pm

SQL

SQL — высокоуровневый декларативный специализированный язык четвёртого поколения, в отличие от того же Java или C#, по-прежнему относящихся к третьему поколению языков императивных. Единственный оператор SQL на три десятка строк, выполняющий нечто посложнее выборки по ключу, потребует для достижения того же результата в разы, если не на порядок, больше строк на C#.
http://habrahabr.ru/company/piter/blog/165327/

А кто не согласен - того мы скормим крокодилам.

[identity profile] falcrum.livejournal.com 2013-08-19 12:46 pm (UTC)(link)
Чё-та я не въехал: ты за коммунистов аль за большевиков? :)

[identity profile] zelanton.livejournal.com 2013-08-19 01:18 pm (UTC)(link)
Он проползает между двумя лагерями, стреляет в одну сторону, стреляет в другую. И смотрит как они мочат друг друга. А после добивает выживших и собирает трофеи.

[identity profile] bydlorus.livejournal.com 2013-08-19 12:51 pm (UTC)(link)
В C# есть свой декларативный Linq, есличо.

Дочитал, короче основная претензия что свой Linq медленнее, чем ручной SQL. Так никто не запрещает писать ручной SQL, nhibernate его отлично мапит. А учитывая premature optimization и бдыщь-и-в-продакшн, нафиг кому надо писать ручной sql.
Edited 2013-08-19 13:20 (UTC)

[identity profile] w00dy.livejournal.com 2013-08-19 01:39 pm (UTC)(link)
написал ручной sql, поменял схему, а потом бдыщь - и ничего в продакшене не работает.

[identity profile] veremeenko-alex.livejournal.com 2013-08-19 01:44 pm (UTC)(link)
Хочешь устроить для команды геморрой:
1. Переименуй столбец
2. Поменяй тип столбца
3. Вкомитай и иди домой, все же коммпилится.

[identity profile] w00dy.livejournal.com 2013-08-19 01:46 pm (UTC)(link)
переименование не так страшно. mssql и pgsql на эту тему внятно ругаются. А вот изменить тип - это да, знатный тролинг.

[identity profile] tzirechnoy.livejournal.com 2013-08-19 03:46 pm (UTC)(link)
То ли дело ORM: ничего не работает с самого начала. Можно сказать, избавляемся от множэства лишних телодвижэний -- там, схему менять, бдыщь опять жэ.

[identity profile] w00dy.livejournal.com 2013-08-19 03:52 pm (UTC)(link)
А можно конкретно что не работает? А то я много лет пользую linq2sql и у меня всё работает. Голый sql по нужде использоваться только один раз 3 года назад, ибо там было performance critical место.

[identity profile] tzirechnoy.livejournal.com 2013-08-19 04:26 pm (UTC)(link)
Ну, у кого-то и дэльфёвый MVC-style database engine что-то делает. Смысла только в нём 0.

[identity profile] zelanton.livejournal.com 2013-08-19 01:42 pm (UTC)(link)
по ссылке "не только медленнее, но и менее выразительно, соотв. менее читабельно".

[identity profile] w00dy.livejournal.com 2013-08-19 01:44 pm (UTC)(link)
а то что он проверяется в compile time никого не волнует?

[identity profile] metaclass.livejournal.com 2013-08-19 01:50 pm (UTC)(link)
Нихуя он не проверяется. Зайдут крокодилы в базу, alter table сделают и пиздец всему.

[identity profile] w00dy.livejournal.com 2013-08-19 01:51 pm (UTC)(link)
Не пускайте крокодилов в базу. Запускайте sqlmetal в pre-build. Можно ещё чего-то придумать.

[identity profile] metaclass.livejournal.com 2013-08-19 01:52 pm (UTC)(link)
Так оне в продакшене поменяют. В одном из 500.

[identity profile] w00dy.livejournal.com 2013-08-19 01:58 pm (UTC)(link)
ну я не знаю ребе. У нас есть ответственные за клиента. Есть протоколы доступа. Есть исполнители. Если кто-то из наших накосячит, дадут по ушам. Если кто-то из клиентских без согласования с нами - сейлзы выкатывают доп.счёт на доп.услуги, потому что исправлять то нам приходится.

[identity profile] veremeenko-alex.livejournal.com 2013-08-19 01:54 pm (UTC)(link)
Без периодического sql schema compare никуда!!!

[identity profile] hshhhhh.livejournal.com 2013-08-19 02:09 pm (UTC)(link)
Раз в 10 секунд

[identity profile] bydl0coder.livejournal.com 2013-08-19 06:14 pm (UTC)(link)
Он далеко не все проверяет.

[identity profile] bydlorus.livejournal.com 2013-08-19 02:15 pm (UTC)(link)
Это я игнорировал т.к. субъективно, мнения хардкорных dbmщиков игнорируем

[identity profile] veremeenko-alex.livejournal.com 2013-08-19 01:07 pm (UTC)(link)
С появлением Linq пускай идут лесом со своим SQL.

[identity profile] w00dy.livejournal.com 2013-08-19 01:41 pm (UTC)(link)
зря вы так, три года назад в одном performance critical месте с помощью sql удалось ускорить приложение. Видите какой полезный sql, не то что этот linq от мекрософта.

[identity profile] veremeenko-alex.livejournal.com 2013-08-19 01:46 pm (UTC)(link)
Это как вставка на ассемблере. Можно, только осторожно. И все равно когда-нибудь выстрелит.

[identity profile] tzirechnoy.livejournal.com 2013-08-19 04:24 pm (UTC)(link)
Всяким embedded SQL лет почти столько жэ, сколько самому SQL.

И, во всяком случае, когда я начинал (первая половина 90-х) -- это был вполне себе трэнд.

Не взлетело. И, видимо, невзлетит (есть объективные причины, по которым работать с текстом -- проще).

[identity profile] bydl0coder.livejournal.com 2013-08-19 06:17 pm (UTC)(link)
Как не взлетело-то? Везде ж генераторы SQL.

[identity profile] nivanych.livejournal.com 2013-08-19 01:14 pm (UTC)(link)
> скормим крокодилам

А Крокодилы таких едят?

[identity profile] zelanton.livejournal.com 2013-08-19 01:22 pm (UTC)(link)
XQuery и XPath всё равно круче всех :P

[identity profile] kiryl.livejournal.com 2013-08-19 01:24 pm (UTC)(link)
xml же говно.

[identity profile] zelanton.livejournal.com 2013-08-19 01:26 pm (UTC)(link)
говно. Но круче всех! :)

Набрасывать, так уж набрасывать

[identity profile] zelanton.livejournal.com 2013-08-19 01:29 pm (UTC)(link)
ну и кстати говно говном, а допускает применение внутри того же TSQL и оракла
Не приведи господь макароны конечно
Edited 2013-08-19 13:29 (UTC)

[identity profile] sbj-ss.livejournal.com 2013-08-19 01:52 pm (UTC)(link)
xml - какое-никакое решение для хранения структурированных данных в реляционной базе. Но при использовании на всю катушку можно всё чудовищно затормозить.

[identity profile] raydac.livejournal.com 2013-08-19 02:12 pm (UTC)(link)
современные проггеры не управляются с императивным, а что бы на декларативном писать надо иметь уровень современного гуру-архитектора

[identity profile] alexeyk77.livejournal.com 2013-08-19 03:37 pm (UTC)(link)
все верно написано. орм не нужен.

[identity profile] juan-gandhi.livejournal.com 2013-08-19 03:56 pm (UTC)(link)
Я в общем-то согласен, но на скале в сквериле те же сиквелы пишутся и компилируются. Думаю, и в сишарпе это можно.

Что не отменяет правильности общей концепции.

[identity profile] theiced.livejournal.com 2013-08-19 05:19 pm (UTC)(link)
Единственный оператор SQL на три десятка строк отправит вас верной дорогой в дурку.

[identity profile] berezovsky.livejournal.com 2013-08-19 06:10 pm (UTC)(link)
бля, прочитал аккаунт гитлер :-(

[identity profile] gds.livejournal.com 2013-08-19 07:55 pm (UTC)(link)
да это ещё и не особо забористый sql. Но для "попугать слабого противника" годится.

[identity profile] vinslivins.livejournal.com 2013-08-20 06:27 am (UTC)(link)
НЕЕЕЕЕЕЕЕЕЕЕТ

[identity profile] veremeenko-alex.livejournal.com 2013-08-20 06:56 am (UTC)(link)
Добавь триггеров для полного счастья.

[identity profile] metaclass.livejournal.com 2013-08-20 08:20 am (UTC)(link)
Они там есть. И хранимки есть. И исполняемый код в UDF. И GTT. И контекстные переменные.

[identity profile] firebie.livejournal.com 2013-08-19 06:55 pm (UTC)(link)
Как тут уже выше заметили, для большинства приложений, где требуется чуть больше CRUD - LINQ хватит выше крыши. А где не хватит - можно будет использовать чистый SQL.
В результате в коде всё строго типизированно, а не жуткая мешанина из SQL. Само собой, что знание SQL никто не отменяет.
А вообще правильная ORM - это lightweight ORM, основная задача которой - статически типизированный мапинг. А вот разные entity management, встроенные в ORM - это зло.
Лучшие lightweight ORM на текущий момент - bltoolkit (linq часть), linq2db.

[identity profile] vit-r.livejournal.com 2013-08-19 09:07 pm (UTC)(link)
Ключевое слово: "нечто"