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

Откуда: Melbourne
Сообщений: 1344
softwarer

Но случилось так, что связали их именно Вы, создав топик со словом "Oracle", написав внутри в том числе про Oracle, и закончив примерно следующим: "я ни хрена не понял написанное вице-президентом Oracle (или кто он там), а потому хочу проявить к нему недружественность".

С каких пор у вас появилась отвратительная привычка передергивать факты и присваивать людям высказывания, которых небыло ?
Был топик про Оракл и Yukon. В его конце было четко написано : "Offtopic", что в переводе на русский (если вдруг кто не знает), означает - отклонение от первоначальной темы. В этом оффтопике было написано про манеру Кайта писать книги. Никакой "связки" Оракла с Кайтом там нет.
14 ноя 05, 16:25    [2066792]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
За исключением того, что Кайт один из наиболее известных и уважаемых апологетов Oracle
14 ноя 05, 16:27    [2066798]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
Gluk (Kazan)
Пока вижу только бардак в плане постановки задачи


CREATE TABLE DOCUMENT_TYPE(TYPE_ID NUMBER PRIMARY KEY, COUNT NUMBER);

CREATE TABLE DOCUMENT (DOCUMENT_ID NUMBER PRIMARY KEY, TYPE_ID NUMBER REFERENCES DOCUMENT_TYPE(TYPE_ID));

CREATE TABLE FORMAT (FORMAT_ID PRIMARY KEY);

CREATE TABLE FORMAT_DOCUMENT(DOCUMENT_ID NUMBER REFERENCES DOCUMENT(DOCUMENT_ID), FORMAT_ID NUMBER REFERENCES FROMAT(FORMAT_ID), PRIMARY KEY(DOCUMENT_ID, FORMAT_ID))

Требуется сделать ограничение: количество записей для каждого документа в таблице FORMAT_DOCUMET не должно превышать COUNT из таблицы DOCUMENT_TYPE. Сделать без использования блокировок любого типа. Если не получится сделать без блокировок - объяснить, почему не получилось.
14 ноя 05, 16:35    [2066823]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
ЛП
Guest
2 Gluk (Kazan)
Пока вижу только бардак в плане постановки задачи

По моему человек пытается спросить, как с фантомными аномалиями бороться на уровне snapshot. Если я правильно понял, конечно.
14 ноя 05, 16:46    [2066864]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
1. Завести поле-счетчик в DOCUMENT_TYPE
2. Обновлять его при добавлении документа и сравнивать с COUNT
в триггере уровня строки
3. Если значение COUNT превышено, бросать исключение

Требование по поводу отсутствия блокировок напоминает распоряжение о том чтобы отныне Солнце восходило на западе. DML-операторы будут блокировать свои данные как обычно

P.S. И не стоит азывать поле COUNT, если Вы конечно не любитель гемороя
14 ноя 05, 16:49    [2066874]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
ЛП
2 Gluk (Kazan)
Пока вижу только бардак в плане постановки задачи

По моему человек пытается спросить, как с фантомными аномалиями бороться на уровне snapshot. Если я правильно понял, конечно.


Являются ли они аномалиями для версионника, вот в чем вопрос ?
Человек явно не знает таких сложных слов ;)
14 ноя 05, 16:50    [2066878]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
Gluk (Kazan)
1. Завести поле-счетчик в DOCUMENT_TYPE
2. Обновлять его при добавлении документа и сравнивать с COUNT
в триггере уровня строки
3. Если значение COUNT превышено, бросать исключение

Требование по поводу отсутствия блокировок напоминает распоряжение о том чтобы отныне Солнце восходило на западе. DML-операторы будут блокировать свои данные как обычно

P.S. И не стоит азывать поле COUNT, если Вы конечно не любитель гемороя


Идея ясна. Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести. И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик. А Вы забыли. Так что Ваше решение неработоспособно. Так как десять транзакций будут иметь свои снимки данных, не видя того, что вставили другие транзакции. И после фиксации данных и счётчик неправильный будет и ограничение не выполнится.
14 ноя 05, 16:55    [2066900]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
Gluk (Kazan)
Являются ли они аномалиями для версионника, вот в чем вопрос ?


Версионник может позволить себе работать непредскузуемым образом - это не вопрос!
14 ноя 05, 16:59    [2066914]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
ЛП
2 Gluk (Kazan)По моему человек пытается спросить, как с фантомными аномалиями бороться на уровне snapshot. Если я правильно понял, конечно.


Речь идёт не только о фантомных аномалиях. Это был не вопрос, а пример. При версионности невозможно не только с фантомными аномалиями бороться, но и вообще управлять логикой программы на основе данных, взятых из базы. У меня есть и другие примеры. Этот самый наглядный.
14 ноя 05, 17:02    [2066925]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
ЛП
Guest
Gluk (Kazan)
Являются ли они аномалиями для версионника, вот в чем вопрос ?
Человек явно не знает таких сложных слов ;)

Аномалии являются аномалиями независимо от того, версионник это, блокировочник, или вообще гибрид. И независимо от того, какие слова человек знает. Аномалии либо могут встречаться на тех уровнях изоляции, которые поддерживаются сервером, либо не могут.
На оракловом serializable (который snapshot) фантомы возможны, если не предпринимать дополнительных телодвижений. Если я не прав, то спецы меня поправят.
14 ноя 05, 17:03    [2066931]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67425
Блог
VoDA
С другой стороны по Кайту (и не только) на Оракле нужно применять связанные переменные, MS SQL не озависит от этого. Хотя тестов не устраивал

Не совсем так.

Как работает Oracle: в нормальном режиме он делает именно то, что ему сказал программист. Если дан запрос вида

where a = :a and b = 1

сервер построит план для "b = 1, a - любое" и будет использовать его для последующих аналогичных запросов. Для запроса вида

where a = :a and b = 2

он построит другой план. Таким образом, программист имеет возможность гибко выбрать, что ему важнее - неоднородность данных (построение разных планов для разных b) либо экономия на перестроении плана (объединение по a). На это накладываются дополнительные моменты.

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

where a = :a and b = :b

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

Как работает MS SQL (насколько я понял Merle): он работает в целом близко ко второму (cursor_sharing) режиму работы Oracle. Понятие bind variables там практически отсутствует; существует некий барьер, критическое число, после которого сервер решает, что у него "слишком много похожих планов" и сжимает их в один общий. Кроме того, существуют какие-то (непонятные мне) отличия в случае того, выполняется ли запрос из хранимой процедуры или передан непосредственно.

Итого, получается следующее: в случае Oracle существует возможность гибкой настройки каждого конкретного запроса. Ценой этого является возможность создания плохо написанного приложения, что (снаружи; без исправления приложения) может быть скорректировано только весьма грубой кувалдой. MSSQL более адаптивен, пытается подстроиться под стиль запросов приложения; ценой этого является невозможность тонкой регулировки и, возможно, регулярно упоминаемая меньшая эффективность запросов, не упакованных в хранимки.
14 ноя 05, 17:04    [2066934]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
DarkSquid
[quot Gluk (Kazan)]Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести.

И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик.


Бред

автор
Версионник может позволить себе работать непредскузуемым образом - это не вопрос!


Как я уже сказал, то что Вы не понимаете как ведет себя сервер, не означает, что он ведет себя непредсказуемо

С "ТЗ" у Вас тоже каша в голове, как и было сказано
14 ноя 05, 17:05    [2066949]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
Gluk (Kazan)
DarkSquid
[quot Gluk (Kazan)]Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести.

И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик.


Бред


Сам ты бред. Не веришь - проверь.
14 ноя 05, 17:07    [2066956]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
Gluk (Kazan)
Как я уже сказал, то что Вы не понимаете как ведет себя сервер, не означает, что он ведет себя непредсказуемо


Прошу прощения, но это Вы не понимаете, как ведёт себя сервер.
14 ноя 05, 17:08    [2066963]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
ЛП
Guest
2 DarkSquid
Речь идёт не только о фантомных аномалиях. Это был не вопрос, а пример.

Пример так пример. Не вопрос :).

При версионности невозможно не только с фантомными аномалиями бороться

Однако ж люди как-то борются.

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

Еще более сильное утверждение. Думаю, что и еще более неправильное.
14 ноя 05, 17:09    [2066967]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
ЛП
На оракловом serializable (который snapshot) фантомы возможны, если не предпринимать дополнительных телодвижений. Если я не прав, то спецы меня поправят.


Вы правы, если подобные аномалии недопустимы в Вашей задаче, следует совершать "дополнительные телодвижения".
Теперь расскажите, как построить версионник без подобных аномалий и без отвратительных просадок по производительности при блокировании диапазонов ключей с соотвественно увеличивающеся вероятностью deadlock-ов ???
14 ноя 05, 17:10    [2066970]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
ЛП
При версионности невозможно не только с фантомными аномалиями бороться

Однако ж люди как-то борются.


Они борются идеологически. В вере их сила.
14 ноя 05, 17:10    [2066974]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
DarkSquid
Gluk (Kazan)
Как я уже сказал, то что Вы не понимаете как ведет себя сервер, не означает, что он ведет себя непредсказуемо


Прошу прощения, но это Вы не понимаете, как ведёт себя сервер.


Какой именно ?
14 ноя 05, 17:10    [2066976]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67425
Блог
DarkSquid
Gluk (Kazan)
Бред

Бред и есть, самый натуральный. Или же Вы сформулировали так, что я понял нечто совсем иное, нежели Вы имели в виду. "Необходимость явно блокировать строку перед ее обновлением" - пожалуй, мне будет очень интересно увидеть ее работающий пример. На этот раз уже пожалуй что с кодом, чтобы избежать непонимания.
14 ноя 05, 17:11    [2066980]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
DarkSquid
Gluk (Kazan)
DarkSquid
[quot Gluk (Kazan)]Только поле счётчик надо не в DOCUMENT_TYPE, а в DOCUMENT завести.

И, чтобы всё действительно работало надо не забыть перед обновлением нового счетчика сделать select for update на этот счётчик.


Бред


Сам ты бред. Не веришь - проверь.


Переходим на личности ??? Ню Ню
Было любопытно с вами пообщаться, но пользы мне в таком общении ни на грош
А время дорого
14 ноя 05, 17:12    [2066981]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
ЛП
Guest
Gluk (Kazan)
Теперь расскажите, как построить версионник без подобных аномалий и без отвратительных просадок по производительности при блокировании диапазонов ключей с соотвественно увеличивающеся вероятностью deadlock-ов ???

Пардон, это ко мне? Я то здесь при чем?
Если бы пришлось на версионнике с фантомами бороться в конкретной задаче, по условиям которой "подобные аномалии недопустимы" - ну сделал бы какое-нить дополнительное поле с дополнительной проверкой в триггере (т.е. в общем-то как в Вашем решении). А лечить Оракл от фантомных болезней снапшота - увольте, этим пусть юнцы с горящим взором занимаются :).
14 ноя 05, 17:16    [2067004]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Вот он консенсус ???

Эти юнцы все больше предпочитают раскрывать жидо-массонские заговоры ораклоидных Лож, а чуть что кричать "сам дурак"

14 ноя 05, 17:20    [2067017]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
softwarer

Как работает MS SQL (насколько я понял Merle): он работает в целом близко ко второму (cursor_sharing) режиму работы Oracle. Понятие bind variables там практически отсутствует; существует некий барьер, критическое число, после которого сервер решает, что у него "слишком много похожих планов" и сжимает их в один общий. Кроме того, существуют какие-то (непонятные мне) отличия в случае того, выполняется ли запрос из хранимой процедуры или передан непосредственно.

Итого, получается следующее: в случае Oracle существует возможность гибкой настройки каждого конкретного запроса.

А какая разница между where a = :a и where a = @a ? Если никакой - то не получается.
Я же тоже могу писать
where a = @a and b = @b
вместо
where a = :a and b = :b
и тогда план будет тоже повторно использоваться
14 ноя 05, 17:24    [2067040]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
PL/SQL тоже параметризует используемые в SQL переменные,
тока как быть с клиентским кодом ?
14 ноя 05, 17:27    [2067048]     Ответить | Цитировать Сообщить модератору
 Re: Почему ораклисты так не любят MS SQL?  [new]
DarkSquid
Member

Откуда: http://terredesreves.3bb.ru/
Сообщений: 4882
Специально для ораклистов:-

Транзакция A


SQL>
SQL> select * from a;

A B
---------- ----------
1 1
1 4

SQL> select * from a;

A B
---------- ----------
1 1
1 4

SQL> insert into a(a,b) values (1,5);

1 row created.

SQL> select count(*) from a where a=1;

COUNT(*)
----------
3



Транзакция B

Connected.
SQL> select * from a;

A B
---------- ----------
1 1
1 4

SQL> select count(*) from a where a = 4;

COUNT(*)
----------
0

SQL> select * from a where a = 1;

A B
---------- ----------
1 1
1 4

SQL> select count(*) from a where a = 1;

COUNT(*)
----------
2
SQL>


Что предлагают ораклисты? Посчитать count(*) и поместить его в поле счётчик в таблице DOCUMENT, после чего проверить ограничение в триггере на уровне строки. Это и есть бред или типичная ошибка ораклистов.

Чтобы её избежать, надо всегда в триггере перед модификацией данных, от которых зависит поле-счётчик блокировать это поле, а уже после модификации обновлять его, оставляя заблокированным до завершения транзакции. Это есть не бред, а единственно верное решение.
14 ноя 05, 17:27    [2067050]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9 10 .. 19   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить