beldmit: (Программизм)
[personal profile] beldmit

Я уж думал, этот баг в PostgreSQL давно пофиксили - таблица с уникальным ключом по дате, делаем апдейт, увеличивая дату на день - получаем нарушение уникальности. Во времена коммунивера я на такое тоже натыкался, как сейчас припоминаю. Если дату уменьшать, а не увеличивать - все нормально.

Еще один сюрприз - то, что в PostgreSQL нет dirty read. Как следствие триггер BEFORE INSERT, обеспечивающий отсутствие пересечения диапазонов, можно обмануть и вставить из разных транзакций диапазоны, которые все-таки пересекутся. Предыдущий автор кода от этого застраховался LOCK TABLE. Что естественно, не фонтан.


Но это все фигня. Через неделю надеюсь похвастаться результатом, имеющим публичное значение.

Date: 2007-02-06 11:47 pm (UTC)
From: [identity profile] sunders.livejournal.com
Ничего не понял, но звучит "красиво, уж очень на ... твою мать похоже!" (с)старый советский анекдот.

Date: 2007-02-07 05:53 am (UTC)
From: [identity profile] shutofsky.livejournal.com
Ой, (BEEP). А нельзя мигрироваться в нормальную коммерческую СУБД? Посмотри внимательно, как выглядит лицензия на пробную DB/2, к примеру, может есть какая лазейка. Да, она не поддерживает мультипроцессорность. Но ИМХО по функционалу и производительности оный постгрес как бык овцу перекроет...

Date: 2007-02-07 06:07 am (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Нормальных коммерческих СУБД не бывает. У всех лидеров рынка (Oracle, DB2 etc) внутри разложены точно такие же грабли как у Postgres и в сравнимом количестве. Просто у Postgres их можно, если очень приспичило, влезть и поправить, а у Oracle/DB2 - нет.
From: [identity profile] cmike.livejournal.com
... баг, который AFAICS заключается в полном отсутствии подсистемы, скромно умолчим.

А вот про Оракл попрошу подробнее.

Date: 2007-02-07 10:17 am (UTC)
From: [identity profile] shutofsky.livejournal.com
Дык разложено. Но все-таки не таких :).

Date: 2007-02-07 06:10 am (UTC)
From: [identity profile] beldmit.livejournal.com
Обсуждалось в свое время, еще до меня. Но в общем - не нужно. В смысле, не настолько нужно, потому как и этот апдейт нужен очень редко, и без DIRTY READ обойтись можно - достаточно правильно продумать архитектуру.

Date: 2007-02-07 10:18 am (UTC)
From: [identity profile] shutofsky.livejournal.com
А. Нет, понятно что можно продумать. И в общем-то и коммерческую СУБД всерьез можно раскорячить кривым SQL. Но странно оно как-то.

Date: 2007-02-07 11:54 am (UTC)
From: [identity profile] ex-croco667.livejournal.com
Бррр, а напомни, что за зверь dirty read? а то ни фига не помню уже теорию

Date: 2007-02-07 02:48 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Он же read uncommited. Данные, внесенные другой транзакцией.

Date: 2007-02-07 08:09 pm (UTC)
From: [identity profile] sdols.livejournal.com
Недавно интересовался, на чем работают современные веб-онлайн-игры. Прям радость берёт - в лучшем случае Postgre. Как правило - вообще MySQL. И это при том, что в деле пропаганды опенсорса есть еще непокорённые вершины!

Date: 2007-02-08 08:33 am (UTC)
From: [identity profile] beldmit.livejournal.com
Так это. У нас система здоровая - и возможностей PostgreSQL вполне хватает. Там, где не хватает - надо переделать, там проблема архитектурная. А если бесплатных возможностей хватает - зачем платить?

Date: 2007-02-15 02:44 pm (UTC)
From: [identity profile] sdols.livejournal.com
Ну дело-то не в ценах. И именно в том дело, что дело не в ценах :) Народ выбирает для решения задач софт не по соображениям общей эффективности, а по соображениям стоимости пакета. В результате некоторые задачи, для которых к примеру MS SQL - самое ОНО, выполняются на заведомо проигрышных платформах. Твой случай в рассчет не беру т.к. убеждён, что учитывались иные критерии.

http://npj.ru/arioch

Date: 2007-02-15 06:17 pm (UTC)
From: [identity profile] arioch [npj.ru] (from livejournal.com)
ЕМНИП, Postgres - версионник ? Как ты в версионнике сделаешь dirty read ? Не все режимы блокировочников можно перевести на версионники и наоборот. В Firebird то же самое должно быть.

А через Check constraint это нельзя слелать ? Туда нельзя вложить select ? Хотя это м.б. еще тяжелее блокировки будет.

...или промежуточный слой сделать :-)

Date: 2007-02-15 06:41 pm (UTC)
From: [identity profile] arioch [npj.ru] (from livejournal.com)
sorry за ссылку.
not intentional.

Промахнулся и вбил ее вместо имени в тему :-(

Date: 2007-02-15 07:10 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Так. Наблюдаю отсылки к какой-то теории, которую я не знаю, но знать должен. Можно
подробностей?

Profile

beldmit: (Default)
Dmitry Belyavskiy

May 2025

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 9th, 2025 03:13 pm
Powered by Dreamwidth Studios