Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 15 16 17 18 19 20 [21] 22 23 24   вперед  Ctrl
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
evostr
Причина в "если изменения из поврежденного журнала не успели попасть в основные файлы БД"

Хм. Хотите сказать, что в блок не пишется последний затронувший его SCN? Спасибо, буду знать.
25 июл 07, 11:20    [4432871]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
drev
1. "отсутствие проверки на реальное изменение поля - грубая ошибка" - показано, что это не всегда верное утверждение для 2005

Угу. Практически это выглядит так: сравнивали реализацию номер один с реализацией номер два, показан некий эксперимент над реализацией номер три. Занимательный пример на тему "интепретация результатов экспериментов" :)

drev
3. "Сотворение функциональности inserted, etc. в Оракл за 7 дней" - открыта, ждём ответа softwarer.

Честно говоря не уверен, что стоит продолжать. Вероятность услышать что-то интересное по моей текущей оценке близка к нулю.

Кратко - причина наших расхождений в том, что Вы очень привязаны к конкретным реализациям, не видите за деревьями леса. Термин "поток" в моих словах используется потому, что он позволяет описать любую реализацию, скажем:

1. Входной текст полностью обрабатывается лексическим анализатором, синтаксический читает лексемы из сформированного потока.

2. Синтаксический анализатор читает из потока. При исчерпании поток дергает лексический анализатор и получает от него очередной буфер лексем.

3. Синтаксический анализатор дергает лексический и получает от него очередную лексему.

4. Синтаксический анализатор дергает промежуточный буфер, который либо передает лексему из лексического анализатора, либо (после возврата на лексему назад) - ту же лексему, что и в прошлый раз.

5. Лексический анализатор читает одну лексему и вызывает синтаксический анализатор, передавая ему эту лексему.

6. .......

В рамках этой модели можно описать абсолютно любую реализацию. Скажем, Ваши анализаторы "сверху вниз" и "снизу вверх", делая вызов ReadToken, не знают и не могут знать, имеют ли они дело с первой, второй, третьей реализацией... разница только в том, совместима ли реализация с требованиями грамматики конкретного языка (ситуации, в которых интерпретация одной и той же последовательности символов зависит от контекста, от состояния парсера). Пятый вариант я написал специально - он, конечно, извращенный и неудобный, но даже такой вывернутый алгоритм и то укладывается в описанную схему.

drev
4. "кандидат в недостатки Оракл - невозможность определения смысла(типа) идентификатора без контекста" - открыта

Да и говорить о ней особо нечего. Это тема, от которой в компьютерных науках отказались в восьмидесятых годах прошлого века. То - было время, когда "God is real, unless explicitly defined as integer", когда S$ означало строку, S# - целое, а S - вещественное, когда назвать подпрограмму S было вообще невозможно - вместо этого надо было писать GOSUB 1000.

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

P.S. Вы бы лучше по каким-нибудь реальным недостаткам шпарили. Вот например могу подкинуть - хотя в большинстве случаев в Oracle можно опускать скобки, вызывая функцию без параметров, в некоторых контекстах эти пустые скобки обязательны. Неприятно и нелогично, я бы сказал.
25 июл 07, 11:45    [4433096]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
2pkarklin
у вас там неверное предположение
pkarklin
Согласитесь, что просканить записи лога, прочитав только старые данные и только новые данные по затратам это не тоже самое, что сделать джоин после скана.

вам прийдется сканить весь лог до маркера, не зависимо, что вам от него нужно. как и Softwarer невижу накладных расходов по ходу скана обрабатывать и LOP_MODIFY_ROW, дополнительного и/о это не кушает, а процессоры нынче резиновые.
25 июл 07, 11:48    [4433126]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Yo.!
а процессоры нынче резиновые.

Процессора это тоже не кушает. Там будет слияние отсортированных выборок - самое эффективное, что только можно выдумать.
25 июл 07, 11:52    [4433153]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 122115
softwarer

drev
4. "кандидат в недостатки Оракл - невозможность определения смысла(типа) идентификатора без контекста" - открыта

Да и говорить о ней особо нечего. Это тема, от которой в компьютерных науках отказались в восьмидесятых годах прошлого века. То - было время, когда "God is real, unless explicitly defined as integer", когда S$ означало строку, S# - целое, а S - вещественное, когда назвать подпрограмму S было вообще невозможно - вместо этого надо было писать GOSUB 1000.

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


Полностью поддерживаю. В Фортране целые переменные должны были начинаться c букв от
I до N. Никому и в голову не приходило выдавать это за товар первой свежести.
Просто бедность языка и средств лексического анализа, как и метка с первой по пятую позицию и символ продолжения строки в шестой ... Нет, спасибо, назад не хочу ...
25 июл 07, 11:58    [4433215]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
dmidek
В Фортране целые переменные должны были начинаться c букв от
I до N.

.. или тех, которые были указаны в "операторе" IMPLICIT.

Честно говоря, я очень люблю Фортран как кладезь "безнадежных" решений. Скажем, дополнительные точки входа в подпрограмму - это же просто прелесть :)
25 июл 07, 12:05    [4433260]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1285
softwarer
evostr
Причина в "если изменения из поврежденного журнала не успели попасть в основные файлы БД"

Хотите сказать, что в блок не пишется последний затронувший его SCN? Спасибо, буду знать.

Я этого не говорил.

Если уж заговорили о том как происходит Instance Recovery, то выглядит это примерно так (схематично, возможно, кое-где не совсем верно):
При следующем старте после Instance Failore запрашиваются значения low RBA (Redo Block Address - указывает на первый редо блок, с которого необходимо начинать восстановление) и on disk RBA (указывает на последний редо блок, записанный из log buffer в журнальный файл) из таблицы x$kcccp, которая является образом checkpoint progress record в controlfile. При этом механизм контрольных точек в oracle обеспечивает, что все изменения redo records до low RBA уже сброшены на диск из кеша (сохранены в файлы данных). Узнав low RBA Oracle ищет redo records, которой он соответствует и накатывает все последующие изменения до on disk RBA. Затем, используя сегменты отката, oracle откатывает изменения, которые не были зафиксированны.

Т.е. если у нас поврежден текущий (current) редолог и была хоть какая-то активность в базе данных, мы не сможем точно получить (есть правда маленькая вероятность, что нам пропрет) согласованную копию базы данных, т.к. 1) часть изменений, которая была выполнена и завершена (commit) могла не попасть в файлы данных; 2) часть изменений, которая не была завершена или была отменена (rollback), могла попасть в файлы данных; 3) предыдущие два пункта отягчаются, если были операции со словарем БД.

Поэтому после открытия базы с _allow_resetlogs_corruption, _corrupt_rollback_segments и т.д. или ручной правки журнальных файлов, получившееся нельзя уже называть базой данных, а только "скопищем файлов" (с) Ааз.

Именно поэтому текущие журнальные файлы являются одной из самых необходимых для восстановления структур в Oracle, и настоятельно рекомендуется их мультиплексировать.
25 июл 07, 12:15    [4433388]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
evostr
мы не сможем точно получить (есть правда маленькая вероятность, что нам пропрет) согласованную копию базы данных

Ну так про "точно" я ничего и не говорил, специально употребил "если".

Спасибо за рассказ, но мне кажется, Вы не раскрыли как раз тот случай, о котором я говорю - необходимость отката транзакции, которая была зафиксирована (если я правильно понимаю - конец которой оказался после low RBA). Для того, чтобы определить возможность такого, таки нужно знать начало транзакции (правда, может быть, его можно определять не маркером, а появлением соответствующей записи в rollback segment....)
25 июл 07, 12:39    [4433622]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Yo.!
2pkarklin
у вас там неверное предположение
... а процессоры нынче резиновые.


Ну, если

softwarer
слияние отсортированных выборок


будет делаться Духом Господнем, то да.

Напомнило сообщение при загрузке:

CPU not found! Press any key to software emulation... 
25 июл 07, 13:08    [4433883]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
evostr
Member

Откуда: Екатеринбург
Сообщений: 1285
softwarer
evostr
мы не сможем точно получить (есть правда маленькая вероятность, что нам пропрет) согласованную копию базы данных

Ну так про "точно" я ничего и не говорил, специально употребил "если".

"Если" в данном случае - это только с точки зрения человека, т.е. использовали для открытия БД недокументированные способы и нам вдруг повезло.
С точки зрения Oracle при повреждении всех журналов текущей (current) группы, единственный вариант получить согласованную копию - это неполное восстановление из резервной копии + resetlogs. Об этом, кстати, написано ссылке на документацию, которую я приводил выше.


softwarer
Спасибо за рассказ, но мне кажется, Вы не раскрыли как раз тот случай, о котором я говорю - необходимость отката транзакции, которая была зафиксирована (если я правильно понимаю - конец которой оказался после low RBA). Для того, чтобы определить возможность такого, таки нужно знать начало транзакции (правда, может быть, его можно определять не маркером, а появлением соответствующей записи в rollback segment....)

Если я правильно Вас понял, Вы говорите о возможности при instance recovery откатить транзакцию которая была зафиксирована, и информация о фиксации которой была в потеряном журнальном файле? По моему мнению, откатить такую транзакцию не получится, т.к. в заголовке соответствующего rollback segment храниться информация, что транзакция уже зафиксирована, а что там в файлах данных вобще никому неизвестно.
Другое дело, если мы осуществляем неполное восстановление из бекапа, тогда на резервные файлы данных будут накачены redo records только до сбойного журнального файла и в заголовке соответствующего rollback segment будет информация что транзакция активна, и все изменения, сделанные этой транзакцией будут отменены (с использованием данных rollback segment).

p.s. Все - ИМХО. Буду рад, если кто-нибудь дополнит/исправит.
25 июл 07, 13:47    [4434188]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
evostr
"Если" в данном случае - это только с точки зрения человека, ..... С точки зрения Oracle

Да, безусловно, я имею в виду в первую очередь точку зрения человека (если угодно, объективную реальность - данные или согласованы, или нет).

Почему Oracle не стал документировано поддерживать этот вариант - не знаю, абстрактно было бы интересно услышать ответ, хотя на практике он скорее всего сведется к "сложно писать, проще возложить на человека, играющего недокументированными рычагами".
25 июл 07, 14:23    [4434455]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Yo.!
Guest
pkarklin

будет делаться Духом Господнем, то да.

ну если сравнивать с джоином - то да, забесплатно.
25 июл 07, 16:02    [4435165]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
p
Guest
Геннадий Евтушенко
Я считаю оракл нормальный, да и любая версия нормальная.
Но вобще думаю примерно на одной ступеньке стоят FireBird, ACCESS и Оракл.
А MYSQL и SQL Server на уровне чуть выше и по самому качеству продукта и по сложности разработки под среду и обслуживания.

-----------------
Veni! Vidi! Vici!


Сравнивать FireBird, ACCESS и Оракл - это сравнивать ж* и палец
25 июл 07, 16:53    [4435568]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
Стивка-Бурка
Member

Откуда: из австралийской сказки
Сообщений: 117
evostr
и накатывает все последующие изменения до on disk RBA.
До "головы" журнального потока, что не одно и то же, что on disk RBA
25 июл 07, 20:17    [4436422]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
softwarer
drev
1. "отсутствие проверки на реальное изменение поля - грубая ошибка" - показано, что это не всегда верное утверждение для 2005

Угу. Практически это выглядит так: сравнивали реализацию номер один с реализацией номер два, показан некий эксперимент над реализацией номер три. Занимательный пример на тему "интепретация результатов экспериментов" :)




С Вами интересно обсуждать.

К счастью, разговор идёт в форуме и Ваши высказывания сохраняются.

Конкретная ветка началась с Ваших слов:

softwarer
Второй код - не обсуждая его смысла, страдает многократно упомянутым очевидным недостатком: постоянно проверяет тех, кто не менялся (у кого менялись другие поля). Снова - грубая ошибка, приводящая к реальной потере производительности. Остальное после этого даже смотреть не хочется
.

Т.е. обсуждались не "разные реализации", а конкретный SQL Server.

Вам наглядно сначала объяснили, а затем на примере показали, что "грубая ошибка" - это именно Ваше высказывание. И что попытка бездумной оптимизации в реальности может привести, и приводит, к потере производительности.
25 июл 07, 20:49    [4436489]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
softwarer



drev
3. "Сотворение функциональности inserted, etc. в Оракл за 7 дней" - открыта, ждём ответа softwarer.

Честно говоря не уверен, что стоит продолжать. Вероятность услышать что-то интересное по моей текущей оценке близка к нулю.

Кратко - причина наших расхождений в том, что Вы очень привязаны к конкретным реализациям, не видите за деревьями леса. Термин "поток" в моих словах используется потому, что он позволяет описать любую реализацию, скажем:

1. Входной текст полностью обрабатывается лексическим анализатором, синтаксический читает лексемы из сформированного потока.

2. Синтаксический анализатор читает из потока. При исчерпании поток дергает лексический анализатор и получает от него очередной буфер лексем.

3. Синтаксический анализатор дергает лексический и получает от него очередную лексему.

4. Синтаксический анализатор дергает промежуточный буфер, который либо передает лексему из лексического анализатора, либо (после возврата на лексему назад) - ту же лексему, что и в прошлый раз.

5. Лексический анализатор читает одну лексему и вызывает синтаксический анализатор, передавая ему эту лексему.

6. .......

В рамках этой модели можно описать абсолютно любую реализацию. Скажем, Ваши анализаторы "сверху вниз" и "снизу вверх", делая вызов ReadToken, не знают и не могут знать, имеют ли они дело с первой, второй, третьей реализацией... разница только в том, совместима ли реализация с требованиями грамматики конкретного языка (ситуации, в которых интерпретация одной и той же последовательности символов зависит от контекста, от состояния парсера). Пятый вариант я написал специально - он, конечно, извращенный и неудобный, но даже такой вывернутый алгоритм и то укладывается в описанную схему.




Продолжаем.

Все, что Вы написали, относится ко ВХОДУ синтаксического анализатора. Т.е. о месте, где понятие "поток" естественно, и с Вами никто не спорил.

Теперь, на какой пост Вы отвечали:


drev
softwarer
drev
Я продолжаю надеятся, уже совсем слабо, что вы поймёте, что описаное вами выше - "снизу вверх"

Если Вы раскроете, что именно понимаете под "снизу вверх", у этой надежды появятся хоть какие-то основания. Если примерно то же, что и я - для укрепления надежды Вам стоило бы привести хоть какие-то аргументы. Хотя в этом случае, здорово похоже, Вы попали в популярную логическую ловушку "я думаю, что это можно сделать так, а значит только так и никак иначе".




softwarer
Ее выходом является поток семантик - директив, имеющих смысл фраз, таких как "определи переменную", "возьми элемент массива", "присвой переменной значение выражения" итп



Поток, ИМХО, это последовательность независимых элементов, которая поступает на приёмник частями, более того, в это время на источнике поток может продолжать формироваться.

Есть парсеры, результатом работы которых является поток. Но он не состоит из "семантик - директив, имеющих смысл фраз". Приёмник получает события, например "открыт таг" или "началось определение цикла".

В парсерах второго типа источник получает некую иерархическую структуру, в просторечьи дерево, или в общем случае лес. Предположим, что у нас лес, и мы передаём деревья потоком. В этом случае, ни при каких обстоятельствах не встретится один из элементов, который вы упомянули - "возьми элемент массива". Он всегда будет частью некоторого дерева, т.е. не независимым элементом потока.

Оба вышеуказанных подхода в моём понимании - "сверху вниз"

Приведеный Вами пример, "возьми элемент массива", приводит нас к третьей группе парсеров, которые выворачивают иерархическую структуру наизнанку, типа "обратной польской записи". Если мы организуем результат такого парсера в виде потока, указанный вами элемент "возьми элемент массива" вполне допустим в качестве независимого элемента. Да и остальные тоже (зависит от уровня, при котором парсер перестает выворачивать дерево наизнанку). Кстати, одновременно "возьми элемент массива" и "присвой переменной значение выражения" в потоке встретится не могут. При одном уровне разворота первый будет частью элемента потока, подобного второму, при более низком - второй будет задан последовательностью из нескольких элементов потока.

Третий подход в моём понимании - "снизу вверх"

Я достаточно подробно объяснил свою мысль?








Т.е обсуждался вопрос о ВЫХОДЕ синтаксического анализатора. Вроде бы достаточно наглядно были показаны противоречия в Ваших высказываниях по этому поводу.

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

Кстати, мои знакомые, которым бы пришлось разрабатывать функциональность, на которую Вы отвели неделю, а я - год, сказали, что я неимоверно оптимистичен.
25 июл 07, 21:47    [4436581]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
drev
С Вами интересно обсуждать.
К счастью, разговор идёт в форуме и Ваши высказывания сохраняются.

Да, безусловно, это весьма удобно.

drev
softwarer
Второй код - не обсуждая его смысла, страдает многократно упомянутым очевидным недостатком: постоянно проверяет тех, кто не менялся (у кого менялись другие поля). Снова - грубая ошибка, приводящая к реальной потере производительности. Остальное после этого даже смотреть не хочется
.

Т.е. обсуждались не "разные реализации", а конкретный SQL Server.

Really? И где здесь сказано про "конкретный SQL Server"? Раз уж Вы позволяете себе раскраивать ткань разговора, будьте так любезны предметно показывать.

drev
Вам наглядно сначала объяснили, а затем на примере показали, что "грубая ошибка" - это именно Ваше высказывание.

Так на каком примере показали-то - на примере MSSQL2000, которого я долго ждал, чтобы ответить про Вашу зацикленную логику, или на примере MSSQL2005, в котором реализация вообще третья? Я уже признаться запутался в Ваших высказываниях.
25 июл 07, 23:20    [4436735]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
Весело:)

Ваше высказывание номер 1:

sofwarer
Второй код - не обсуждая его смысла, страдает многократно упомянутым очевидным недостатком: постоянно проверяет тех, кто не менялся (у кого менялись другие поля). Снова - грубая ошибка, приводящая к реальной потере производительности. Остальное после этого даже смотреть не хочется



Ваше высказывание номер 2:

sofwarer
Угу. Практически это выглядит так: сравнивали реализацию номер один с реализацией номер два, показан некий эксперимент над реализацией номер три. Занимательный пример на тему "интепретация результатов экспериментов" :)



Ваше высказывание номер 1 относилось к конкретному коду, не так ли?:) Не к Ораклу, не к мифической базе, а к конкретному коду на SQL Server T-SQL, да?:)

Вы сделали заявление про конкретный код , да?:) Вы не спрашивали версию, правда? Вы сделали своё заявление про конкретный пример кода? Не про мифические реализации 1, 2, 3 - кстати, что Вы под ними имеете ввиду, скажите внятно, 1 - такая то, 2- .., 3 - .

Вы заявили - ГРУБАЯ ОШИБКА. Про код. Вам показали контр-пример. Вы начали выкручиваться:)


Понимаете, иногда, прежде чем, с апломбом объявлять код грубой ошибкой, исходя из некоего шаблона, который Вы где-то вычитали, нужно думать:)

Я понимаю, что человек, который по отношению к высказываниям других людей с восхитительной лёгкостью употребляет слово "глупость", к этому не привык, но думать надо.
25 июл 07, 23:56    [4436828]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
drev
Т.е обсуждался вопрос о ВЫХОДЕ синтаксического анализатора.

Я не вижу оснований для Вашего "т.е." Кстати, удобный случай намекнуть Вам на то, что Ваша манера квотить далека от оптимальной - Вы вроде как отвечаете на все сразу, но при этом в Вашем ответе нет и намека на ответ по поводу доброй половины процитированного. Если теперь оказывается, что из всего процитированного обсуждался только один абзац - извините, для меня это новость.

drev
Вроде бы достаточно наглядно были показаны противоречия в Ваших высказываниях по этому поводу.

Любопытно, кому наглядно.

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

У Вас в процитированном много странных фраз, но я сосредоточусь вот на этом

drev
В парсерах второго типа источник (*) получает некую иерархическую структуру, в просторечьи дерево, или в общем случае лес. ... Оба вышеуказанных подхода в моём понимании - "сверху вниз"

Приведеный Вами пример, "возьми элемент массива", приводит нас к третьей группе парсеров, которые выворачивают иерархическую структуру наизнанку, типа "обратной польской записи". .....
Третий подход в моём понимании - "снизу вверх"

(*) Полагаю, следует вместо "источник" читать "приемник", то есть семантические стадии

Итак, допустим, мы хотим разобрать выражение a = 1 + 2, и используем для этого хотя бы рекурсивный спуск, как самый простой алгоритм. Зададимся вопросом - это парсер "сверху вниз" или "снизу вверх"?

Рекурсивный спуск будет работать следующим образом: начнет с assignment, пойдет парсить lvalue, опустится до идентификатора и успокоится. Поднимется наверх, в assignment, прочитает там знак равенства и пойдет парсить expression. Там он спустится через сомножители-слагаемые, опознает константы, размотает цепочку вызовов и успешно завершит работу.

Допустим, мы написали такой алгоритм, который вообще не имеет выхода - только проверяет соответствие входной фразы грамматике. Дальше мы поссорились и стали писать каждый свой вариант формирования выходных данных. Вы сделали следующее: при входе в подпрограмму анализа создается соответствующий узел дерева, при выходе - он передается родителю, который привязывает его как дочерний к своему узлу. Таким образом, результатом разбора каждого нетерминала является дерево, результатом разбора стартового символа грамматики - полное дерево разбора. Вы гордо говорите: вот он, мой анализатор сверху вниз. В это же самое время я пишу следующее: каждая подпрограмма после успешного разбора пихает в выходной поток свой маркер (семантику). В этом случае результатом разбора окажется [ident=a] [const=1] [const=2] [add] [expr] [assignment] - тот самый "вывернутый наизнанку поток типа обратной польской записи", на основании которого я должен был бы сказать "вот он, мой анализатор снизу вверх".

Однако, получился парадокс. Получилось, что "легким движением руки брюки превращаются". А все из-за очень странного понимания термина, попытки судить об архитектуре анализатора по совершенно третьестепенному признаку.
26 июл 07, 00:18    [4436873]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
drev
Ваше высказывание номер 1 относилось к конкретному коду, не так ли?:) Не к Ораклу, не к мифической базе, а к конкретному коду

Именно так. К конкретному коду, которым Вы пытались обосновать необходимость inserted-only операций в IUD-реализации.

Смешно, право слово. Вы не только зациклили логику, но еще и пытаетесь протолкнуть это как правильное мышление.

drev
Вы сделали заявление про конкретный код , да?:) Вы не спрашивали версию, правда? Вы сделали своё заявление про конкретный пример кода?

Да, про конкретный пример кода. Который Вы привели в ответ на вопрос - "назовите хоть какую-нибудь задачу, для реализации которой нужен такой код". А вопрос появился в ответ на Ваше утверждение "такой код нужен в IUD-реализации".

Вопрос: какую реализацию мы при этом обсуждаем?

drev
Не про мифические реализации 1, 2, 3 - кстати, что Вы под ними имеете ввиду, скажите внятно, 1 - такая то, 2- .., 3 - .

3 - реализация MSSQL2005. 1 и 2 - IUD и ID; какая соответствует какому номеру - непринципиально.

drev
Вы заявили - ГРУБАЯ ОШИБКА. Про код. Вам показали контр-пример. Вы начали выкручиваться:)

И опять Вы пытаетесь смайликом замаскировать передергивание. Прямо как некоторые дамы, которые "я знаю, что я поступаю как сволочь, но если я кокетливо улыбнусь, меня наверняка простят".

Оказывается, Ваша логическая ошибка - это "я выкручиваюсь".

drev
Понимаете, иногда, прежде чем, с апломбом объявлять код грубой ошибкой, исходя из некоего шаблона, который Вы где-то вычитали, нужно думать:)

Игорь, Вы кажется на 16-й странице признались, что недостаточно думаете над тем, что говорите в топике. Из этого следует, что оценить мой интеллектуальный вклад - Вы вряд ли способны. А вопрос относительно демагогии мы, как мне казалось, выяснили еще страниц пятнадцать назад. Я согласен с тем, что ритор Вы вполне пристойный, но простите - скучно.
26 июл 07, 00:33    [4436904]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
Александр, Вы, кажется, любите аналогии и логику?:)

Итак, представьте, мы едем в трамвае. Разговариваем о погоде. Я привожу высказывание некоего человека. Вы утверждаете - это высказывание глупость. Или - оно содержит ошибку. И объясняете почему. Я объясняю Вам, что Вы неправы. Процесс - длительный. В конце процесса Вы говорите: "Да, но нужно помнить, что я сказал это, когда мы ехали в трамвае и говорили о погоде".

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

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

Далее, выяснилось, что Вы имели ввиду проверку именно сравнением старых и новых значений.

Вам показали, на конкретном примере, на SQL Server 2005, что Ваше утверждение неверно. Что затраты на проверку могут превысить выигрыш от невыполнения "лишних" изменений.

Какой информацией Вы располагали, давая свою оценку кода? Вы знали, что код написан на T-SQL SQL Server, версия была Вам не известна. Вы её не уточняли.

Т.е. Ваше высказывание никак не могло относится к IUD. T.e. "реализация" 1 имеет такое же отношение к Вашему высказыванию, как трамвай и погода к высказыванию в приведённом выше примере.

Теперь по поводу ID - 2 и SQL Server 2005 - 3. Употребляя слово "реализация", Вы ставите в один логический ряд несовсем сопоставимые вещи.

Точной аналогией является ряд "вертолёт", "самолёт" и "Боинг-787".

Т.е. IUD -1 и ID - 2 - это модели данных, а в SQL Server 2005 -3 была осуществлена реализация модели 2.

Далее, так как Вы не знали версии, Ваше высказывание о "грубой ошибке" относилось к любой реализация модели ID -2 на SQL Server, в том числе и к SQL Server 2005 - 3.

Т.е. пример, опровергающий Ваше высказывание на SQL Server 2005, опровергает Ваше высказывание в целом.

Аналогия:

Высказывание: У самолётов есть пропеллер.

Контр-пример: У Боинг-787 нет пропеллера.

Вывод: Высказывание неверно.

Я надеюсь, мой анализ Вашего "интеллектуальный вклада" понятен?

На Вашем месте, я бы извинился перед автором кода.

А то, неэтично как-то получается.

P.S. Мне тоже нравится Ваш слог. Без иронии.
26 июл 07, 02:52    [4437023]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
drev
Александр, Вы, кажется, любите аналогии и логику?

Я люблю адекватные аналогии и умелую логику.

Если мы едем в трамвае, разговариваем о погоде и Вы говорите "Вася Пупкин сказал, что идет дождь" - я вполне могу посоветовать выглянуть в окно и убедиться, что тот ошибается. Если после долгого выяснения окажется, что Вася сказал это в прошлом году - я попрошу... корректнее передавать его мысли.

drev
Ваша оценка кода была самостоятельным высказыванием

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

drev
Вам показали, на конкретном примере, на SQL Server 2005

1. О закольцовывании логики я уже говорил.
2. О замечательности скрытного перехода к третьей реализации я уже говорил.

drev
Т.е. Ваше высказывание никак не могло относится к IUD.

Как человек с математическим образованием, Вам придется очень постараться, чтобы не понять того простого факта, что Ваше "Т.е." совершенно ничем не обосновано. Вы пытаетесь вывести обоснование из языка, игнорируя сразу два очевидных факта: во-первых, я просил постановку задачи, неважно на каком языке, ожидал вообще говоря на русском, но реальной задачи, во-вторых, если уж полагать язык важным, придется отметить, что у обсуждаемого IUD он предполагается точно таким же.

drev
Т.е. IUD -1 и ID - 2 - это модели данных, а в SQL Server 2005 -3 была осуществлена реализация модели 2.

Фи, как неизяшно передергиваете. В SQL2005 была осуществлена реализация совсем не той модели, о которой говорили Вы. Согласен, я назвал ее ID, хотя полностью следовало бы назвать "ID основанная на чтении лога и далее краткое изложение всей нашей беседы". Теперь Вы пользуетесь исключительно отсутствием столь подробного названия, чтобы подменить понятия.

drev
Т.е. пример, опровергающий Ваше высказывание на SQL Server 2005, опровергает Ваше высказывание в целом.

В целом - классическая демагогия. Чтобы показать ее высочайшую конструктивность (напомню, Вы за нее ратовали), давайте посмотрим, куда мы зайдем таким путем.

Допустим, Вы формулируете некоторое позитивное утверждение применительно к модели, причем эта модель не является исчерпывающим описанием реализации. Что есть исчерпывающее - не готов придумать строго формального определения, неформально - столь детальное, что фактически эквивалентно полностью написанной программе. Если определение позволяет, например, вставить лишнюю строку кода в некое место - оно уже не исчерпывающее. В этом случае я имею возможность выполнить реализацию, соответствующую всем названным признакам модели, однако сделать эту реализацию максимально негативной - скажем, напихать sleep-ов в каждую щель. Таким образом я могу погубить любые позитивные высказывания - работает, быстро, мало памяти итп. Используя Вашу логику, получаем, что этот пример опровергает Ваше утверждение в целом. Фактически беседа превратится в бессмысленное "затыкание дырок торможения в модели" с одной стороны и подключение новых - с другой.

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

drev
Аналогия:
Высказывание: У самолётов есть пропеллер.
Контр-пример: У Боинг-787 нет пропеллера.

Еще одна некорректная аналогия. Ближе так:

Высказывание: У самолета есть двигатель
Контр-пример: а если оторвать, то двигателя не будет.
26 июл 07, 04:13    [4437036]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
Знаете, Александр, я уже почти готов поверить, что Вы не выкручиваетесь. По крайней мере сознательно.

Похоже у Вас определённые проблемы с классификацией.

Грубо говоря, на выходе вашего внутреннего парсера идёт "поток семантик - директив". Абсолютно неструктурированный.

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

Существует очень простая проверка в терминах данного форума. Можно ли ветку сделать самостоятельным топиком?

Представьте, что ветка начинается с отрывка кода, который я привёл. Затем Ваше высказывание про грубую ошибку. И пошло-поехало.

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

Рассмотрим пример с "реализациями" и "моделями".


Первая сущность - модель(IUD):

В statement-level triggers доступны три объекта, имеющих табличную структуру: inserted, updated и deleted.

Объект inserted содержит состояния новых записей. Структура записи аналогична структуре записи основной таблицы

Объект updated содержит старые и новые состояния изменённых записей. Структура записи представляет собой "удвоенную" структуру записи основной таблицы Имена колонок, содержащих старые состояния, имеют префикс old_, новых - new_.

Объект deleted содержит состояния удалённых записей. Структура записи аналогична структуре записи основной таблицы.

Вторая сущность - модель(ID):

В statement-level triggers доступны два объекта, имеющих табличную структуру: inserted и deleted.

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

Объект deleted содержит старые состояния записей. Структура записи аналогична структуре записи основной таблицы


На этом описание моделей закончено. Вся остальная информация - детали имплементации (или, как Вы говорите, реализации).

Третья сущность - "реализация" второй модели на 2005ом. Согласно ссылке Yo!, она имплементирует модель два при помощи временных таблиц.


После того, как я указал Вам, что сущности 1 и 2 находятся на другом уровне абстракции, чем сущность 3, Вы понизили уровень абстракции сущности 2 и превратили её в сущность 2' - "ID основанная на чтении лога и далее краткое изложение всей нашей беседы".

После этого действия, Вы получили ситуацию, когда сущности 1, 2' и 3 принадлежат каждая к своему уровню абстракции, и никакие операции сравнения невозможны. Можно сравнивать фрукты(2) и овощи(1), но ни одному нормальному человеку не придёт в голову сравнивать яблоки(2') с овощами(1).

В ходе этого мероприятия вы допустили достаточно тяжёлый грех для программиста - смешали модель с имплементацией. Но это грех хоть и тяжёлый, но простимый.

Но ставить в один логический ряд сущности разного уровня абстракции?! Это уже "смертный грех" для архитектора БД.

Я уверен, что это сделано в полемическом задоре, иначе я бы Вас, на месте Вашего руководства, и близко не подпустил к архитектуре баз данных.
26 июл 07, 09:46    [4437484]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
drev
Member

Откуда: Одесса - Берег Красного Дерева - Красный мир
Сообщений: 564
dmidek
softwarer

drev
4. "кандидат в недостатки Оракл - невозможность определения смысла(типа) идентификатора без контекста" - открыта

Да и говорить о ней особо нечего. Это тема, от которой в компьютерных науках отказались в восьмидесятых годах прошлого века. То - было время, когда "God is real, unless explicitly defined as integer", когда S$ означало строку, S# - целое, а S - вещественное, когда назвать подпрограмму S было вообще невозможно - вместо этого надо было писать GOSUB 1000.

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


Полностью поддерживаю. В Фортране целые переменные должны были начинаться c букв от
I до N. Никому и в голову не приходило выдавать это за товар первой свежести.
Просто бедность языка и средств лексического анализа, как и метка с первой по пятую позицию и символ продолжения строки в шестой ... Нет, спасибо, назад не хочу ...


Так, набралось два правоверных ораклиста. Или принято говорить ораклоида.

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

Допустим там написано:

delete from b where id = a;


Откроет он декларацию таблицы. Нет колонки а? Великолепно!

Начнёт он искать декларацию переменной или параметра.

Предположим, IDE ему поможет (нормальные IDE появились не так давно, ну ладно).

Нашёл! Параметр! Великолепно! Не придётся искать функцию с именем а.


Понял человек код. Написал комментарий. "Эта процедура удаляет записи из таблицы b с id равным параметру а".

И уволился.

А через полгода другой человек решил добавить в табличку b колонку с именем а.

И добавил.

И не было громов и молний.. и ошибок и предупреждений тоже не было.

После чего третий человек запустил процедуру Х с значением параметра а равным двум.

И не было громов и молний.. и ошибок и предупреждений тоже не было.

И вместо одной строчки из таблицы b удалились все строчки , у которых значение колонки id совпало со значением колонки а.

Вот такая страшная сказка.


И всего этого не было бы, если бы Оракл поддерживал целостность бизнес-логики, а не разрешал конфликты имён динамически.

Теперь, господа ораклисты, проблема понятна?

А Вы говорите "павлины".. то бишь - "кракозябры".
27 июл 07, 12:38    [4445018]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте Оракл 10г  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 122115
drev
dmidek
softwarer

drev
4. "кандидат в недостатки Оракл - невозможность определения смысла(типа) идентификатора без контекста" - открыта

Да и говорить о ней особо нечего. Это тема, от которой в компьютерных науках отказались в восьмидесятых годах прошлого века. То - было время, когда "God is real, unless explicitly defined as integer", когда S$ означало строку, S# - целое, а S - вещественное, когда назвать подпрограмму S было вообще невозможно - вместо этого надо было писать GOSUB 1000.

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


Полностью поддерживаю. В Фортране целые переменные должны были начинаться c букв от
I до N. Никому и в голову не приходило выдавать это за товар первой свежести.
Просто бедность языка и средств лексического анализа, как и метка с первой по пятую позицию и символ продолжения строки в шестой ... Нет, спасибо, назад не хочу ...


Так, набралось два правоверных ораклиста. Или принято говорить ораклоида.

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

Допустим там написано:

delete from b where id = a;


Откроет он декларацию таблицы. Нет колонки а? Великолепно!

Начнёт он искать декларацию переменной или параметра.

Предположим, IDE ему поможет (нормальные IDE появились не так давно, ну ладно).

Нашёл! Параметр! Великолепно! Не придётся искать функцию с именем а.


Понял человек код. Написал комментарий. "Эта процедура удаляет записи из таблицы b с id равным параметру а".

И уволился.

А через полгода другой человек решил добавить в табличку b колонку с именем а.

И добавил.

И не было громов и молний.. и ошибок и предупреждений тоже не было.

После чего третий человек запустил процедуру Х с значением параметра а равным двум.

И не было громов и молний.. и ошибок и предупреждений тоже не было.

И вместо одной строчки из таблицы b удалились все строчки , у которых значение колонки id совпало со значением колонки а.

Вот такая страшная сказка.


И всего этого не было бы, если бы Оракл поддерживал целостность бизнес-логики, а не разрешал конфликты имён динамически.

Теперь, господа ораклисты, проблема понятна?

А Вы говорите "павлины".. то бишь - "кракозябры".


В Ваших устах слова "ораклисты" звучит как ругательство.
От человека, который "с Эллисоном на дружеской ноге" (C) :-)
я ожидал бОльшей лояльности.

По поводу Вашего текста - существуют СТАНДАРТЫ написания кода и
существует СИНТАКСИС этого кода. По моему мнению практика пренебрежение
стандартами написания кода путем ужесточения требований к синтаксису
является в корне порочной. Я думал, что это вообще уже "прошлогодний снег" и
попытка прикрыть благородными целями несовершенство лексического анализатора.
27 июл 07, 12:49    [4445109]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 15 16 17 18 19 20 [21] 22 23 24   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить