Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Увидел на другом форуме следующее:

автор
До cur_commit дб2 висел на блокировке и выдавал более согласованный набор. Т.е. cur_commit слабей обычного блокировочного read committed. Но это все мелочи, фигня в том cs уровень не возможно толком использовать. Представь читаем последнее заклмиченное значение записи из партиции1, пока читаем оставшиеся записи их партиции1, конкурирующая транзакция коммиттит и запись перезжает в партицию2. Теперь читающий запрос прочтет запись дважды.


Можете, пожалуйста, прокоментировать/опровергнуть?

Особенно было бы интересно узнать мнение Марка.
8 окт 19, 11:57    [21989250]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
H5N1
Member

Откуда: Yo.! из "Сравнения субд"
Сообщений: 225
Bimon Subio

Можете, пожалуйста, прокоментировать/опровергнуть?

Особенно было бы интересно узнать мнение Марка.


автор я. можно продолжить и здесь

Db2 developer's guide : a solutions-oriented approach to learning the foundation and capabilities of Db2 for z/OS
Assume that Sally Kwan, one of your employees, has just been transferred from the information center to software support. Assume further that another information center employee, Heather Nicholls, received a 10 percent raise. The update program running concurrently with the report program implements both of these modifications.

If the report program were bound with an isolation level of CS, the second program could move Sally from 'C01' to 'E21' after she was reported to be in department 'C01' but before the entire report was finished. Thus, she could be reported twice: once as an information center employee and again as a software support employee. Although this circumstance is rare, it can happen with programs that use cursor stability. If the program were bound instead with RR, this problem could not happen. The update program probably would not be allowed to run concurrently with a reporting program, however, because it would experience too many locking problems.


https://books.google.fi/books?id=3gL-D5FkPQUC&pg=PA645&lpg=PA645&dq=db2 cs can read row twice&source=bl&ots=zMASc1TgnQ&sig=ACfU3U0yLxVkMk9jvpr00udi8SjRcCYlFw&hl=en&sa=X&ved=2ahUKEwj7tP-f1IzlAhXU4KYKHbyqCVkQ6AEwDHoECAQQAQ#v=onepage&q=db2 cs can read row twice&f=false
8 окт 19, 15:36    [21989554]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
Увидел на другом форуме следующее:

автор
До cur_commit дб2 висел на блокировке и выдавал более согласованный набор. Т.е. cur_commit слабей обычного блокировочного read committed. Но это все мелочи, фигня в том cs уровень не возможно толком использовать. Представь читаем последнее заклмиченное значение записи из партиции1, пока читаем оставшиеся записи их партиции1, конкурирующая транзакция коммиттит и запись перезжает в партицию2. Теперь читающий запрос прочтет запись дважды.


db2 с установленным CURR_COMMIT не становится версионником. Поэтому, в любом случае получить "версию" таблицы или её части на определенный момент времени как в Oracle может не удасться, если талица постоянно редактируется.
По поводу "сильней" или "слабей" или "не возможно толком использовать" я не могу комментировать. Наверное, это зависит от умения реализующего нужные для конкретной системы алгоритмы человека.
Если нашелся автор этих строк, то, наверное, он сам может рассказать из своего опыта, какие именно алгоритмы он толком не смог реализовать при работе с DB2.
8 окт 19, 18:15    [21989752]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
H5N1,

Имеет ли смысл использовать DB2 одновременно с PostgreSQL по такой схеме:

DotNet Application -> nHibernate -> nHibernate Redis Cache -> DB2 Community/Developer C -> federation link -> часть таблицы в PostgreSQL, которые либо очень большие для бесплатной DB2 либо требуют версионности при обработке.

В результате получилась бы полностью гибридная СУБД с мощной математикой DB2 (количество ядер нынче неограничено?) и одновременно неограниченным объемом таблиц в PostgreSQL?

Причем она была бы одновременно блокировочной для одной части таблиц, которые большую часть времени статичны и одновременно версионной для другой части таблиц, которые требуют консистентности при частых апдейтах?

Насколько эффективно передает DB2 federation свои запросы аплинкам других СУБД?

Не как 1Це старых версий, которые просто вытягивали данные с сервера таблицами (аки DBF) и уже оперировали с ними на уровне клиента - получателя данных?
9 окт 19, 11:07    [21990178]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
H5N1
Member

Откуда: Yo.! из "Сравнения субд"
Сообщений: 225
Bimon Subio,

в такой гибридности нету смысла. во первых это лишний уровень сложности, во вторых ты будешь единственный на планете ищущий обходные пути при возникновении проблем. а проблемы будут. при этом если будешь джоинить почти наверняка дб2 просто будет выкачивать данные из постгрес чудовищно ошибаясь в статистиках. у рсубд миллион нюансов в построении планов по своим таблицам, где доступны все статитистики. а тут что-то внешнее. никакого смысла устраивать себе такие приключения нет.
как я понимаю express-c совсем убили, есть developer-c с ограничением 4 ядра. понятно что завтра еще порежут и не факт что завтра не запретят в проде процессить данные. редакция то "developer"

лично мне и постгрес не нравится. там версионность на мой вкус не правильно сделана (без UNDO). лично я постгресу предпочитаю mariadb, где реализован нормальный UNDO и рабочая репликация. в серьезных проектах лично я ориентируюсь на оракл, но сейчас бы 20 раз подумал, стоит ли такие деньги отдавать ораклу. вероятно проект с нуля я бы ориентировался на на что-то микросервисное и субд как тупое хранилище. пусть это 3-5 раз более затратно в плане разработки, но на серьезной субд слишком велики шансы упереться в ограничения лицензии.
9 окт 19, 12:06    [21990255]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
A.Panskikh
Member

Откуда: Москва
Сообщений: 118
Bimon Subio
H5N1,

В результате получилась бы полностью гибридная СУБД с мощной математикой DB2 (количество ядер нынче неограничено?) и одновременно неограниченным объемом таблиц в PostgreSQL?

Насколько эффективно передает DB2 federation свои запросы аплинкам других СУБД?

Не как 1Це старых версий, которые просто вытягивали данные с сервера таблицами (аки DBF) и уже оперировали с ними на уровне клиента - получателя данных?


Предложенный сценарий выглядит классическим ужасом саппорта.

Как вы это физически себе представляете, какая математика db2 на стороне PostgreSQL/oracle/mssql/oledb/csv и прочих всевозможных источников? Это как шильдик от феррари повесить на запорожец/самокат/кирпич. federated link для DB2 черный ящик. Это костыльная технология, используемая при всяких миграциях и кривых интеграциях, на этапах прототипирования.

Два сценария обмена - либо passthrow запросы улетают в сторону сервера dblink (селекты выдаются сначала во временную таблицу, поэтому думайте об объемах), либо источник (и обычно весь) перекачивается на сторону db2 и по нему уже "мощной математикой DB2", которая тут не работает, потому что это временная таблица без индексов и статистики. Explain в помощь - показывает физические запросы, которые улетят в сторону федеративного ресурса.

Сценарии использования dblink в проде ограничены и при серьезных объемах/нагрузках крайне рискованы. Мы у себя закрывали доступ напрямую, только через хранимые процедуры, проходящие жесткое ревью. Иначе легко получить в дцать потоков перекачку террабайтных таблиц из внешнего источника... "плавали, знаем"(с)
9 окт 19, 12:36    [21990281]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
A.Panskikh
Member

Откуда: Москва
Сообщений: 118
Bimon Subio
H5N1,
[...] с мощной математикой DB2 [...]
Насколько эффективно передает DB2 federation свои запросы аплинкам других СУБД?


Дополню свой предыдущий пост, что в случае неизбежности использования никнеймов, частично помочь оптимизатору правильно строить план запроса, поможет создание, вернее, определение индексов и заполнение статистики. Если источник другая db2 udb, то индексы для никнейма на таблицу подхватываются автоматом, но без статистики. Для источника as400 индексы, если мне склероз не изменяет, не подхватываются или только уникальные. Кроме того, не всегда автоматом срабатывает правильный маппинг типа полей, приходилось перестраивать вручную. С ораклом были проблемы с кодировкой уровня "шаман".

runstat по никнейму, по крайней мере в 10.5, даже для udb работал по полной программе, а не копированием статистики с источника, но легко через db2look переносить. Для as400 писал скрипты, с ораклами/mssql не заморачивались.
9 окт 19, 12:58    [21990312]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Я все же имел ввиду максимально возможную оптимизацию на стороне PostgreSQL, например, materialized въюхи, процедуры, функции и эту выжимку уже передавать в DB2 (несколько таких вьюх), которые все же надеюсь DB2 будет не тупо выкачивать к себе полностью, а пытаться чего-то отправить на PostgreSQL в виде запроса с условиями выборки, уменьшающими выкачиваемый датасет.

Под мощной математикой DB2 я подразумевал не только один из лучших построителей планов IBM, который при таком раскладе будет задействован слабо, сколько массу вычислительного функционала DB2, функции совместимые в т.ч. с Oracle, богатый язык SQL-PL и т.п.

Кроме того все же какой-то процент данных можно хранить и в самой DB2, например 50% от лимита в 100 гиг первое время с запасом на потом и потом возможно линки в другие DB2, конечно это колхозный велосипедизм, но неплохо для обучения :)
На этих 50% оптимизатор DB2 может проявить себя уже получше, хотя что такое 50 гиг, когда sqlite уже ворочает терабайты.
9 окт 19, 14:10    [21990426]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
H5N1
как я понимаю express-c совсем убили, есть developer-c с ограничением 4 ядра. понятно что завтра еще порежут и не факт что завтра не запретят в проде процессить данные. редакция то "developer"


Уважаемый Марк, в бесплатном Community/Developer C v11.5 есть какие-то ограничения ресурсов кроме объема базы в 100 гиг?

Ядра таки задушены или нет?
9 окт 19, 14:28    [21990457]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
[quot A.Panskikh]
Bimon Subio
Дополню свой предыдущий пост, что в случае неизбежности использования никнеймов, частично помочь оптимизатору правильно строить план запроса, поможет создание, вернее, определение индексов и заполнение статистики. Если источник другая db2 udb, то индексы для никнейма на таблицу подхватываются автоматом, но без статистики.


В смысле для линкованных таблиц из других источников на уровне основного DB2 создаются и хранятся индексы в рамках DB2 дополнительно?

В случае DB2A.T1-fed->DB2B.T1

при наличии индекса DB2B.T1.Idx1 это как-то помогает/влияет DB2A.T1 ?

DB2 автоматически создает новый индекс DB2A.T1.Idx1 - дубликат индекса DB2B.T1.Idx1?

Пока лень прочитать про индексы линкованных таблиц, простите :)

Если заинтересует покурю более подробно.
9 окт 19, 14:47    [21990486]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
A.Panskikh
Member

Откуда: Москва
Сообщений: 118
Bimon Subio,

не сами индексы, а только определение - чтобы в sysibm/sysstat появились записи.
9 окт 19, 15:18    [21990559]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
A.Panskikh
не сами индексы, а только определение - чтобы в sysibm/sysstat появились записи.


на что влияет их появление в sysibm/sysstat ?

эти индексы как то используются головным DB2 для оптимизации?

по идее ведь индексы доступны только нативному движку по другую сторону federation?
9 окт 19, 16:54    [21990681]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
в бесплатном Community/Developer C v11.5 есть какие-то ограничения ресурсов кроме объема базы в 100 гиг?
Лицензионное соглашение для IBM Db2 Developer-C 11.5:

1. Usage Restrictions

(a) The Program may use a maximum of 4 processor cores and 16 GB of memory on each physical or virtual server.
(b) Licensee may store a maximum of 100 Gigabytes of user data per database managed by the Program. A Gigabyte is 2 to the 20th power bytes.
9 окт 19, 19:45    [21990804]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
A.Panskikh
не сами индексы, а только определение - чтобы в sysibm/sysstat появились записи.


на что влияет их появление в sysibm/sysstat ?
эти индексы как то используются головным DB2 для оптимизации?
по идее ведь индексы доступны только нативному движку по другую сторону federation?
Когда оптимизатор DB2 должен выполнять федеративный запрос, то он должен сформировать запрос или серию запросов в федеративный источник для того, чтоб достать оттуда нужный набор данных и использовать его с локальными данными.
Наличие информации о федеративных индексах, статистики на саму таблицу и ее индексы помогает оптимизатору выбрать наиболее оптимальные запросы в федеративый источник.
9 окт 19, 19:53    [21990812]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Mark Barinstein,

А ведь вроде бы есть еще и платная редакция DB2 Developer (не C)?

Чем ее лимиты отличаются от бесплатной DB2 Developer С?
9 окт 19, 20:37    [21990840]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Mark Barinstein
Наличие информации о федеративных индексах, статистики на саму таблицу и ее индексы помогает оптимизатору выбрать наиболее оптимальные запросы в федеративый источник.


Получается, что DB2 отправляет в федеративные источники достаточно осмысленные запросы, а не просто выкачивает таблицы для своих локальных операций? Т.е. максимум работы сначала пытается проделать в СУБД федеративного источника?
9 окт 19, 20:40    [21990844]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
А ведь вроде бы есть еще и платная редакция DB2 Developer (не C)?
Чем ее лимиты отличаются от бесплатной DB2 Developer С?

Насколько я знаю, Developer (не C) больше нет.
Вместо этого: "IBM Db2 [Advanced | Standard] Edition AU Option for Non-Production Environments Authorized User License".
Лимиты такие же, как у соответствующих Advanced (нет лимитов) и Standard (16 cores, 128 GB RAM).
10 окт 19, 00:02    [21990956]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
Получается, что DB2 отправляет в федеративные источники достаточно осмысленные запросы, а не просто выкачивает таблицы для своих локальных операций? Т.е. максимум работы сначала пытается проделать в СУБД федеративного источника?

Так же, как и для любого другого запроса, оно пытается выполнить федеративный запрос наиболее оптимально. Это не обязательно значит, что оно всегда пытается передать "максимум работы" (это довольно неопределенное понятие) в федеративный источник.
Как обычно, может рассматриваться несколько разных вариантов выполнения, и среди них выбирается наименее затратный.
10 окт 19, 00:17    [21990961]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Mark Barinstein
Вместо этого: "IBM Db2 [Advanced | Standard] Edition AU Option for Non-Production Environments Authorized User License".
Лимиты такие же, как у соответствующих Advanced (нет лимитов) и Standard (16 cores, 128 GB RAM).


Сколько это примерно стоит?
10 окт 19, 07:06    [21990988]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Mark Barinstein,

Пожалуйста, поясните относительно наличия в бесплатной редакции Community режима федерации с любыми гетерогенными источниками.

Если я правильно понял, то в сравнении редакций:

https://archive.is/6JDlo

указана такая возможность:

автор
Federation with all other data sources, including Oracle Yes Yes Yes


А по этой ссылке:

https://en.wikipedia.org/wiki/Db2_(Formerly_Db2_for_LUW)#Limitations

только:

автор
Homogeneous federation – only DB2, Informix Data Server and Oracle targets are supported
Homogeneous SQL replication


Как быть с федерацией в PostgreSQL?
10 окт 19, 07:50    [21990997]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
Mark Barinstein
Вместо этого: "IBM Db2 [Advanced | Standard] Edition AU Option for Non-Production Environments Authorized User License".
Лимиты такие же, как у соответствующих Advanced (нет лимитов) и Standard (16 cores, 128 GB RAM).


Сколько это примерно стоит?
Примерно столько: IBM price excluding tax
10 окт 19, 10:13    [21991077]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4867
Bimon Subio
Как быть с федерацией в PostgreSQL?

Когда возникают противоречия, надо всегда смотреть лицензионное соглашение. Ссылку я приводил выше. В нем написано:

---
2. Prohibited Components

Notwithstanding any provision in the Agreement, Licensee is not authorized to use any of the following components or functions of the Program:

- SQL Replication with non-Db2 databases ("Db2 databases" includes databases hosted on IBM Db2 Hosted). Use of SQL Replication for any other purpose, source or target besides homogeneous uses (Db2 LUW to Db2 LUW replication) for example to source or target Db2 for z/OS, Db2 iSeries, any Db2 Warehouse edition, and any appliance that embeds Db2 Warehouse is not allowed
- Q Replication Functionality
- Change Data Capture functionality, except for supporting shadow table functionality within a single Db2 instance to replicate from row-organized tables into column-organized tables
- Accessing federated data in non-IBM data servers
---

Это значит, что федерация с не-IBM базами не поддерживается в Developer-C. Следовательно, в информационном центре по Db2 11.5 допущена ошибка.
10 окт 19, 10:37    [21991099]     Ответить | Цитировать Сообщить модератору
 Re: Якобы ущербность DB2 из-за того, что он блокировочник и не только (будет опровержение?)  [new]
Bimon Subio
Member

Откуда:
Сообщений: 185
Самодельный колхозинг select DB2->DB2 хранимка на DotNet -> PostgreSQL

хотя бы не запрещен?

MSSQL может возвращать датасеты DotNet для последующих select из MSSQL?

DB2 может так же? У DB2 планируется поддержка DotNet/Mono в Linux версии Community?
10 окт 19, 13:34    [21991235]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить