Pull to refresh

Comments 8

А чем он лучше, ну скажем постгресса?

Я серьезно, не для того что-бы доколупаться или потроллить.

Во времена, когда он еще назывался Interbase, фирма Borland, которая его разработала, хвасталась, что он стоит на абрамсах. Типа, выбрали его туда, потому-что он быстро стартовал.

Еще в памяти 20-и летней давности отложилось, что это чистый версионник, но, честно, уже не помню что это значит, а освежать память гуглежом лень. :) Помню только смутно, из той-же области памяти которой 20 лет, что Оракл делает вид, что версионник, а другие вообще не версионники. Но т.к. 20 лет срок большой, то может и какие-то ложные воспоминания.

Быть версионником, это вроде-как что-то хорошее, но обратная сторона - он, к сожалению, медленнее остальных СУБД. Хотя опять-же, все это из того-же пула знаний, последний раз с ним дела имел году в 2007, может теперь все-все поменялось.

но, честно, уже не помню что это значит

Это значит что при изменении записей они изменяются не напрямую в таблице, а создаются их копии (версии), которые при коммите изменяющей транзакции становятся действующими. А до коммита, эти записи не видны другим транзакциям, а видны старые версии, до изменения.

СУБД, которые не имеют этого механизма, при попытке чтения изменённой записи приостанавливают другие транзакции до коммита или ролбэка изменений, чтобы они не прочитали незакоммиченные изменения (поэтому их называли "блокировочниками", в противовес "версионникам").

Но это дела давно минувших лет. Сейчас все популярные СУБД умеют создавать версии, поэтому ставить это в преимущества Firebird сомнительно. Разве что отметить, что он был в числе первых.

Точно! В те времена ороклистам было модно смотреть на mssql сильно свысока, ибо фуу, блокировочник! :)

Оракл делает вид, что версионник,

Oracle более лучший версионник чем все постгресы с файербердами вместе взятые.

Ибо версии в оракле оптимизированны под успешный commit. (если комит прошел, то ничего делать не надо, старая версия сама умрет в undo log-е просто со временем, а вот если ролбек - надо возвращать старую версию из undo log) А версии в postgres оптимизированны под rollback. (т.к. при комите надо vacuum делать). А теперь подумайте как часто у вас комиты, а как часто ролбеки?? Я думаю разница в 2-3 порядка! Единственно узкое место тут - это долгоживущие транзакции, которые могут дотянуть до того что undolog кончится и транзакция получит "snapshot too old".

Файерберд похож тут на постгресс , только вакуум делается не отдельным процессом, а его делает select когда сканит таблицу, по пути чистя старые версии

Не уверен на 100%, но кажется во времена когда трава была зеленее, девки краше, а зарплата у программистов была примерно как у бухгалтеров, в спорах, во время распивания дешевых алкогольных напитков, Оракл называли читером потому что он делал версии не отдельных записей, а блоков, а вот фаерберд версионил отдельные записи.

Ну и где-то в те самые времена, в конторе, где я работал, бизнес-логика вся была в хранимках в оракле, базы большие, так что snapshot too old прям вызвали воспоминания :)

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

Sign up to leave a comment.

Articles