powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Сравнение различных SQL-серверов
25 сообщений из 51, страница 2 из 3
Сравнение различных SQL-серверов
    #32142663
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Paul Atreidies:
Например в Oracle в тврем конкретном примере, не надо так извращаться, просто Oracle поддерживает иерархические запросы в SQL.
А так же в SQL есть аналитические функции которые обладают очень большими возможностями.

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

Допустим, что у нас есть результирующий набор данных, полученный в результате некоторой выборки. Этот набор данных может быть еще не отсортирован предложением ORDER BY, но все соединения и все условия WHERE, GROUP BY, HAVING уже выполнены. На каждую запись в этом наборе накладывается "рамка", размеры и положение которой определяются в соответствии с некоторым аналитическим условием. Через эту рамку мы как бы видим не только саму текущую запись, но и некоторые соседние с ней, т.е. целую группу записей. (Впрочем, рамка может быть наложена таким образом, что в нее попадают не соседние, а другие записи, и даже сама текущая запись не обязана попадать в рамку). Эта рамка называется "окном" (window) текущей записи. Аналитическая функция для текущей записи вычисляет агрегированное значение над группой "видимых через окно" записей. По мере "продвижения" по курсору изменяется текущая запись, для каждой из них определяется свое окно. При этом размер и положение окна могут меняться. Поэтому говорят, что окно является "скользящим" (sliding window). Размер окна может зависеть как от физического количества строк, так и логического интервала, такого, например, как время.

еще тут
http://www.interface.ru/oracle/anal-itiv.htm
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142705
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Paul Atreidies > Поддерживает ли сервер рекурсию (хоть какую) в операторе SELECT?.

Оракл - Да
Оракл поддерживает рекурсивные запросы с версии 8, а может раньше.

Вопрос:
Поддерживается ли операция MINUS над множествами (т.е. в запросах, по аналогии с UNION)?

Оракл, ДБ2, postgreSQL (по-моему) - да.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142709
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Зеркалирование транзакционного лога: MS SQL - Нет. А зачем этим заниматься серверу базы данных ?

Например нет денег на аппаратный RAID. Встречается сплошь и рядом на Оракловых серверах в нашей "богатой" стране. Думаю на МSSQL-инсталляциях этот процент еще выше.

Или в MS не страшно потерять лог?
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142768
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ту х:
Согласованность по чтению на уровне транзакций есть у MSSQL без мультиверсионности?
Пример. Два прользователя.
Момент времени 1. Первый пользователь открывает транзакцию, что-то делает.
Второй делает апдейт таблицы2.
Момент времени 2. Второй читает из таблицы2. Второй еще что-то делает.
Оракл дает гарантию, что в момент времени 2 первый пользователь получит данные из таблицы 1 на момент времени 1.
MSSQL не дает такой гарантии имхо. Поправьте, если я не прав.

ЗЫ: вообще-то я работаю с сиквелом, с ораклом только начинаю знакомиться, и различия достаточно хорошо видны.

По поводу зеркалирования лога: мелочь, а приятно. Отказоустойчивость повышается избыточностью в данном случае.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142824
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 SiDen

Согласованность по чтению на уровне транзакций есть у MSSQL без мультиверсионности?
Пример. Два прользователя.
Момент времени 1. Первый пользователь открывает транзакцию, что-то делает.
Второй делает апдейт таблицы2.
Момент времени 2. Второй читает из таблицы2. Второй еще что-то делает.
Оракл дает гарантию, что в момент времени 2 первый пользователь получит данные из таблицы 1 на момент времени 1.
MSSQL не дает такой гарантии имхо. Поправьте, если я не прав.


Да есть (а иначе как бы работали на MS SQL). Но достигается другим способом - блокировками. (Мне тоже значительно больше нравится вариант с многоверсионностью)

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

Это просто рудимент позавчерашнего дня. Зеркалирование давным давно встроено в операционные системы, а теперь и в большинство материнских плат (если уж не хватило денег на нормальный RAID).
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142836
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

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

Это просто рудимент позавчерашнего дня. Зеркалирование давным давно встроено в операционные системы, а теперь и в большинство материнских плат (если уж не хватило денег на нормальный RAID).


Зеркалирование в данном случае защищает ещё и от ошибки обслуживающего персонала.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142847
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Это просто рудимент позавчерашнего дня. Зеркалирование давным давно встроено в операционные системы, а теперь и в большинство материнских плат (если уж не хватило денег на нормальный RAID).

Это не рудимент, а просто гибкость продукта. RAID не защитит от программного сбоя, ошибки сервера. Дублирование лога от части ошибок может защитить. По крайней мере в Oracle. Имел как-то разговор с одним забугорным админом. Для них самый важный критерий при построении системы была надежность. Так вот логи у него дублировались, каждая копия шла на отдельный RAID.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142851
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 killed & Scott Tiger

Зеркалирование в данном случае защищает ещё и от ошибки обслуживающего персонала.

RAID не защитит от программного сбоя, ошибки сервера. Дублирование лога от части ошибок может защитить


Поясните, не въезжаю. От каких таких ошибок программное зеркалирование защищает лучше аппаратного.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142888
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну самый простейший вариант - это ошибка файловой системы.
RAID кстати тоже небезупречен. Ну например может отказать батарея кэша в самый неподходящий момент. Я понимаю, что вероятность отказа современных RAID-контроллеров не так уж и велика. Хотя если речь об интегрированных в мать поделках ...
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142897
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ту х:
Вы имеете в виду ручное блокирование? Т.е. в приведенном примере после открытия транзакции я должен залочить все используемые таблицы для селектов? Что бы никто ничего не изменил до того, как в транзакции я дойду до того места что бы выбрать оттуда данные. Хотя я конечно согласен, что реализовать это можно. По условиям топикатора все проходит, согласен.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32142962
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 SiDen

Вы имеете в виду ручное блокирование? Т.е. в приведенном примере после открытия транзакции я должен залочить все используемые таблицы для селектов? Что бы никто ничего не изменил до того, как в транзакции я дойду до того места что бы выбрать оттуда данные. Хотя я конечно согласен, что реализовать это можно. По условиям топикатора

Ну вы уж совсем не уважаете Microsoft :)
Нет, конечно, не ручное - автоматическое.

Кстати это не такая уж редкость. Также у Sybase, также было у Watcom.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143010
Paul Atreidies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 DimaR, c127

Например в Oracle в твoем конкретном примере, не надо так извращаться, просто Oracle поддерживает иерархические запросы в SQL.

Реализацию можно? Просто интересно посмотреть. С кратким комментарием, если используются особенности реализации SQL.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143046
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самый простой пример из доки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
The following statement returns all employees in hierarchical order. 
The root row is defined to be the employee whose job is 'PRESIDENT'. 
The child rows of a parent row are defined to be those who have the 
employee number of the parent row as their manager number. 

SELECT LPAD(' ', 2 *(LEVEL- 1 )) || ename org_chart, 
        empno, mgr, job
    FROM emp 
    START WITH job = 'PRESIDENT' 
    CONNECT BY PRIOR empno = mgr; 
ORG_CHART    EMPNO      MGR        JOB
 ------------ ---------- ---------- ---------
 
KING                7839             PRESIDENT
  JONES             7566         7839  MANAGER
    SCOTT           7788         7566  ANALYST
      ADAMS         7876         7788  CLERK
    FORD            7902         7566  ANALYST
      SMITH         7369         7902  CLERK
  BLAKE             7698         7839  MANAGER
    ALLEN           7499         7698  SALESMAN
    WARD            7521         7698  SALESMAN
    MARTIN          7654         7698  SALESMAN
    TURNER          7844         7698  SALESMAN
      JAMES         7900         7698  CLERK
 CLARK              7782         7839  MANAGER
   MILLER           7934         7782  CLERK
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143056
Paul Atreidies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 DimaR
Спасибо. Кратко и наглядно :)
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143170
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ту х:
Да я не такого уж и плохого мнения о МС :)
Берем QA
Открываем два окна, в одном:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
begin tran
  insert into a
  select *
  from Distributors with (nolock)
commit;

begin tran
  select count(*) from a
  waitfor delay '000:00:10'
  select count(*) from a
commit;


Во втором:
Код: plaintext
1.
2.
3.
begin transaction t2
  delete from a
commit tran t2


Запускаем первое, пока идет ожидание 10 секунд - запускаем второе.
В результате получаем - второй селект в первом окне выдаст - 0.
Т.е. без явной залочки на мсскле не обойтись. Поправьте, если я не прав.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143221
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 SiDen

Запускаем первое, пока идет ожидание 10 секунд - запускаем второе.
В результате получаем - второй селект в первом окне выдаст - 0.
Т.е. без явной залочки на мсскле не обойтись. Поправьте, если я не прав.


В MS SQL это зависит от установленного уровня изоляции. При установке уровня REPEATABLE READ или SERIALIZABLE второе окно будет ждать окончания транзакции первого.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143235
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, согласен.
Только REPEATABLE READ в 2000 уже тю-тю. Только SERIALIZABLE.
Here is a summary of phantom protection for both SQL Server versions 6.5 and SQL Server 2000 using SET TRANSACTION ISOLATION LEVEL.
Phantom protection SQL Server 6.5 SQL Server 2000
REPEATABLE READ Yes No
SERIALIZABLE Yes Yes
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143258
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 SiDen

Только REPEATABLE READ в 2000 уже тю-тю. Только SERIALIZABLE.

Не понял. Куда тю-тю?
Если в смысле нет его - так это неверно.
Если в смысле работает не так как я сказал - это врядли, я перед ответом честно проверил именно на 2000.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143284
SiDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает именно так, как Вы сказали, я тож проверял :).
Меня смутила выдержка из БОЛа, которую я привел выше
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143684
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Paul Atreidies > Поддерживает ли сервер рекурсию (хоть какую) в операторе SELECT?.

MSSQL - нет.

Можно попытаться реализовать через UDF, возвращающих рекорд сет, если рекурсия в этом случае отработает. Но по-моему не отработает. Поправьте, кто в курсе.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32143808
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то мы здесь все в одну кучу намешали. Предлагаю разделить обсуждения по отдельным дискуссиям.
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32144574
Paul Atreidies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 c127
Вопрос:
Поддерживается ли операция MINUS над множествами (т.е. в запросах, по аналогии с UNION)?


дб2 - есть объединение, разность и пересечение. Кстати, интересно, есть ли разница в планах если пересечение/разность строить вложенным запросом? Есть смутное подозрение что торой вариант может быть и предпочтительнее в некоторых случаях.

2 All
В дб2 есть возможность связать с индексом подмножество столбцов таблицы. Т.е. для построения индекса они использоваться не будут, но при выборке по этим полям с использованием данного индекса результат будет строится только сканированием индекса.
Что у других?
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32144581
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дб2 есть возможность связать с индексом подмножество столбцов таблицы
В Oracle тоже
"Эtable is created as an index-organized table. In an index-organized table, the data rows are held in an index defined on the primary key for the table."
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32144596
Paul Atreidies
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2DimaR
Извини, не совсем понял - это определенный вид таблиц, свойство только PK, или есть такая возможность организации для любого/всех индексов? При этом все поля сохраняются с индексом или можно указать какие?
...
Рейтинг: 0 / 0
Сравнение различных SQL-серверов
    #32144607
Фотография killed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это по сути таблица, но данные хранятся в сразу в древовидной структуре. Если обычный индекс не имеет смысла без таблицы (в листьевых блоках индекса прописаны указатели на строки таблицы), то здесь вместо указателей хранятся сами данные). Пример использования: небольшие справочные таблицы. В IOTs можно вывести часть столбцов в отдельный сегмент хранения. Пример: допустим в IOT три поля. ID (NUMBER), CUSTOMER_NAME (VARCHAR2(30)) и DESCRIPTION (VARCHAR2(4000). В последнем поле хранится какая-то описательная информация, к которой обращаются редко, но сама она занимает много места. Поэтому для быстроты нахождения имени пользователя по его ID в данном случае выгодно сохранить индексное дерево компактым, "убрав" вторичную информацию.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Сравнение различных SQL-серверов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]