powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
25 сообщений из 370, страница 4 из 15
Чем плох блокировочник по сравнению с версионником?
    #38954225
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?

показываю магию. внимательно следите за руками !
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954228
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousпропущено...

It depends. Если полный пересчёт (либо блокировки "пересекаются"), то пересчёт заблокируется (а то Вы не знали ;) ).

Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).Это как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?
А вот так, магии-то не существует. ;)

Alexander RyndinХорошо, что я решил задать вам этот вопрос, а не снес Oracle.

Да ладно, снесли бы уж, что Вы всё сидите с не-ACID СУБД ;) (и это в 2015-то году! )

Alexander RyndinА то мне показалось, что вы в прошлый раз сказали вот это:
PgSQLAnonymousВ случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
Да, сказал. А в этом случае модификация реально будет выполнена только после отчёта, а не до. ;)
Грубо говоря, в блокировочнике последовательность транзакций совпадает с последовательностью COMMIT-ов.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954241
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?

показываю магию. внимательно следите за руками !
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.
Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954294
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них.
Изоляция и обеспечение непротеворечивости в течение непродолжтительного времени (например проведения платежа) или построение быстрого оперативного отчета (например выписка по счету за текущий день) можно и частично переложить на мехнизмы блокировок или версий.
Практика показала, что версионный механизм так или иначе реализуется в субд. т.к. наличие выбора режима работы - это лучше чем только один вариант.
Лично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954296
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.[/quot]

Э, а какая магия дает возможность версионнику в реальном времени считать все движение по счетам за прошедшие 30 лет при каждом запросе, без всяких закрытых периодов?
Банковский день/закрытый период вводились просто в те времена, когда нормальных materialized view и партиционирования еще не было. Да и память/ядра стоили дорого.
Так что все-таки лучше без передергиваний.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954303
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousYo.!пропущено...

показываю магию. внимательно следите за руками !
вводим понятие банковский день/закрытый период и не разрешаем в этот период вносить изменения. отчеты строим только по закрытому периоду. 30 лет так работали и дальше так работать будут, а то, что у конкурентов на версионниках давно все в реалтайме, ну так это детали.
Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2.
1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные
2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы
3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные
Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954310
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin,

2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы

Мне кажется блокировать писателей явно "не комильфо"...
от этого зависит отклик базы данных на запись.(оперативные журналы то не резиновые)
И если в базу много пишут...и ровно также много делают аналитических отчётов...производительность по записи блокировочника может просесть по отношению к версионнику.(Ну тут уже выше говорилось,что версионник лучше масштабируется)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954312
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldв споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них. 3 дня было взято для того, чтобы подчеркнуть проблему. Та же самая проблема будет, если отчет выполняется 2 минуты. Это как раз из разряда оперативных отчетов, но эти отчеты также могут обращаться к нескольких таблицам, что может привести к рассинхрону. Городить "логику хранения данных в базе и учета изменения в них" ради этих отчетов в OLTP системе никто не будет.
Ggg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных системЭто да. Не понятно к чем только фразы про shared nothing. Shared nothing может быть применен как к блокировочникам, так и к версионникам.
Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.Простите, какой-то поток сознания про RAM и диски. Какие такие версионники хранят блокировки на диске? Про Oracle могу сказать, что информация о блокировках хранится в заголовке блока данных, который в свою очередь лежит в оперативке.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954318
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineSergSuperпропущено...
ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете

Я правильно понял, что несогласованный между собой (или противоречащий сам себе) отчет для вас - ерунда?неправильно
ерунда в том что не получится что Петя должен Васе
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954319
DPH3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются.

Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

Вообще, по моему опыту (трехзвенок) у версионников есть несколько реальных проблем, с самой БД мало связанных:

1) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.

2) Версионники провоцируют смешивать OLTP и OLAP в большей степени, нежели блокировочники. Как, например, в задаче выше - никто из обсуждавших даже не спросил, а какой физический смысл у отчета про "состояние базы когда-то 3 дня назад". А как только добавляется "отчет по состоянию на 09:00 в понедельник", то сразу разница между блокировочником и версионником вообще исчезает, да и вообще лучше взять Spark.

3) Версионники, почему-то, сложнее администрировать. По крайней мере, DBA для DB2 и MS SQL стоят дешевле, чем для Oracle/Postgre и часов на типовую задачу у них уходит меньше.
Не знаю, проблемы с архитектурой или чем-то еще )

Ну и для реальных задач выбор между блокировочником и версионником не так уж и важен. А вот как реализовано партиционирование, материализованные представление, инкрементальный бакап, log shipping и сколько это стоит - действительно важно.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954328
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldв споре про 3х дневный отчет не правы обе стороны, т.к. непротиворечивость данных такого мега-отчета должен обеспечиваться не механизмами изоляции транзакций, а логикой хранения данных в базе и учета изменения в них.

Это потому что Вы так сказали? ;) А я вот считаю наоборот, и что?

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

Опять-таки, не согласен. Я считаю, что эта задача (обеспечение непротиворечивости при конкурентном доступе) должна решаться именно СУБД.

Ggg_oldПрактика показала, что версионный механизм так или иначе реализуется в субд. т.к. наличие выбора режима работы - это лучше чем только один вариант.

Согласен.

Ggg_oldЛично я всегда предпочитал блокировочники, но у версионников как показало время есть преимущество в части масштабируемости информационных систем, которые не параллелятся по типу shared nothing. Например все тяжелые учетные системы, банковские системы. Дисковые стойки масштабируются очень хорошо и линейно, знай добавляй дисков и будет расти iops-ы, версионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
Вообще-то кеширование в основном скрывает эти различия, и как блокировки (которые тоже могут храниться на диске), так и версии (которые тоже можно хранить в RAM) обычно находятся именно в RAM. И, кстати, знай добавляй RAM и "будет расти iops-ы". ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954332
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются.

Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

а какой физический смысл у отчета про "состояние базы когда-то 3 дня назад". Еще раз повторюсь. 3 дня это для примера, чтобы усугубить. Абсолютно та же проблема будет и на запросе, который работает 1 день, 1 час и 1 минуту. Просто возникать она будет реже/чаще, а для пользователь будет создавать большие/меньшие проблемы.

Естественно аналитическую систему с отчетами, работающими часами нужно отделять. В версионнике смешение двух нагрузок также ничего хорошего не приносит. Например, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954333
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousпропущено...

Уж скорее в stale-тайме. ;) Впрочем, на практике это всё не так уж бросается в глаза.Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2.
1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные
2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы
3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные
Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать.
Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции).
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954334
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinНапример, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена.
Слушайте, вот честно, когда Вы её в последний раз видели? Я, если не считать искусственно создаваемых примеров - на версии 8.1.7.4, лет двенадцать назад.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954338
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
это не правда. ни postgres, ни mysql/innodb, ни mssql/snapshot не хранят локи в датафайлах. эта мудрая мысль заложена только только в оракл.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954342
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerAlexander RyndinНапример, у Oracle бывает ошибка ORA-01555 snapshot too old, говорящая о том, что нужная нам версия данных уже выброшена.
Слушайте, вот честно, когда Вы её в последний раз видели? Я, если не считать искусственно создаваемых примеров - на версии 8.1.7.4, лет двенадцать назад.Если честно, то полгода назад.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954346
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PgSQLAnonymousAlexander Ryndinпропущено...
Пользователь обычно хочет получить согласованный результат. Будь он на время Т или время Т+2.
1) в случае версионника пользователь получит ответ на время Т, писатели данных продолжат менять данные
2) в случае блокировочника пользователь получит ответ на время Т, но писатели данных будут заблокированы
3) в случае блокировочника+грязного чтения пользователь не получит согласованный результат ни на Т, ни на Т+2, писатели продолжат менять данные
Мне кажется, с точки зрения бизнес приемлемы 1) и 2). Иногда может быть приемлем 3), но это нужно всегда оговаривать.
Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции)....и пусть весь мир подождет.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954352
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH33) Версионники, почему-то, сложнее администрировать. По крайней мере, DBA для DB2 и MS SQL стоят дешевле, чем для Oracle/Postgre и часов на типовую задачу у них уходит меньше.
Не знаю, проблемы с архитектурой или чем-то еще )Это по причине того, что вы сравниваете среднюю температуру по больнице. В вашу статистику попадают как DBA, сопровождающие банковские системы, так и DBA с 1С на MSSQL.
Если вы начнете сравнивать яблоки с яблоками, то увидите, что классный MSSQL спец получает не меньше чем классный спец по Oracle. Просто крутых систем на MSSQL построено раз два и обчелся, а на Oracle куда не плюнь бизнес-критические системы. Ну те же банки возьмите - они в России сидят на Oracle в 90% случаев.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954353
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DPH3PgSQLAnonymousВот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются.

Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)
Это да. ;)

DPH31) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.

Подпишусь. "Слушайте, слушайте, и не говорите, что не слышали!" ;)

DPH3Ну и для реальных задач выбор между блокировочником и версионником не так уж и важен. А вот как реализовано партиционирование, материализованные представление, инкрементальный бакап, log shipping и сколько это стоит - действительно важно.
Вообще-то да, но с учётом того, что "настоящих" (с полноценным версионным SERIALIZABLE) версионников не так уж и много, выбор всё равно важен. ;)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954355
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3часов на типовую задачу у них уходит меньше.
Пример "типовой операции" - В СТУДИЮ!!!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954370
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!Ggg_oldверсионники хрянт инфу о блокировка на диске, а значит гораздо меньше зависят в отличие от блокировочников, хранящих блокировки в RAM. Т.е. производительность версионников привязана к гораздо более легко масштабируемому ресурсу, чем производительность блокировочников.
это не правда. ни postgres, ни mysql/innodb, ни mssql/snapshot не хранят локи в датафайлах. эта мудрая мысль заложена только только в оракл.
Да ладно ;)

In PostgreSQL, tuple level locks are not held in RAM for any length of time; lock information is written to the tuples involved in the transactions.
Но это про predicate locks, которые ничего не блокируют, если честно. ;)
А кроме того, чем плоха эта мысль? Потенциально-то это способствует масштабируемости.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954382
PgSQLAnonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinPgSQLAnonymousпропущено...

Нет, в случае блокировочника пользователь получит ответ на время Т+2 (по состоянию на конец этой транзакции)....и пусть весь мир подождет.
В худшем случае --- да. ;)

А если вот в версионнике 100500 транзакций пересекаются и конкурируют за один и тот же ресурс, то "пусть весь мир отойдёт". ;) Уже наступил вечер, а транзакции всё откатывались.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954389
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) 95% разработчиков систем вообще не знают о разнице между блокировочниками и версионниками и думают, что у Oracle уровень serializable работает так же, как и у DB2.
В результате у нескольких платежных систем (реально работающих на рынке) при массовых операциях с одним счетом могут пропадать деньги и нарушаться пользовательские лимиты по счетам.


А пропадают деньги у кого у оракла или дб2?...
Судя по всему у оракла...
Ну в принципе,если разработчики не занют разницы..это в принципе их косяк...
Ведь версионник может эмулировать блокировочник.

set transaction exclusive mode
или
select for update...
И тогда нужный набор будет ждать.
(Хотя для отчётов...значение иметь не будет всё равно...так же будут формироваться)
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954413
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!Alexander RyndinЭто как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?

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

Тока если блокировочник вдруг не эскалирует блокировку (а для 3-дневного отчета у него будут все причины это сделать). Тогда никакой закрытый период не поможет. Только если все в отдельные таблицы (считай базу) не переносить.
...
Рейтинг: 0 / 0
Чем плох блокировочник по сравнению с версионником?
    #38954421
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DPH3Хм, интересно, а почему на OLTP системе запускаются отчеты, которые работают 3 дня и что бы сделать с архитектором за такие фокусы :)

Это вы объясните людям, которые хотят на одной форме рядом с количеством для ввода видеть количество реализации за период. Вы конечно можете им пораcсказывать про OLTP и OLAP, про неправильную архитектуру их бизнеса. Но я надеюсь вы сами понимаете, куда вас пошлет заказчик.

А у версионника про это даже думать не надо.
...
Рейтинг: 0 / 0
25 сообщений из 370, страница 4 из 15
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем плох блокировочник по сравнению с версионником?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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