Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9 10 .. 15   вперед  Ctrl
 Re: Чем плох блокировочник по сравнению с версионником?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67393
Блог
vadiminfo
Ну я тоже так понял. Но это как бы это все же особые требования к оперативности.

Да даже не совсем так. Допустим, есть некие данные А. Допустим, у нас есть две транзакции: одна читает А и пишет Б, другая читает А и как-то их модифицирует. Так вот, с точки зрения состояния базы и вообще логики происходящего нет разницы между двумя ситуациями:

  • прошла первая транзакция, через десять минут вторая
  • обе транзакции идут параллельно, первая успевает ухватить старую версию изменяемых данных.

    Поэтому если мы считаем, что в первом случае всё нормально и данные правильные, нет ровно никаких резонов считать, что во втором они неправильные. Если мы хотим, чтобы Б всегда соответствовали последнему состоянию А - значит, нужно явно это указывать (то есть вызывать первую операцию в конце второй).
  • 7 май 15, 19:23    [17614929]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    ViPRos
    Member

    Откуда:
    Сообщений: 9965
    softwarer
    vadiminfo
    Ну я тоже так понял. Но это как бы это все же особые требования к оперативности.

    Да даже не совсем так. Допустим, есть некие данные А. Допустим, у нас есть две транзакции: одна читает А и пишет Б, другая читает А и как-то их модифицирует. Так вот, с точки зрения состояния базы и вообще логики происходящего нет разницы между двумя ситуациями:

  • прошла первая транзакция, через десять минут вторая
  • обе транзакции идут параллельно, первая успевает ухватить старую версию изменяемых данных.

    Поэтому если мы считаем, что в первом случае всё нормально и данные правильные, нет ровно никаких резонов считать, что во втором они неправильные. Если мы хотим, чтобы Б всегда соответствовали последнему состоянию А - значит, нужно явно это указывать (то есть вызывать первую операцию в конце второй).

  • а порядок пушкин будет задавать, если первый запускает вася, а второй петя?
    7 май 15, 19:53    [17615027]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    softwarer
    Member

    Откуда: 127.0.0.1
    Сообщений: 67393
    Блог
    ViPRos
    а порядок пушкин будет задавать, если первый запускает вася, а второй петя?

    А кто задаёт порядок в многопользовательской системе?
    7 май 15, 19:57    [17615038]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    ViPRos
    Member

    Откуда:
    Сообщений: 9965
    softwarer
    ViPRos
    а порядок пушкин будет задавать, если первый запускает вася, а второй петя?

    А кто задаёт порядок в многопользовательской системе?

    тот кто проектирует
    7 май 15, 19:57    [17615040]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    softwarer
    То есть предыдущее утверждение явно дезавуируем.

    Какое именно из них?

    softwarer
    Выбор - не преимущество. Уместный выбор - преимущество. Неуместный выбор - недостаток.

    А давайте не только Вы будете решать, какой выбор --- уместный, а какой --- нет? ;)

    softwarer
    Установка savepoint-а бесплатна и ничему не мешает.

    Где-то бесплатна, а где-то нет. И пример, где мешает, я уже приводил.

    softwarer
    Как пример "выборов", которые по Вашей логике, являются преимуществом.

    Ясно. Ну некоторые из них (иногда) являются. Например, в блокировочниках обычно можно использовать READ UNCOMMITTED просто для того, чтобы оценить прогресс какой-нибудь "затормозившей" транзакции, смотря на ещё незакомиченные ею данные. Без него этой возможности (именно таким способом) нет.

    softwarer
    Ну вот и очень плохо, что не получится Такие нехорошие, выбор отобрали

    Да нет, не очень. Отсутствие этих выборов легко можно пережить.

    Кстати, "нормальная" СУБД, о которой Вы говорите --- это Oracle?
    7 май 15, 20:02    [17615053]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    ViPRos
    Member

    Откуда:
    Сообщений: 9965
    не теши себя, я имел ввиду что разработчики субд не осилили задачу многопользовательского доступа
    7 май 15, 20:03    [17615054]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    ViPRos
    Member

    Откуда:
    Сообщений: 9965
    так как их не интересовал (как и любого любителя теории множеств чего либо) содержание
    7 май 15, 20:05    [17615059]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    ViPRos
    softwarer
    пропущено...
    А кто задаёт порядок в многопользовательской системе?

    тот кто проектирует

    А зачем? Тут softwarer прав --- любой порядок пересекающихся транзакций корректен, хотя это и не очень интуитивно.
    Вот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны. Кстати, ничто не мешает какой-то гипотетической СУБД работать то так, то этак, и это тоже нормально.
    7 май 15, 20:15    [17615079]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    ViPRos
    так как их не интересовал (как и любого любителя теории множеств чего либо) содержание

    А в чём сила содержание, брат? ;)
    7 май 15, 20:18    [17615085]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    Dimitry Sibiryakov
    Member

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

    PgSQLAnonymous
    я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то
    модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они
    пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как
    увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в
    версионнике), и оба исхода корректны.

    Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные
    перед изменением, а во второй - после него.

    Posted via ActualForum NNTP Server 1.5

    7 май 15, 20:58    [17615207]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    miwaonline
    Member

    Откуда:
    Сообщений: 2249
    PgSQLAnonymous
    ак вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны.

    Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.
    7 май 15, 21:07    [17615245]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    SergSuper
    Member

    Откуда: SPb
    Сообщений: 5488
    miwaonline
    PgSQLAnonymous
    ак вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны.

    Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.
    ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете
    по-моему тут как-то многими переоценивается значение версионности и примеры проводятся никак не демонстрирующие ее
    мне так кажется гораздо важнее что например не покажутся данные транзакции, которая будет откачена
    а прочитается что Петя у Васи снял деньги чуть раньше или чуть позже - разницы особой нет, все равно пока с этими прочитанными данными что-то сделают в базе они могут еще не раз поменяться
    7 май 15, 21:29    [17615312]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    Dimitry Sibiryakov
    PgSQLAnonymous
    я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то
    модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они
    пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как
    увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в
    версионнике), и оба исхода корректны.

    Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные
    перед изменением, а во второй - после него.

    И были бы правы. Разве я где-то говорил, что это корректный результат?
    7 май 15, 21:58    [17615416]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    SergSuper
    ерунда, максимум что не сойдется сумма активов и пассивов в каком-нибудь отчете

    Нет, минуточку. ;) Если отчёт отображает состояние базы, которого никогда не было, он просто косой. Если СУБД не позволяет сделать отчёт, который бы не отображал таких состояний --- она тоже косая. ;)

    SergSuper
    а прочитается что Петя у Васи снял деньги чуть раньше или чуть позже - разницы особой нет, все равно пока с этими прочитанными данными что-то сделают в базе они могут еще не раз поменяться

    Вот именно.
    7 май 15, 22:05    [17615437]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    miwaonline
    Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.

    Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то?
    7 май 15, 22:08    [17615442]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    ViPRos
    Member

    Откуда:
    Сообщений: 9965
    PgSQLAnonymous
    ViPRos
    так как их не интересовал (как и любого любителя теории множеств чего либо) содержание

    А в чём сила содержание, брат? ;)

    видишь как народ испугался слова "правильные"?
    а "правильность" требует осмысления (данные как информация) и тогда субд знал бы как упорядочить конкурирующие транзакции, что бы все было осмысленно
    не - целостно, атомарно, хренарно - а осмысленно
    7 май 15, 23:15    [17615662]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    Alexander Ryndin
    Member

    Откуда:
    Сообщений: 4919
    Блог
    PgSQLAnonymous
    ViPRos
    пропущено...

    тот кто проектирует

    А зачем? Тут softwarer прав --- любой порядок пересекающихся транзакций корректен, хотя это и не очень интуитивно.
    Вот Вам такой пример: я запускаю 2 транзакции --- отчёт (и он выполняется 3 дня) и какую-то модификацию данных, которые он затрагивает (и она выполняется 1 секунду), и они пересекаются. Так вот, в отчёте, который сформируется только через 3 дня, я могу как увидеть изменённые данные (так будет в блокировочнике), так и нет (а так --- в версионнике), и оба исхода корректны. Кстати, ничто не мешает какой-то гипотетической СУБД работать то так, то этак, и это тоже нормально.
    В правильном блокировочнике отчет, который выполняется 3 дня просто не даст менять данные все эти 3 дня. Грязное чтение может приводить к совершенно причудливым искажениям отчета. Так, например, в какой-то момент процедуры ETL могут просто обнулить агрегатную таблицу перед пересчетом.
    7 май 15, 23:25    [17615683]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    Dimitry Sibiryakov
    Member

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

    PgSQLAnonymous
    Разве я где-то говорил, что это корректный результат?

    А процитировал я чьи слова?..

    Posted via ActualForum NNTP Server 1.5

    8 май 15, 00:22    [17615834]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    Dimitry Sibiryakov
    PgSQLAnonymous
    Разве я где-то говорил, что это корректный результат?

    А процитировал я чьи слова?..

    Вы их, очевидно, не поняли.

    Dimitry Sibiryakov
    Ну, лично я бы не назвал корректным исход, когда в первой половине отчёта выведены данные перед изменением, а во второй - после него.

    В случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
    8 май 15, 08:24    [17616143]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    Alexander Ryndin
    Member

    Откуда:
    Сообщений: 4919
    Блог
    PgSQLAnonymous
    В случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
    Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу:
    Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник?
    8 май 15, 08:48    [17616203]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    miwaonline
    Member

    Откуда:
    Сообщений: 2249
    PgSQLAnonymous
    miwaonline
    Ну да, конечно. В начале отчета (условно для простоты - взаиморасчеты между контрагентами) Вася должен Пете деньги за неоплаченные накладные, а в конце - уже Петя должен Васе, потому что во время выполнения отчета бух платежку провел.

    Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то?

    То, что это один и тот же отчет, в котором нет состояния "до" и "после", а есть две части, которые, по непонятной мне логике, имеют право отображать разные данные.
    8 май 15, 08:49    [17616206]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    miwaonline
    Member

    Откуда:
    Сообщений: 2249
    SergSuper
    miwaonline
    пропущено...

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

    Я правильно понял, что несогласованный между собой (или противоречащий сам себе) отчет для вас - ерунда?
    8 май 15, 08:51    [17616213]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    Alexander Ryndin
    PgSQLAnonymous
    В случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
    Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу:
    Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник?

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

    Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).
    8 май 15, 09:02    [17616243]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    PgSQLAnonymous
    Guest
    miwaonline
    PgSQLAnonymous
    пропущено...

    Значит, один из них --- по состоянию "до", а другой --- "после" проведения платёжки. Что не так-то?

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

    Где Вы взяли какие-то "две части"? Я говорил о двух вариантах выполнения отчёта (в версионнике и блокировочнике).
    Нет никаких частей, никаких "разных данных", оба отчёта корректны.
    8 май 15, 09:06    [17616250]     Ответить | Цитировать Сообщить модератору
     Re: Чем плох блокировочник по сравнению с версионником?  [new]
    Alexander Ryndin
    Member

    Откуда:
    Сообщений: 4919
    Блог
    PgSQLAnonymous
    Alexander Ryndin
    пропущено...
    Хуясе. Какая все-таки волшебная технология эти блокировочники. Готов выкинуть свой Oracle, не глядя. Давайте только вы поясните, как блокировочник технически решит вот такую задачу:
    Мы запускаем отчет, который будет работать 3 дня. В самом начале выполнения оптимизатор составляет 2х страничный план выполнения. В рамках этого плана 3 раза делается join с таблицей агрегатов. При этом первый join происходит в первый день, второй во второй, третий - в третий. На второй день происходит пересчет таблицы агрегатов. Что будет делать блокировочник?

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

    Вообще, я уже говорил --- я за гибридный подход (т.е. возможность выбора в одной СУБД как полноценного версионного, так и блокировочного механизма).
    Это как так? Мой трехдневный отчет заблокирует ежедневное обновление агрегатов? А где же тогда магия?
    Хорошо, что я решил задать вам этот вопрос, а не снес Oracle. А то мне показалось, что вы в прошлый раз сказали вот это:
    PgSQLAnonymous
    В случае блокировочника во всём отчёте будут выведены данные после изменения, т.е. фактически считается, что он был выполнен после модификации, а в версионнике --- до модификации.
    8 май 15, 09:13    [17616277]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5 6 7 8 9 10 .. 15   вперед  Ctrl
    Все форумы / Сравнение СУБД Ответить