в таблице Oracle — неразумная идея (даже несмотря на то, что в OracleS предел количества столбцов в одной таблице увеличен до 1000). Поэтому рекомендуем использовать отдельную таблицу, элементы которой, опять-таки, управляются триггерами на таблице Documents. Естественно, первичным ключом второй таблицы будет (keyword, doc_id), а это, вероятно, целая строка. Однако это недостаточно веская причина для того, чтобы сделать из данной таблицы индекс-таблицу. Как говорилось выше, на индекс-таблицы распространяется ряд ограничений. Кроме того, для индекс-таблиц также характерно серьезное снижение производительности при загрузке данных. Несмотря на необходимость в дополнительном пространстве, мы настоятельно рекомендуем, чтобы вторая таблица была обычной (даже если бы она обновлялась только в пакетном режиме, а число ключевых слов небольшим*, все равно bitmap-индекс по ключевому слову был бы серьезным фактором повышения производительности).
Опция NOLOGGING
В Oracle версии 7.3 для предложений INSERT, UDPATE и DELETE введена опция UNRECOVERABLE. С появлением этой выдающейся особенности любой прикладной программист и пользователь, который имел соответствующие привилегии (и был способен произнести это ключевое слово), получил возможность (а по умолчанию — и право) выполнять невосстановимые операции. Ничего хорошего в этом не было. Помимо очевидного недостатка — невосстановимости данных операций — они оставляли очень мало следов. В результате не совсем честные пользователи получили в руки почти волшебное средство: они могли вносить изменения в данные, которые не в состоянии обнаружить даже дотошный исследователь журнального файла.
Однако в опции UNRECOVERABLE было и хорошее. Благодаря ей администраторы базы данных теперь могли выполнять некоторые массированные операции по сопровождению без регистрации их в журнальном файле. Если администратор планировал создавать физическую резервную копию сразу после завершения этих операций, то для записи журнальных файлов требовалось много времени, а логически они были не нужны. Кроме того, несмотря на наличие опции прямой загрузки утилиты SQL*Loader, которая позволяла осуществлять загрузку данных с более высокой скоростью, чем при использовании предложений INSERT, вызвать эту опцию программным путем не было возможности. Кроме того, нельзя было произвольным образом выбирать интервал фиксации транзакции. (Данные вопросы более подробно рассмотрены в книге "Oracle: проектирование баз данных".)
*      Во время написания данной книги мы не располагали достаточным количеством сведений для того, чтобы определить, что такое "небольшое" число в этом контексте. Подозреваем, что если бы индекс содержал 1000000 элементов, но всего 1000 отдельных ключевых слов, то 1000 можно было бы считать "небольшим" числом, а уж 100 почти наверняка было бы таковым.
4. "Большие" особенности Oracle8	85