Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8   вперед  Ctrl      все
 Re: Oracle XE: a five years of no progress  [new]
Favn
Member

Откуда:
Сообщений: 585
Yo.!
UDF, тем более жава будет на порядки тормознутее. жава это отдельный процесс в db2, т.е. данные гоняются от db2 к жаве и обратно.
В функциях Марка нет никакой java, там используется regexp из XQuery. Такая UDF будет подставлятся в запрос inline, никаких порядков тормознутости не будет.
При желании, можно написать UDF на С++ с regexp из TR1. Если ее сделать unfenced, опять-таки никаких тормозов не возникнет.
Yo.!
кстати, а индекс на UDF с жавой/regxep можно построить или однозначно фулсканить будет ?
Идексы по функциям строить нельзя. Можно сделать generated поле и по нему построить индекс.

Yo.!
на сколько я знаю там до сих пор нет аналога базовых вещей таких как %ROWTYPE, BULK INSERT, ref_cursor
Row data type
Вместо BULK INSERT для массивов - UNNEST table function, вот пример.
Cursor data type

Yo.!
суть на сколько я помню бала така: берешь взрослую редакцию и мамой клянешся, что за рамки лицензии XE не выйдешь.
Не очень понятна корреляция такой-то матери с лицензионными ограничениями :)

PS. Кстати, по поводу XML storage - до DB2 9 был XML Extender, аналог XML DB в Oracle, тоже с ваозможностью декомпозиции в реляционные таблицы. Сейчас pureXML позволяет не заморачиваться выбором варианта хранения XML. Вот их сравнение.
3 ноя 10, 17:32    [9726928]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Yo.!
Mark Barinstein
Нормально там всё работало, сравнивали С и java реализации - разницы большой не было.
а теперь сравните какой-нибудь встроенный substr с substr на внешнем С
Обычно нет особого смысла сравнивать чистые вызовы функци.
Контекст, в котором вызовы функций используются (парсинг, оптимизирование запросов, доступ к данным, возврат результата клиенту и т.д.), как правило имеет гораздо большие накладные расходы, и в подавляющем большинстве промышленных случаев вы разницу в производительности таких функций просто не заметите.
Но можете, конечно, заметить, если в голом цикле только эту ф-цию и будете вызывать.
Только это не нужно никому.
Кстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите.
Yo.!

покажите как будет выглядеть аналог этому оракловому индексу в db2
CREATE INDEX parks_acreage ON michigan_parks (REGEXP_LIKE(description, '[^ ]+[- ]acres?','i'));

Типа такого что-то:
alter table michigan_parks add cN generated always as (REGEXP_LIKE(description, '[^ ]+[- ]acres?','i'));
CREATE INDEX parks_acreage ON michigan_parks (cN);

Yo.!
Mark Barinstein
Я говорил, конечно, об эмуляции flashback query, а не о read consistency.

вы меня пугаете
Я вот что прочитал:
flashback query in oracle 9i
и решил, что подобные фокусы можно эмулировать ведением исторической таблицы.
Оно, может, и не будет во всех деталях как в оракле работать, но для этого примера - будет.
Поправьте меня, если я не прав - я действительно почти не знаком с ораклом...
3 ноя 10, 18:36    [9727209]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Favn
Идексы по функциям строить нельзя. Можно сделать generated поле и по нему построить индекс.

ну раз нельзя то незачет ставим.
по sqlpl %rowtype, bulk insert зачет, а курсор я не увидел возможности передать его на клент и в другую процедуру (собственно для чего и делался ref_cursor)

xml поищу чуть другой документ, там хорошо в двух абзацах оракл, в чем принципиально отличается мифический binary storage от ораклового, который вроде как не бинари. странно, что в этом документе не было.
3 ноя 10, 19:42    [9727462]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein
Обычно нет особого смысла сравнивать чистые вызовы функци.
Контекст, в котором вызовы функций используются (парсинг, оптимизирование запросов, доступ к данным, возврат результата клиенту и т.д.), как правило имеет гораздо большие накладные расходы, и в подавляющем большинстве промышленных случаев вы разницу в производительности таких функций просто не заметите.

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

Mark Barinstein
Кстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите.

наоборот, proC процедура не умеет быть fenced (терминами ибм)

по индексу и флешбэк не зачет, сами понимаете, что цена такой эмуляции не сравнима и потому на адекватный аналог не тянет. как ни крути в оракле более элегантное и что важно оптимальное предложение. хотя и 5 лет без прогресса ...
3 ноя 10, 19:52    [9727528]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Ggg_old
Member

Откуда: Одесса
Сообщений: 1342
флешбек не нужен.
3 ноя 10, 20:45    [9727714]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Favn
Member

Откуда:
Сообщений: 585
Yo.!
ну раз нельзя то незачет ставим.
Индекс можно построить? Можно. Оптимизатор его подхватит? Подхватит. В связи с чем незачет? Поле "лишнее" создается? Да, такой вот заточенный на производительность механизм - индексы строятся только по лежащим в таблице данным. И что в этом страшного? Особенно на фоне извратов, необходимых в некоторых "уделывающих" СУБД для безобидного испоьзования (в т.ч. индексирования) null, например. И тем более того, что DDL в DB2 транзакционный, в отличие от тех же "уделывающих" :)
Yo.!
а курсор я не увидел возможности передать его на клент и в другую процедуру (собственно для чего и делался ref_cursor)
Да хоть кучу курсоров. Можно посмотреть тут и вот тут, например.
Yo.!
xml поищу чуть другой документ, там хорошо в двух абзацах оракл, в чем принципиально отличается мифический binary storage от ораклового, который вроде как не бинари. странно, что в этом документе не было.
Жду с нетерпением. Может, хоть пойму, что же в настоящем иерархическом движке pureXML "мифического". Кстати, выражения (в т.ч. regexp) в DB2 есть в XML индексах.

ЗЫ. Что-то окромя странных массивов в SQL (model clause) и мягко говоря избыточного в условиях 1ГБ ОП SNAPSHOT я признаков "уделывания" не обнаружил :)
3 ноя 10, 22:45    [9728268]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6632
Favn,

XE конечно устарел, но
+10g в любом релизе хороша
+в нем есть HTML DB = APEX
-+патчи нужны???? наверное, но не в пятидесятой инкарнации
-ресурсоемкость осталась не по детски

=> как конструктор для квикстарта XE - подойдет, апдейт и рыночные перспективы спецов по ней обеспечат им и их приложениям будущее. На полноценное ее использование никто не расчитывает - не нужно, всем нужна "морковка".
3 ноя 10, 23:31    [9728469]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Favn
Индекс можно построить? Можно. Оптимизатор его подхватит? Подхватит. В связи с чем незачет?

что такое лишняя колонка, лишняя колонка лишние блоки, лишние блоки кушают лишнее место в кеше + лишнее и/о.
в такую игру можно поиграть, но чур я буду фаном фокспро и говорить вообщем-то и на фокспро можно сделать все что умеет db2 express-c. клиент-сервер через soap, лог транзакций тригером, огрничение в 2гб UNION

Favn
ЗЫ. Что-то окромя странных массивов в SQL (model clause) и мягко говоря избыточного в условиях 1ГБ ОП SNAPSHOT я признаков "уделывания" не обнаружил :)

но это не значит, что их нет ...
4 ноя 10, 00:22    [9728638]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Абсолют
Member

Откуда:
Сообщений: 2128
Блог
У меня очень глупый вопрос. Как часто вы используете этот адовый регексовый индекс?

А, ну и да, вопрос чисто для Yo! : Сколько вам потребуется времени, что бы FoxPro в Db2 Express-C переделать?
4 ноя 10, 01:08    [9728740]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Абсолют
У меня очень глупый вопрос. Как часто вы используете этот адовый регексовый индекс?

редко но метко.

Абсолют
А, ну и да, вопрос чисто для Yo! : Сколько вам потребуется времени, что бы FoxPro в Db2 Express-C переделать?

чуть меньше чем вам из db2 express-c переделать в Oracle XE

Favn

PS. Кстати, по поводу XML storage - до DB2 9 был XML Extender, аналог XML DB в Oracle, тоже с ваозможностью декомпозиции в реляционные таблицы. Сейчас pureXML позволяет не заморачиваться выбором варианта хранения XML. Вот их сравнение.


как я понял где такая картина
DB2 XML Extender с CLOB это аналог XMLDB где тип хранения CLOB
DB2 XML Extender c shredded это аналог XMLDB где тип хранения реляционные таблички
DB2 pureXML это аналог XMLDB тип хранения Binary XML

насилу нашел док о котором говорил:
http://sites.google.com/site/triffids/files/_technology_tech_xml_xmldb_Current_xmldb_vs_viper_ext.pdf?attredirects=0&d=1

очень метко замечено, что у оракла разделена логическая модель, от формата хранения (каждый из которых имеет преимущества в своей ситуации). а в db2 похоже XML Extender совсем не совместимая модель с pureXML.
4 ноя 10, 02:24    [9728824]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
"как я понял где такая картина"
нужно читать как
"как я понял у нас примерно такая картина:"
4 ноя 10, 02:25    [9728827]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Yo.!
Mark Barinstein
Кстати, C функции в db2 можно и not fenced сделать (в оракле, кажется, нельзя), и тогда вы нигде разницы вообще не увидите.

наоборот, proC процедура не умеет быть fenced (терминами ибм)
Какая, процедура?
Pro*C/C++???
Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++.
В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях.
Oracle
The Pro*C/C++ precompiler is a software tool that enables the programmer to embed SQL statements in a C or C++ source file. Pro*C/C++ reads the source file as input and outputs a C or C++ source file that replaces the embedded SQL statements with Oracle Database run-time library calls and is then compiled by the C or C++ compiler.

А C External routines запускаются в отдельном адресном пространстве.
Может, вы имели ввиду какой-то другой proC?
Приведите ссылку, пожалуйста.
Yo.!
по индексу и флешбэк не зачет, сами понимаете, что цена такой эмуляции не сравнима и потому на адекватный аналог не тянет. как ни крути в оракле более элегантное и что важно оптимальное предложение. хотя и 5 лет без прогресса ...

Профессор, ну а чего сразу-то - незачёт? :)
По индексу: вы опять крохи какие-то считать начинаете - вы их часто, эти функциональные индексы используете?
Я ведь не начинаю незачётами в оракла бросаться из-за того, что он в лог значительно больше пишет, или из-за того, что одна и та же саповская база, загруженная в оракл и в дб2 на одной и той-же системе в оракле на диске места больше занимает. У всех разная реализация.
А это более важные вещи, чем како-то копеечный оверхед на этих функциональных индексах.

По флешбеку: я не админил оракл, мне трудно сказать, насколько там элегантно и оптимально оно реализовано.
Я, например, не раз слышал изречения оракловых админов, что "за флешбек на продакшене надо убивать". Мне трудно судить об этом, может, неопытные они были...
А мой элегантный флешбек, кроме очевидных недостатков, имеет и очевидные преимущества:
- я могу включать и выключать его выборочно для любого набора таблиц, а не для всей базы
- мне не надо беспокоиться за распухающий undo
- я могу контролировать глубину истории
- я могу сохранять доп. атрибуты: типа - кто в Ленина стрелял и из какого оружия :)

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

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

Вы вот скажите, этот флешбек часто для чего-то другого в продакшене используют?
4 ноя 10, 22:18    [9731361]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein

Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++.
В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях.

конечно есть, жава называется. в db2 абсолютно идентично присобачена жава.
Mark Barinstein

запускаются в отдельном адресном пространстве.

где вы такое прочитали ? pro*c собственно потому и вымерло, что запускалось в юзерском адресном пространстве без защиты памяти сервера перед шаловливыми ручками.

Mark Barinstein
Я ведь не начинаю незачётами в оракла бросаться из-за того, что он в лог значительно больше пишет, или из-за того, что одна и та же саповская база, загруженная в оракл и в дб2 на одной и той-же системе в оракле на диске места больше занимает. У всех разная реализация.

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

Mark Barinstein
Я, например, не раз слышал изречения оракловых админов, что "за флешбек на продакшене надо убивать". Мне трудно судить об этом, может, неопытные они были...

говорят в Москве кур доят (с)

в общем я привел привел аргументы, с вашими тоже могу согласиться. да можно жить и без флешбэк, можно и без функциональных индексов, даже без версионности наверно можно. в конце концов есть продакшены и на фокспро, просто мне удобней эти и многие другие вещи иметь, пусть я их и не каждый день использую.
5 ноя 10, 01:09    [9731766]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Yo.!
Mark Barinstein

Да это же просто прекомпилятор, который embedded sql в нативные C/C++ вызовы преобразует, и на выходе получается обычный исходник, который потом подаётся на вход компилятору C/C++.
В db2 похожий есть с аналогичными принципами, хотя и есть разница в деталях.

конечно есть, жава называется. в db2 абсолютно идентично присобачена жава.
Ява здесь ни при чём, сравниваются oracle pro*с и db2 prep для c/c++. Для явы оно тоже есть, но речь здесь не о ней.
Yo.!
Mark Barinstein
запускаются в отдельном адресном пространстве.

где вы такое прочитали ? pro*c собственно потому и вымерло, что запускалось в юзерском адресном пространстве без защиты памяти сервера перед шаловливыми ручками.

Я вас не понимаю: сначала вы говорите, что pro*C процедуры (это на прекомпиляторе что-ли которые (!)) не могут работать в отдельном адресном пространстве от ядра менеджера, потом - что они вымерли...
Я же привёл ссылку, неужели трудно прочитать было?
Ещё раз:
C External Procedures
Oracle
A PL/SQL procedure executing on Oracle Database can call an external procedure or function that is written in the C programming language and stored in a shared library. The C routine runs in a separate address space from that of Oracle Database.
Если не нравится эта ссылка, я ещё могу привести, хотя, куда уж здесь понятнее может быть...
Yo.!
если и больше то понятно почему. потому, что дизайнеры оракла оказались дальновиднее и не напихали структуру блокировок в память. да в оракле блок скорее всего меньше данных содержит т.к. в нем зарезервировано место под блокировки, но преимущество которое за счет этого получает оракл перекрывает все расходы с лихвой (экономия памяти, не нужность эскалации).
Насчёт дальновидности могу поспорить.
Вы умалчиваете про расходы на undo.
А ведь при каждом изменении всего одной строки в блоке, оракл тянет весь блок в undo, причём таких копий одного блока в undo может быть много (второе приложение изменило строку в том же блоке, и вот она - ещё одна копия и т.д.). Я прав?
И в масштабах всего сервера это весьма значительные накладные расходы, которые совершенно не идут ни в какое сравнение с расходами памяти на lock list в db2. Просто поверьте мне, как админу, что этого lock list в db2 по сравнению с другими потребителями памяти (буферы, например) обычно почти не видно.
Эскалация же блокировок в oltp - это, как правило, результат криво написанного приложения, которое много сканит, вместо того, чтобы соответствующие индексы использовать, например.
Так что вы должны понимать, что весьма удобную штуку для некоторых алгоритмов, как версионность, вы получает ценой значительно бОльших накладных расходов, чем в db2.
5 ноя 10, 10:44    [9732187]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Ошибочка вышла:
db2 prep
И ещё, если у меня нет embedded sql в программе, мне этот промежуточный шаг не нужен ни в java, ни c.
5 ноя 10, 10:59    [9732232]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Yo.!, советую оценивать полезность фич.

Например, у DB2 Express-C нет функции по индексам, а у Oracle XE, предположим (я его документацию не читал), есть. Что это значит? Некоторые таблицы в DB2 будут немного шире, чем могли бы.

Теперь вспомним пару подробностей про Oracle XE, Первая - ограничение всего 4 гига данных, что означает, что разумный разработчик будет его использовать только для баз с много меньшим размером данных, чтобы в обозримом будущем не выйти за рамки. А, значит, запросы там и так будут работать быстро. Вторая - что Oracle не индексирует NULL'овые значения, потому ораклист часто использует индексы по функции тогда, когда DB2-шнику это просто не нужно.

Итак, после этого, как отсутствие функциональных индексов в DB2 послужит аргументом в пользу Oracle в сравнении "DB2 Express-C vs Oracle XE"?

Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete. Есть какие-то костыли, но на уровне PL/SQL. Между тем... ну, вот то, что я вижу постоянно в поддерживаемых мой системах. К примеру, запросы, выглядящие так

SELECT ..., some_func(some_id)
FROM t1
где some_func не занимается ничем иным, как выдёргивает значения из t2 (select t2.val into: retval from t2 where t2.some_id=:var) или, если не нашлось, из t3.
Когда можно было бы написать так:
SELECT ..., coalesce(t2.val, t3.val, 'что-то-там')
FROM t1
  LEFT JOIN t2 ON t1.some_id=t2.some_id
  LEFT JOIN t3 ON t1.some_id=t3.some_id

Это ещё самый безобидный пример того, что без PL/SQL получается лучше. Но народ к этому не приучен. Норовят написать десятки процедур и функций, открыть кучу курсоров, получая жирное тормознутое чудовище, где нередко можно обойтись даже одним SQL-запросом.
5 ноя 10, 12:59    [9732777]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Favn
Почему? Тем более в контексте Workgroup/Standard? PureScale уже есть на x86 платформах. Не знаю, только от IBM или нет, но тем не менее.

На IBM'овских:
[url=DB2 pureScale]http://www-01.ibm.com/software/data/db2/linux-unix-windows/editions-features-purescale.html[/url]
Yo.!
пригляделся, да, можно назвать аналогом. но есть у него нбюанс:
Я тут позволю себе немного прокомментировать высказывания:
Oracle

The main technology that DB2 pureScale brings to the table is the centralized lock
management and the group buffer pool. These components reside on their own
server or 2 servers if you want redundancy. This is a high overhead for your
system, if you want a 4 node cluster, you have a 50% uplift in hardware costs alone
as you require 2 extra servers for the PowerHA components. The size of your
global buffer pool is limited by the size of memory on a single server.
Непонятно, откуда взята цифра в 50%. Там речь идёт примерно о 1 (PowerHA) к 6 (Member) по ядрам, хотя, конечно, от нагрузки зависит, но не 1 к 1.
Минимально рекомендованная конфикурация, это 2 железки, каждая побитая на 2 LPAR'а, т.е. на каждой железке по 1 PowerHa и Member.
Кроме того, ядра PowerHA не лицензируются со стороны db2, и, как правильно замечено в статье, это только дополнительные расходы на железо.
У оракла же лицензируются все ядра, которым, кроме обычной работы ещё и приходится также управлять блокировками.
Oracle
What happens if the PowerHA server fails? You could lose everything. If you
want higher availability, you can have a backup server which is a copy of the
primary that is kept up to date through synchronous replication. When the primary
PowerHA server fails, the DB2 cluster services will notice the loss of the heartbeat
to the primary PowerHA server and declare it down. It notifies the secondary and
all the DB2 members that the server is down. At this point the PowerHA services
are unavailable until the secondary takes over. Before the secondary can take over,
it needs to talk to all of the members to get missing data. Once the data has been
updated, it will then take over as the primary PowerHA server. At this time you
are vulnerable as the PowerHA server has no backup.
Похоже на вопрос: "что будет, если упадёт обычный инстанс? вы же можете потерять все данные!".
А с какого перепугу?
Обычно есть 2 LPAR, где запущен PowerHA - первичный и вторичный.
Падает один - в течение нескольких секунд второй возобновляет обслуживание.
Падают оба одновременно, можно запустить PowerHA на выжившем LPAR, где Member работает, и тогда запустится обычная процедура crash recovery, и, если с общим диском всё в порядке, то данные не потеряются.
О каком там backup для PowerHA идёт речь - непонятно.
Oracle
Once the failed server is
restored, it becomes the secondary PowerHA server and is in “catch up” mode
until all the information from the primary can be replicated.
When a “DB2 member” server fails, the member is brought up on another server
in the cluster. This could impact application performance when you have 2
members running on the same server. When the failed server re-joins the cluster,
the member moves back to its home server. This could mean a second outage to
the client while the member is moved.
Member никогда не запускается на другом сервере в рабочем режиме. На другом сервере запускается только уменьшенная копия ядра db2 только для целей восстановления блоков данных, с которыми работали незавершённые на момент падения транзакции. Он не начинает обслуживать клиентские транзакции при этом.
После того, как восстановление страниц закончено, Member запускается на своём родном сервере и только тогда начинает обслуживать транзакции.
5 ноя 10, 13:05    [9732811]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Victor Metelitsa
Yo.!, советую оценивать полезность фич.

Например, у DB2 Express-C нет функции по индексам, а у Oracle XE, предположим (я его документацию не читал), есть. Что это значит? Некоторые таблицы в DB2 будут немного шире, чем могли бы.

Теперь вспомним пару подробностей про Oracle XE, Первая - ограничение всего 4 гига данных, что означает, что разумный разработчик будет его использовать только для баз с много меньшим размером данных, чтобы в обозримом будущем не выйти за рамки.

ну с 2 ядрами и 2гб у дб2 DWH тоже не построишь

Victor Metelitsa
Итак, после этого, как отсутствие функциональных индексов в DB2 послужит аргументом в пользу Oracle в сравнении "DB2 Express-C vs Oracle XE"?

ну на предыдущей странице индекс по регеспу я показывал.

Victor Metelitsa
Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete.

а можно конкретный SQL который нельзя на оракле. я думаю returning clouse будет полным аналогом в оракле.

Victor Metelitsa
Между тем... ну, вот то, что я вижу постоянно в поддерживаемых мой системах. К примеру, запросы, выглядящие так

тут не понял, набрали быдлокодеров которые не знают про coalesce/decode, а оракл то тут причем ?

по pureScale, допустим на поверах выкрутиться можно LPARами, а на x86 вы на вмваре предлагаете сажать
5 ноя 10, 13:47    [9733044]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Dimitry Sibiryakov
Member

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

Victor Metelitsa

Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select
from insert, update, delete.

Это так в фантазиях IBM выглядят стандартные insert/update/delete...returning?..

Victor Metelitsa
вот то, что я вижу постоянно в поддерживаемых мой системах.

А это ничего, что вариант с джоинами работает как минимум не быстрее, а в ряде случаев
медленнее?.. Функция не будет читать t3 если значение найдено в t2. Join - будет всегда.

Posted via ActualForum NNTP Server 1.4

5 ноя 10, 13:48    [9733048]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein

Oracle
What happens if the PowerHA server fails? You could lose everything. If you
want higher availability, you can have a backup server which is a copy of the
primary that is kept up to date through synchronous replication. When the primary
PowerHA server fails, the DB2 cluster services will notice the loss of the heartbeat
to the primary PowerHA server and declare it down. It notifies the secondary and
all the DB2 members that the server is down. At this point the PowerHA services
are unavailable until the secondary takes over. Before the secondary can take over,
it needs to talk to all of the members to get missing data. Once the data has been
updated, it will then take over as the primary PowerHA server. At this time you
are vulnerable as the PowerHA server has no backup.
Похоже на вопрос: "что будет, если упадёт обычный инстанс? вы же можете потерять все данные!".
А с какого перепугу?
Обычно есть 2 LPAR, где запущен PowerHA - первичный и вторичный.
Падает один - в течение нескольких секунд второй возобновляет обслуживание.
Падают оба одновременно, можно запустить PowerHA на выжившем LPAR, где Member работает, и тогда запустится обычная процедура crash recovery, и, если с общим диском всё в порядке, то данные не потеряются.
О каком там backup для PowerHA идёт речь - непонятно.

тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.

Mark Barinstein
Member никогда не запускается на другом сервере в рабочем режиме. На другом сервере запускается только уменьшенная копия ядра db2 только для целей восстановления блоков данных, с которыми работали незавершённые на момент падения транзакции. Он не начинает обслуживать клиентские транзакции при этом.

а клиентов упавшей ноды куда девают ? расскидывают по оставшимся ?
5 ноя 10, 14:03    [9733121]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Yo.!
Victor Metelitsa
Можно ещё повспоминать про фичи, присутствующие в DB2 и отсутствующие в Oracle - select from insert, update, delete.

а можно конкретный SQL который нельзя на оракле. я думаю returning clouse будет полным аналогом в оракле.
Retrieval of result sets from an SQL data change statement.
Разница в том, что returning кладёт несколько строк в массив или коллекцию, а в db2 мне процедурный язык для обработки результатов вообще не нужен, я могу эту "виртуальную" таблицу сразу же в соединении с другими таблицами использовать в этом же запросе.
Да ещё include поля есть (чуть ниже в том же дереве слева есть пример).
Yo.!
а клиентов упавшей ноды куда девают ? расскидывают по оставшимся ?
Да.
Причем по желанию (настройки сессии) сессия может либо все свои транзакции на одном мембере выполнять, либо новую транзакцию на новом (если оно вдруг определит, что новый мембер менее загружен, чем остальные), и всё это прозрачно для приложения.
5 ноя 10, 14:36    [9733296]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Yo.!
тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.
Абсолютно не справедливо.
Объясните, каким образом даже при одном PowerHA при его падении я теряю "всё", если это "всё" находится на общем диске?
Я ведь могу запустить его на выжившем мембере...
5 ноя 10, 14:49    [9733348]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
2Mark Barinstein

OK, убедил. pro*C это все таки аналог fenced процедур в db2, хотя я всю жизнь считал, что они в адресном пространстве юзерского процесса запускаются. ну да ладно, славо богу традиция писать pro*C процедуры в оракле отмерла за долго до моего интереса к ораклу.

Mark Barinstein
Вы умалчиваете про расходы на undo.
А ведь при каждом изменении всего одной строки в блоке, оракл тянет весь блок в undo, причём таких копий одного блока в undo может быть много (второе приложение изменило строку в том же блоке, и вот она - ещё одна копия и т.д.). Я прав?

да, все так. оракл пишет в UNDO (+REDO поверх UNDO) но при этом не задерживается на блокировках и не юлозит по огромным lock list'ам, устраивая эскалацию блокировок с деградацией concurency. самое яркое доказательство того, что писанина в UNDO не иребует больших расходов TPC-C. уж вроде бы казалось бы идеальный тест для блокировочника, транзакции нигде не сталкиваются, блокировки нигде не задерживают, а оракл со своей писаниной в UNDO все равно впереди db2 на одинаковом железе.

Mark Barinstein
Просто поверьте мне, как админу, что этого lock list в db2 по сравнению с другими потребителями памяти (буферы, например) обычно почти не видно.

не поверю, эскалация не от хорошей жизни появляется. на сколько я помню IBM 540 байт на лок кушает, т.е. 2М локов уже гиг памяти выжрет.

Mark Barinstein
Так что вы должны понимать, что весьма удобную штуку для некоторых алгоритмов, как версионность, вы получает ценой значительно бОльших накладных расходов, чем в db2.

это распространненый миф, тесты TPC-C их развенчали много лет назад.
5 ноя 10, 14:56    [9733370]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Yo.!
Guest
Mark Barinstein
Yo.!
тут просто расжевывается почему PowerHA нужно иметь минимум два, иначе потеряв единственный PowerHA "You could lose everything". совершенно справедливо вобщем-то.
Абсолютно не справедливо.
Объясните, каким образом даже при одном PowerHA при его падении я теряю "всё", если это "всё" находится на общем диске?
Я ведь могу запустить его на выжившем мембере...

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

Mark Barinstein
я могу эту "виртуальную" таблицу сразу же в соединении с другими таблицами использовать в этом же запросе.

ну может конечно где-то такое может пригодиться, но я не встречал потребности больше чем вернуть значение сиквенса из инсерта. ну пусть будет зачет, тогда вам в ответ сразу 2: автономные транзакции и кластер (не путать с RAC) в oracle xe
5 ноя 10, 15:13    [9733423]     Ответить | Цитировать Сообщить модератору
 Re: Oracle XE: a five years of no progress  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 5030
Yo.!
да, все так. оракл пишет в UNDO (+REDO поверх UNDO) но при этом не задерживается на блокировках и не юлозит по огромным lock list'ам, устраивая эскалацию блокировок с деградацией concurency. самое яркое доказательство того, что писанина в UNDO не иребует больших расходов TPC-C. уж вроде бы казалось бы идеальный тест для блокировочника, транзакции нигде не сталкиваются, блокировки нигде не задерживают, а оракл со своей писаниной в UNDO все равно впереди db2 на одинаковом железе.
Вы сравниваете разные версии тестов 5.4 против 5.3, на разных OS (rhel против aix), да ещё у оракла дисков и контроллеров больше.
Yo.!

Mark Barinstein
Просто поверьте мне, как админу, что этого lock list в db2 по сравнению с другими потребителями памяти (буферы, например) обычно почти не видно.

не поверю, эскалация не от хорошей жизни появляется. на сколько я помню IBM 540 байт на лок кушает, т.е. 2М локов уже гиг памяти выжрет.

locklist

db2
On all platforms, each lock requires 128 or 256 bytes of the lock list, depending on whether other locks are held on the object:

* 256 bytes are required to hold a lock on an object that has no other locks held on it
* 128 bytes are required to record a lock on an object that has an existing lock held on it.
...
Recommendation:
...
Calculate an upper bound for the size of your lock list:

(512 * 256 * maxappls) / 4096
Для 1000 приложений рекомендованный максимум:
512*256*1000 ~ 130M
У сапа есть рекомендации начать с 40 000 страниц = 160M
Огромный, говорите, этот максимум?
Эскалации возникают от того, что либо:
- место в locklist закончилось
- одно приложение стало занимать места в locklist больше, чем maxlock %
Кстати, во второй ссылке указывается, что блокировки вдвое меньше занимают места:
db2
On 64-bit platforms (except HP-UX), each lock requires 64 or 128 bytes of the lock list, depending on whether other locks are held on the object:

* 128 bytes are required to hold a lock on an object that has no other locks held on it.
* 64 bytes are required to record a lock on an object that has an existing lock held on it.
5 ноя 10, 15:46    [9733551]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить