beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2007-02-06 11:04 pm
Entry tags:

Рабочие будни


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

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


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

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

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

[personal profile] vitus_wagner 2007-02-07 06:07 am (UTC)(link)
Нормальных коммерческих СУБД не бывает. У всех лидеров рынка (Oracle, DB2 etc) внутри разложены точно такие же грабли как у Postgres и в сравнимом количестве. Просто у Postgres их можно, если очень приспичило, влезть и поправить, а у Oracle/DB2 - нет.

Ну, насчет влезть и поправить

[identity profile] cmike.livejournal.com 2007-02-07 09:53 am (UTC)(link)
... баг, который AFAICS заключается в полном отсутствии подсистемы, скромно умолчим.

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

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

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

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

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

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

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

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

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

http://npj.ru/arioch

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

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

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

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

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

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