Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 [7] 8   вперед  Ctrl      все
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
ЯЕХХ
Guest
Yo.!
web_fox,
ну так что там у нас с принципиальными отличиями в схемах ?


Принципиально то, что в постгресе понятия "схема" и "пользователь" ортогональны, схемы реально существуют, на них выдаются права.
А в оракле "схема" это абстракция. Не случайно ALL_USERS есть, а ALL_SCHEMAS нет и права на "схему" нельзя выдать.

На всякий случай...

В постгресе:
* Объектами владеют роли.
* Пользователь это частный случай роли, который может подключаться к базе.
* Схема это логическое объединение объектов, схема как сущность имеет своего владельца.
* Объект принадлежит к одной схеме и имеет одного владельца.
* Одна роль может владеть несколькими схемами.
* Одна роль может владеть объектами в разных схемах.
* В одной схеме могут быть объекты с разными владельцами.
* Суперюзер может всё.
* Суперюзер создает пользователей и роли, даёт права на создание объектов (без разделения по типу).
* Владелец базы даёт права на создание схем.
* Владелец схемы даёт права на использование схемы и на создание объектов в схеме.
* Владелец объекта даёт права на использование объекта.
* Пользователь может менять/удалять только свои объекты, даже если он владелец схемы или базы.
* Порядок поиска объекта без явного имени схемы: из переменной search_path, которая может содержать несколько любых схем (по умолчанию $user,public).
* Схема public это обычная схема.

В оракле:
* Объектами владеют пользователи.
* Пользователи и роли разные сущности, ибо если пользователю нет прав на create session - он не перестаёт быть пользователем.
* Пользователь может обладать только одной "схемой".
* Объект принадлежит к одной "схеме" и имеет одного владельца - владельца "схемы".
* На любой объект могут иметься синонимы принадлежащие другим пользователям.
* В "схеме" всё принадлежит только её владельцу, включая синонимы на чужие объекты.
* SYSDBA может всё
* SYSDBA создает пользователей и роли, даёт права на создание объектов определённого типа.
* Владелец "схемы" даёт права на использование объекта, но не может дать доступ к своей схеме в целом, только пообъектно.
* Владелец "схемы" может создать всё, что позволит DBA, но удалять может все объекты без исключения.
* Порядок поиска объекта без явного имени схемы: переменная current_schema (одно имя), затем public.
* Псевдосхема public создаётся автоматически и может содержать только синонимы.


Некоторые вещи делаются проще в постгресе.

пример 1: организация совместной работы - несколько разработчиков создают свои непересекающиеся объекты в общей схеме. В оракле надо либо дать всем create any ..., либо раздать пароль схемовладельца, либо кто-то должен создавать синонимы. В постгресе достаточно grant usage on schema + grant create on schema.

пример 2: несколько приложений в одной базе, каждое держит данные в своей схеме app1,app2,... и одна схема common - общие справочники. Пользователь должен сразу входить в определённое приложение. В оракле надо создать синонимы из common в каждую схему app и выполнять alter session в триггере при входе. В постгресе один раз выполнить ALTER USER someuser SET search_path=app2,common
13 авг 10, 07:43    [9257370]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
ОКТОГЕН
vadiminfo,
я ж вам дал ссылку на доку, где англицким по белому написано, что
любые агрегаты, написанные пользователем могут пользоваться как оконные.

Пока не нашел как пользователь пишет собсно агрегаты. Но по аналит ф-ям в целом Оракл такой же мощный как ПГ, наверное, поскольку у оконных (аналог аналит в Оракле) ф-ий в ПГ в FRAME (аналог ораклового WINDOW) вроде нет возможности задавать выражения, а у Оракла есть: value_expr PRECEDING or value_expr FOLLOWING. Но пока есче посматриваю справку в целом.

Не нашел еще пока Флэшбэка: можно ли с помощью запроса SQL посмотреть что было в БД 1 час, минуту назад назад, например? Имеет значение, если по ошибке удалили данные из таблы вернуть обратно.
Типа:
SELECT salary FROM employees
   AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' MINUTE)
   WHERE last_name = 'Chung';


ОКТОГЕН

Начальник в питере держит соединение и в нём слушает канал. Вот и всё.
Из любого места в этот канал всё и приходит.
Что ещё нужно?

Нужно ессно чтобы и соединения не держал, т.е. не было бы сессии с сервером: их может быть много этих подписчиков, а события могут быть редко. Уточните, плиз, может этот начальник так поступить?
13 авг 10, 09:12    [9257611]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2498
vadiminfo

Не нашел еще пока Флэшбэка: можно ли с помощью запроса SQL посмотреть что было в БД 1 час, минуту назад назад, например? Имеет значение, если по ошибке удалили данные из таблы вернуть обратно.
Типа:
SELECT salary FROM employees
   AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' MINUTE)
   WHERE last_name = 'Chung';
ОКТОГЕН

Начальник в питере держит соединение и в нём слушает канал. Вот и всё.
Из любого места в этот канал всё и приходит.
Что ещё нужно?

Нужно ессно чтобы и соединения не держал, т.е. не было бы сессии с сервером: их может быть много этих подписчиков, а события могут быть редко. Уточните, плиз, может этот начальник так поступить?

Можно и не держаь его постоянно, а периодически подсоединяясь выполнять
LISTEN channel;
Ресурсов это не ест.
Если именно с бд соединяться нельзя(почему? Ваша прога всё равно потом с ней соединяется),
то пишите службу, которая слушает каналы от субд и передаёт вам инфу через tcp/ip
как вам угодно.
PS
Флэшбэка нет. Когда будет неизвестно.:-(
13 авг 10, 11:14    [9258619]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2498
Вру, соединение надо держать постоянно.
Значит надо писать службу для вашего варианта.
13 авг 10, 11:23    [9258708]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
ОКТОГЕН
Можно и не держаь его постоянно, а периодически подсоединяясь выполнять
LISTEN channel;
Ресурсов это не ест.
Если именно с бд соединяться нельзя(почему? Ваша прога всё равно потом с ней соединяется),
то пишите службу, которая слушает каналы от субд и передаёт вам инфу через tcp/ip
как вам угодно.
PS
Флэшбэка нет. Когда будет неизвестно.:-(


Периодически? Данные критичны - может поздняк быть.

С БД соединиться моно если событие произошло, на которое он подписался: тада уж его час то собсно и настал, чтобы смотреть на скока все плохо. Не нужно всем им цельный год зря коннекты держать.

Кста, про справку: к Оракловой привык уже, не очень ПГ нравится. У оракла синтаксис разрисован, разжеван. Конечно, тоже нуно проверять на примерах. Но в ПГ как-то, мне кажется, нуно побольше поэкспементировать, чтобы проверить прально ли понял.
13 авг 10, 11:31    [9258794]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
vadiminfo
ОКТОГЕН
Можно и не держаь его постоянно, а периодически подсоединяясь выполнять
LISTEN channel;
Ресурсов это не ест.
Если именно с бд соединяться нельзя(почему? Ваша прога всё равно потом с ней соединяется),
то пишите службу, которая слушает каналы от субд и передаёт вам инфу через tcp/ip
как вам угодно.
PS
Флэшбэка нет. Когда будет неизвестно.:-(


Периодически? Данные критичны - может поздняк быть.

С БД соединиться моно если событие произошло, на которое он подписался: тада уж его час то собсно и настал, чтобы смотреть на скока все плохо. Не нужно всем им цельный год зря коннекты держать.
А как можно узнать за какое-то критическое время о событии, не имея ни с чем конектов?..
13 авг 10, 11:38    [9258856]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
SergSuper
А как можно узнать за какое-то критическое время о событии, не имея ни с чем конектов?..

Там речь о критическом событии в плане появились данные превышающие допустимые значения.
Не ядерный взрыв: об этом должны узнать, я, надеюсь, не из БД.
13 авг 10, 11:54    [9259022]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Warstone
Member

Откуда:
Сообщений: 4896
Блог
vadiminfo
Не ядерный взрыв: об этом должны узнать, я, надеюсь, не из БД.
Прдставил себе:
CREATE TABLE status_log (
  log_id bigserial NOT NULL PRIMARY KEY,
  log_level integer NOT NULL DEFAULT 1,
  log_message text NOT NULL,
 CHECK log_level BETWEEN 0 AND 9
);

INSERT INTO status_log(DEFAULT, 9, 'Washington D.C. was successfully nuked by 4ebyr@shk@ in ' || now()::timestamp(0));
13 авг 10, 11:59    [9259077]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
vadiminfo
SergSuper
А как можно узнать за какое-то критическое время о событии, не имея ни с чем конектов?..

Там речь о критическом событии в плане появились данные превышающие допустимые значения.
Не ядерный взрыв: об этом должны узнать, я, надеюсь, не из БД.
т.е. конект куда то должен быть?
а какая принципиальная разница куда - к базе или еще куда-нибудь?
13 авг 10, 12:00    [9259084]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
заблудился
Guest
Дико извиняюсь за оффтоп.
Помогите переписать это
with recursive t(rn) 
as(select 1 
   union all
   select rn+1 
   from t where rn < 100 )
   select rn 
   from t

с postgresql на oracle
Спасибо.
13 авг 10, 12:56    [9259608]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7862

On 13.08.2010 13:56, заблудился wrote:

> Дико извиняюсь за оффтоп.
> Помогите переписать это
....
> с postgresql на oracle

select rownum rn from DUAL connect by level < 100;

Posted via ActualForum NNTP Server 1.4

13 авг 10, 13:21    [9259854]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
SergSuper
т.е. конект куда то должен быть?

Нет. Прога клиентская запущена должна быть. Она зарегистрировалась на серовевере коннекта нет. На сенрвере есть инфа о зарегестрованных на те или иные события. Соытие происходит сервер рассылает извещения подписавшимся. Они клиенты - не сервера в общем случае, к ним ни приконнектисся.
13 авг 10, 13:21    [9259860]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54850

vadiminfo
Они клиенты - не сервера в общем случае, к ним ни приконнектисся.

Они слушают TCP порт, значит - они сервера и к ним можно приконнектиться. Причём сделать
это может и не только сервера и послать им не только ту информацию на которую они
подписались...

Posted via ActualForum NNTP Server 1.4

13 авг 10, 13:36    [9260011]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Favn
Member

Откуда:
Сообщений: 585
vadiminfo
SergSuper
т.е. конект куда то должен быть?
Нет. Прога клиентская запущена должна быть. Она зарегистрировалась на серовевере коннекта нет. На сенрвере есть инфа о зарегестрованных на те или иные события. Соытие происходит сервер рассылает извещения подписавшимся. Они клиенты - не сервера в общем случае, к ним ни приконнектисся.
И как же это сервер сам разошлет событие незаконнекченным клиентам, не имеющим своего внешнего адреса?
Конечно, никак. Или клиенты должны быть в вечном коннекте (не обязательно к БД, но к какому-то IP-серверу - по-любому) и тогда сервер сможет им что-то послать, или реконнектится/отваливаться с указанной периодичностью, проверяя по своей инициативе наличие событий.
Клиент Оракл должен использовать один из этих вариантов. Вне СУБД такой сценарий пишется за пару дней на любом вменяемом ЯП.
13 авг 10, 13:42    [9260048]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
vadiminfo
SergSuper
т.е. конект куда то должен быть?

Нет. Прога клиентская запущена должна быть. Она зарегистрировалась на серовевере коннекта нет. На сенрвере есть инфа о зарегестрованных на те или иные события. Соытие происходит сервер рассылает извещения подписавшимся. Они клиенты - не сервера в общем случае, к ним ни приконнектисся.
получается что они сервера должны быть
обычному человеку как-то особо нет разницы имеет клиентская прога конект или нет
13 авг 10, 13:53    [9260165]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
SergSuper
получается что они сервера должны быть
обычному человеку как-то особо нет разницы имеет клиентская прога конект или нет

Но тем ни менее клиенты. У них есть ф-ии обратного вызова. Ну типа сообщение придет и они выполнят то, что надо. А обычному то человеку все равно. А не обычным нужно было, что бы конеекта не было у таких прог.
13 авг 10, 14:12    [9260362]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
vadiminfo
SergSuper
получается что они сервера должны быть
обычному человеку как-то особо нет разницы имеет клиентская прога конект или нет

Но тем ни менее клиенты. У них есть ф-ии обратного вызова. Ну типа сообщение придет и они выполнят то, что надо.
Наверное я чего-то не понимаю. Как может придти сообщение без конекта? Зачем вообще конекты тогда нужны, если без них можно сообщениями обмениваться?
13 авг 10, 14:26    [9260481]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54850

SergSuper

Как может придти сообщение без конекта? Зачем вообще конекты тогда нужны, если без них
можно сообщениями обмениваться?

"Доктор, меня все игнорируют..."

Повторяю третий раз: клиент Oracle при подписке на событие открывает TCP порт, на который
сервер при наступлении события и коннектится чтобы передать извещение. Естественно,
работает это только в локалке или приравненной к ней VPN.

Posted via ActualForum NNTP Server 1.4

13 авг 10, 14:30    [9260526]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Favn
Или клиенты должны быть в вечном коннекте (не обязательно к БД, но к какому-то IP-серверу - по-любому) и тогда сервер сможет им что-то послать, или реконнектится/отваливаться с указанной периодичностью, проверяя по своей инициативе наличие событий.
Клиент Оракл должен использовать один из этих вариантов.

Клиент запущен. Ну крутится. Ну назовите это слушает. Мало ли прог у начальника крутятся (слушают када он клаву на игре нжмет). Есть ф-ии обратного вызова. Ну про ея типа знает Оракл, она типа у него записана: прога один раз приконнектилась - зарегистрировалась (записала о себе инфу и че она хочет). Потом отсоеденилась. У Оракла есть процессы которые смотрят очереди. Произошло плохое событие, его записали в очередь. Процесс проверяющий очередь обнаружил его и разослал извещения тем клиентам, которые подписались на данное событие.. Если клиент подписавшийся отключен к моменту события, то есму все равно будет послано. Т.е. асинхронное взаисмодествие.
Коннект к БД это серверный процесс, чем больше коннектов, тем больше процессов. Именно они лишние и не нужны (подписчиков много, а события редки). В БД данные, в том числе о подписчиках - кол-во данных для БД не критично. На компе у начальника игры, ворд и клиент шо-то слушает. И так у всех 100 начальников. Все хорошо.
13 авг 10, 14:36    [9260571]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
SergSuper
Member

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

SergSuper

Как может придти сообщение без конекта? Зачем вообще конекты тогда нужны, если без них
можно сообщениями обмениваться?

"Доктор, меня все игнорируют..."

Повторяю третий раз: клиент Oracle при подписке на событие открывает TCP порт, на который
сервер при наступлении события и коннектится чтобы передать извещение. Естественно,
работает это только в локалке или приравненной к ней VPN.
спасибо
т.е. все-таки эти клиенты работают как серверы
13 авг 10, 14:43    [9260639]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
SergSuper
Как может придти сообщение без конекта?

Имелся в виду постоянный коннект между сервером БД и клиентом. Ни туда ни обратно непосредствнно между ними ниче нет. А так, конечна, любая запущенная прога в основном чет-то слушает (ожидает). Ну типа она "сервер" в широком смысле - обслуживает.
13 авг 10, 15:01    [9260776]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54850

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

Posted via ActualForum NNTP Server 1.4

13 авг 10, 15:05    [9260802]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Favn
Member

Откуда:
Сообщений: 585
vadiminfo
Клиент запущен. Ну крутится. Ну назовите это слушает... Если клиент подписавшийся отключен к моменту события, то есму все равно будет послано. Т.е. асинхронное взаисмодествие.
Т.е. все как обычно, никакой мистики с "доставкой без коннекта". Так же работает куча messaging серверов, JMS-совместимых, например. Да и свой такой написать для простого асинхронного оповещения - тривиальная задача.
vadiminfo
Коннект к БД это серверный процесс, чем больше коннектов, тем больше процессов. Именно они лишние и не нужны (подписчиков много, а события редки).
Справедливо далеко не для всех СУБД, есть и тред-ориентированные. Но зачем тут коннект именно к БД? В отсутствие коннекта к БД достаточно почти не требующего ресурсов периодического сокетного коннекта к любому TCP-серверу с разруливанием подписки. Более того, такой сервер может кушать ресурсы не того сервера, на котором стоит СУБД.
Dimitry Sibiryakov
Повторяю третий раз: клиент Oracle при подписке на событие открывает TCP порт, на который сервер при наступлении события и коннектится чтобы передать извещение. Естественно, работает это только в локалке или приравненной к ней VPN.
Т.е. все еще хуже, чем могло бы быть. Куда логичнее выглядят периодические коннекты клиентов к простенькому демону, которым любые сети не помеха. А еще лучше - возможность обоих вариантов.
13 авг 10, 15:15    [9260876]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Favn
Т.е. все как обычно, никакой мистики с "доставкой без коннекта". Так же работает куча messaging серверов, JMS-совместимых, например. Да и свой такой написать для простого асинхронного оповещения - тривиальная задача. .

Ну есно ф-ии обратного вызова ни Оракл придумал. Речь о том что фича в плане усилий и знаний от базиста 0 практичеки. А свой то и сам СУБД народ пишет. Но тут как бы нуно почти ниче не писать, а шобы все по взрослому было.

Favn
Справедливо далеко не для всех СУБД, есть и тред-ориентированные. Но зачем тут коннект именно к БД? В отсутствие коннекта к БД достаточно почти не требующего ресурсов периодического сокетного коннекта к любому TCP-серверу с разруливанием подписки. Более того, такой сервер может кушать ресурсы не того сервера, на котором стоит СУБД.

Ну для ПГ справедливо? Так тут и нет коннекта, а БД нужна: в табле раз в пол года появилась плохая цифра. С этим нуно что-то делать? Речь идет о данных БД такой-то СУБД, а не вообще о сетевых прогах, что мы для котнрольных по сетям лабали, када учились.
13 авг 10, 15:38    [9261069]     Ответить | Цитировать Сообщить модератору
 Re: Я слышал, что Oracle такой же мощный продукт как и PostgreSQL  [new]
Yo.!
Guest
Favn
Т.е. все еще хуже, чем могло бы быть. Куда логичнее выглядят периодические коннекты клиентов к простенькому демону, которым любые сети не помеха. А еще лучше - возможность обоих вариантов.

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

2ЯЕХХ

>Принципиально то, что в постгресе понятия "схема" и "пользователь" ортогональны, схемы реально существуют, на них выдаются права.

да, нюанс с правами действительно принципиален. спасибо, теперь мне стало ясно, как благодаря этому нюансу становиться легко и логично эмулировать пакеты оракла
13 авг 10, 15:47    [9261154]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 [7] 8   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить