Практичне використання коштів FGAC, Інші СУБД, Бази даних, статті

Том,

Ми збираємося використовувати можливості створення віртуальної приватної бази даних (VPD) сервера Oracle для вже працюючої виробничої системи оперативної обробки транзакцій (ООТ). Ідея в тому, щоб можливості системи могли одночасно використовувати приблизно 40-50 різних компаній. У кожну таблицю програми додається новий стовпець, наприклад, COMP_ID.


Тепер питання: (я знаю про твій думці щодо використання індексів на основі бітових карт в системах ООТ) Не варто використовувати індекси на основі бітових карт по стовпцях COMP_ID (VPD), просто тому, що кількість різних значень в них досить невелика?


Відповідь Тома Кайта


НІ!


Індекси на основі бітових карт ніколи, за жодних обставин не підходять для систем ООТ.


Стовпець COMP_ID стане атрибутом, який буде доданий до існуючих індексами – сам стовпець COMP_ID індексувати не потрібно.


Нехай є таблиця emp:

create table emp ( empno   number,
ename varchar2(30),
job varchar2(10) );

І виконані наступні оператори:

alter table emp add constraint emp_pk primary key(empno);
create index emp_ename_idx on emp( ename );

Тепер, ви додаєте стовпець comp_id і виконуєте оператори:

alter table emp add constraint emp_pk primary key(EMPNO,COMP_ID);
create index emp_ename_idx on emp(ename, COMP_ID);

оскільки запит, який мав вигляд:

select * from emp where empno = :x;

тепер буде еквівалентний:

select * from emp where empno = 😡 and comp_id = sys_context(…);

Запит:

select * from emp where ename = 😡

буде змінено аналогічно …


Запитання читача від 26 травня 2003


Чи немає сенсу фрагментувати таблицю по стовпцю COMP_ID?


Відповідь Тома Кайта


Звичайно, можна і фрагментувати. Особливо якщо кількість різних значень comp_id фіксовано. Буде складніше (зажадає більше дій від адміністратора), якщо доведеться додавати фрагменти на ходу.


А як щодо стиснення?


Чи не буде краще створити індекс із стисненням, наприклад, по стовпцях comp_id, empno і стиснути за стовпцем 1?


Відповідь Тома Кайта


Так, це спрацює …


Умова, що генерується при додаванні FGAC


Перечитав на вихідних главу, присвячену засобам ретельного контролю доступу, в твоїй книзі …


Питання:



  1. Чи немає способу отримати або умова, що генерується функціями захисту, або повний текст SQL-оператора?
  2. Коли реально виконуються функції захисту?

Я спробував зробити наступне:



Як отримати реальний текст оператора – я звик бачити при програмуванні всі оператори SQL.


Відповідь Тома Кайта


1) Див це обговорення


2) При аналізі оператора. Виклики dbms_output у функціях FGAC виконуються в іншому сеансі – Ось чому ви ніколи не побачите їх результати.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*