Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 9 [10] 11 12 13   вперед  Ctrl
 Re: Причины ненависти к языку SQL?  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
Озверин
Ivan Durak
давайте на примере.

было
table
TRANSACTION
( id,
datetime,
account_deb_id,
account_cred_id.
amount
)
--------------------
Стало:
+ table
BALANCE
(
account_id,
date,
balance_amount
)

которая заполняется на каждый день как сумма по всем транзакциям.

Ну а теперь раскажате мне на сколько нормальных форм уменьшилась структура базы после
такой агрегации?????


нормализация показывает, как убирать тразитивные зависимости между атрибутами в отношении, но как с ними бороться(и надо ли?) между отношениями?

не надо бороться, надо просто знать, что и зачем. Где денормализация, а где агрегация
9 ноя 18, 10:55    [21729103]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Ivan Durak, в зависимости от бизнеса, баланс - не такая уж и "абстракция" ;)
9 ноя 18, 11:00    [21729108]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
Ivan Durak,

Агрегация, или агрегирование (лат. aggregatio «присоединение») - объединениt элементов в одну систему, в одно целое.
9 ноя 18, 11:00    [21729110]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
Композиция - более строгий вариант агрегирования, когда включаемый объект может существовать только как часть контейнера. Если контейнер будет уничтожен, то и включённый объект тоже будет уничтожен.
9 ноя 18, 11:02    [21729113]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
ViPRos
Member

Откуда:
Сообщений: 9643
Дмитрий Мух,

ну и че ты все это пишешь? тут почти все русские :)
9 ноя 18, 11:21    [21729154]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
ViPRos
Дмитрий Мух,

ну и че ты все это пишешь? тут почти все русские :)
чтобы понимали то, что я имею в виду.
и не представляли себе, что я про SUM пишу
9 ноя 18, 11:44    [21729194]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Addx
Member

Откуда:
Сообщений: 957
Дмитрий Мух,

Мы все же говорим о разработке, а не о лингвистике.
И не будем утверждать, что корректное действие для метода Execute - уничтожить объект, поскольку execute - это казнить, а не выполнить. )
Ладно, отвлечемся от реляционок, где "агрегаты" имеют вполне определенный смысл.
Например в C# ;) понимается так:

public static U Aggregate<T, U> ( 
     this IEnumerable<T> source, 
     U seed,
     Func<U, T, U> func);


с классическим функционалом перевода последовательности в объект.
9 ноя 18, 12:01    [21729226]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Addx
Member

Откуда:
Сообщений: 957
ViPRos
Дык вед этот BALANCE 100пудово избыточные данные, при этом все нормализовано


Вовсе не факт, кстати, что они избыточные.
Например старые транзакции могут быть сархивированы/потеряться/быть стертыми шоб налоговая не догадалась.
В этом случае баланс совсем не избыточен.
9 ноя 18, 12:09    [21729240]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Addx
ViPRos
Дык вед этот BALANCE 100пудово избыточные данные, при этом все нормализовано


Вовсе не факт, кстати, что они избыточные.
Например старые транзакции могут быть сархивированы/потеряться/быть стертыми шоб налоговая не догадалась.
В этом случае баланс совсем не избыточен.


в прямом понимании смысла этого слова в рамках нормализации - это данные никак избыточными быть не могут. Но аномалии, связанные с такой структурой - могут возникать.
9 ноя 18, 12:11    [21729249]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
Короче мы уже обсуждаем терминологию, а не проблематику. Не интересно.
9 ноя 18, 15:02    [21729657]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Addx
Member

Откуда:
Сообщений: 957
Дмитрий Мух,

skyANA
Расскажите, если не сложно. Интересно понять, о чём Вы конкретно.


Я собственно и пояснил)
9 ноя 18, 15:45    [21729761]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
казинак
Member

Откуда:
Сообщений: 1269
зачем нормализация?
чтоп значение хранилось один раз
например, вместо названия счета в каждой транзакции - айди счета,
потому что, если название поменяется, то во всех проводках надо поменять.

зачем денормализация?
чтоп селекты быстрей работали, вместо джойнов и групировок на лету, просто выбираем из одной таблицы.

т.е потребность в этих штуках чисто практическая
а то, что вы тут из себя умников строите, споря о названиях, это нужно только вам,
для самоутверждения наверно....
9 ноя 18, 17:33    [21729954]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
казинак,

именно вместо сложных селектов с кучей джоинов и группировок на лету предлагается очевидное решение - во время записи писать все необходимые данные в денормализованные таблицы, называемые регистрами
это прекрасно работает на практике: АИС ТПС НК "ЮКОС", потом "Роснефть"...
9 ноя 18, 20:39    [21730116]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
молодцы, пацаны - все вокруг эникейщики, одни вы хапнули жизни )
9 ноя 18, 23:37    [21730213]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
казинак
Member

Откуда:
Сообщений: 1269
Дмитрий Мух
казинак,

именно вместо сложных селектов с кучей джоинов и группировок на лету предлагается очевидное решение - во время записи писать все необходимые данные в денормализованные таблицы, называемые регистрами
это прекрасно работает на практике: АИС ТПС НК "ЮКОС", потом "Роснефть"...

работает, значит норм

но не самое масштабируемое решение
например,
обновление суммы оборотов или остатка, при каждой операции..
все сессии одновременно будут пытаться проапдейтить одно поле, в одной записи.
и будут висеть на блокировке
10 ноя 18, 04:10    [21730284]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
казинак
Дмитрий Мух
казинак,

именно вместо сложных селектов с кучей джоинов и группировок на лету предлагается очевидное решение - во время записи писать все необходимые данные в денормализованные таблицы, называемые регистрами
это прекрасно работает на практике: АИС ТПС НК "ЮКОС", потом "Роснефть"...

работает, значит норм
Не просто работает, а отлично работает

Стали бы про эту денормализацию статьи писать, если бы она не работала.

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

На блокировке чего? Зачем и Вы выдумываете какие-то суммы?

В нормализованном виде полные данные по кажой операции хранятся в N таблицах.
Запрашиваются в нескольких местах.

То есть факт свершился один раз, а используется потом много раз.

С ростом системы растёт как количество данных, так и сложность запросов к ним, и мест, откуда эти запросы выполняются. Время отклика падает.
И возникает простая идея: раз у нас много чтения и относительно мало записи, и чтение страдает, то давайте использовать денормализованные таблицы (регистры).
Избавляемся как от сложных запросов на чтение, так и от множества блокировок. И всё начинает летать.
10 ноя 18, 11:00    [21730334]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
И это решение отлично работало как 15 лет назад, так и сейчас в рамках одной базы.

А можно пойти ещё дальше: разнести чтение и запись по разным нодам калстера, или вообще по разным СУБД.
Что повсеместно и делают.

Но если это уже слишком для вас, то используйте проверенную денормализацию.
10 ноя 18, 11:06    [21730335]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
ViPRos
Member

Откуда:
Сообщений: 9643
Дмитрий Мух,

чудес не бывает, все зависит от частоты чтения-записи, и обычно лучшая денормализация - sql view
10 ноя 18, 14:44    [21730439]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
ViPRos
Дмитрий Мух,

чудес не бывает, все зависит от частоты чтения-записи

я про это и пишу:
Дмитрий Мух
И возникает простая идея: раз у нас много чтения и относительно мало записи, и чтение страдает, то давайте использовать денормализованные таблицы (регистры).
10 ноя 18, 15:19    [21730455]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
ViPRos
обычно лучшая денормализация - sql view

И с каких это пор sql view стало намеренным приведением структуры базы данных в состояние, не соответствующее критериям нормализации?

Я конечно понимаю, о чём ты, но давай не будем мешать мух с котлетами.
10 ноя 18, 15:26    [21730459]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5487
Дмитрий Мух
это прекрасно работает на практике: АИС ТПС НК "ЮКОС", потом "Роснефть"

можно всё-таки узнать какие-то характеристики этой системы?
не знаю, возможно многие на 1С делали и посложнее системы
10 ноя 18, 17:44    [21730516]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
SergSuper
Дмитрий Мух
это прекрасно работает на практике: АИС ТПС НК "ЮКОС", потом "Роснефть"

можно всё-таки узнать какие-то характеристики этой системы?
не знаю, возможно многие на 1С делали и посложнее системы

На 1C? Отгрузка нефти?

ЮКОС являлась одной из крупнейших компаний России по объёмам реализации.
В период с 1995 по 2005 год неизменно входила в число 10 крупнейших компаний России по версии журнала «Эксперт» (лучший результат - 4 место в 2001—2003 годах).

Роснефть в 2013 году стала крупнейшей в мире компанией-производителем нефти.

Как Вам такие характеристики?
10 ноя 18, 18:14    [21730532]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
Дмитрий Мух
Member

Откуда: Зеленоград
Сообщений: 2563
Хотя что-то сделали и на 1C: "1C:Предприятие 8": автоматизация отгрузки нефтепродуктов на нефтеперерабатывающем заводе.

Вот только у ЮКОСА, а в дальнейшем у Роснефти не один, а сотня НПЗ по всей России.
10 ноя 18, 18:20    [21730534]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
казинак
Member

Откуда:
Сообщений: 1269
Дмитрий Мух
И возникает простая идея: раз у нас много чтения и относительно мало записи, и чтение страдает, то давайте использовать денормализованные таблицы (регистры).
матвью и репликации оч давно известны
очередной велосипед (гениальная идея) может и не хуже, но точно не лучше

Дмитрий Мух
Избавляемся как от сложных запросов на чтение, так и от множества блокировок. И всё начинает летать.

сложные запросы и блокировки - это параллельные понятия
блокировки порождаются изменениями
а не чтениями

а у вас
Дмитрий Мух
... относительно мало записи.
10 ноя 18, 20:02    [21730578]     Ответить | Цитировать Сообщить модератору
 Re: Причины ненависти к языку SQL?  [new]
казинак
Member

Откуда:
Сообщений: 1269
ViPRos
Дмитрий Мух,

чудес не бывает, все зависит от частоты чтения-записи, и обычно лучшая денормализация - sql view

да ну на...
запрос с кучей джойнов,
который одновременно несколько сотен юзеров запускает - это лучшая денормализация?
10 ноя 18, 20:08    [21730582]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 4 5 6 7 8 9 [10] 11 12 13   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить