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

Откуда: iBase.ru
Сообщений: 30267
kdv
одновременно существование двух разных committed версий одной и той же записи.

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

допустим, есть запись с буквой А в столбце F.
- update set F='Б', commit.
появилась версия с Б, которая ссылается на версию с А

- update set F = '5', commit
появилась версия с 5, которая ссылается на версию с Б

Если не касаться сборки мусора, то на диске хранится 3 версии одной записи со значениями А, Б и 5 в столбце. Read Committed при перечитывании будут видеть А, Б и 5 по мере обновления и commit.
Если в самом начале была транзакция Snapshot, то она будет видеть только версию с А, и ничего больше. И после обновления кем-то записи на Б уже обновить эту запись не сможет.
И версия с А будет удерживаться от сборки мусора до тех пор, пока активна эта транзакция snapshot.

Вот в общих чертах. Подробнее, с картинками, изложено тут
http://www.ibase.ru/devinfo/mga.htm
18 июл 09, 01:48    [7431932]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Di_LIne пишет:

> А не прошедщие?

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

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

В смысле ? Двойная запись -- это запись и страниц лога,
и страниц данных на диск ?

Posted via ActualForum NNTP Server 1.4

18 июл 09, 11:49    [7432085]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

kdv пишет:

> логи может ничем от жураналирования и не отличаются. Только
> журналирование у IB 2007 служит только для "защиты" базы от сбоев. Т.е.

Журналирование в любой СУБД служит для защиты базы от сбоев, ну и что ?

> В упрощенном виде журнал IB 2007 представляет собой следующее:
> 1. пишем страницы не в базу а в "лог"
> 2. лог имеет фиксированный размер, по заполнению создается новый лог
> 3. логи циклические
> 4. по checkpoint информация из лога переносится в базу.
> все.

Ну, в общем, ничего существенно отличающегося от других СУБД.

> Кажется что это похоже на логи СУБД с transaction/undo log, но здесь
> откатить или "накатить" лог нельзя, посмотреть лог нельзя, и т.п.

Как и везде.

> то есть, последний раз Вы что-то такое читали про ИБ-ФБ лет 8-9 назад.
> Потому что у IB нет открытых исходников, они у Firebird.

Это понятно. Но Firebird -- это бывший IB. Ладно.

Posted via ActualForum NNTP Server 1.4

18 июл 09, 11:52    [7432090]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Александр Гoлдун
Member

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

> Кажется что это похоже на логи СУБД с transaction/undo log, но здесь
> откатить или "накатить" лог нельзя, посмотреть лог нельзя, и т.п.

Как и везде.

Как это везде? В каких еще базах с логом нельзя накатить лог или посмотреть его содержимое, транслировав в SQL?
18 июл 09, 12:54    [7432130]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Di_LIne
Member

Откуда: Тропик Скорпиона
Сообщений: 32554
MasterZiv

Если второй догонит первый -- место в логе кончилось,
кранты, надо транзакцию откатывать.

Ну вот. Дальше-то что?
Кто, как и куда ее откатит?
Мы же наихудший вариант рассматривали для FB.
Теперь очередь других отдуваться.
18 июл 09, 14:37    [7432213]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Di_LIne
Member

Откуда: Тропик Скорпиона
Сообщений: 32554
Александр Гoлдун
Как это везде? В каких еще базах с логом нельзя накатить лог или посмотреть его содержимое, транслировав в SQL?

А какой объем, в записях, можно накатить? 100% базу?
18 июл 09, 14:39    [7432215]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

vadiminfo пишет:

> А версионники как разрешают конфликт, когда два юзера пытаются изменять
> одну и туже запись.
> По времени, по приоритету?

На сколько я помню, чистые версионники никак эту проблему не разрешают.
Отсюда -- проблемы write skew, lost update. Хотя возомжно я
не прав, что-то я подзабыл уже это всё.

> Поскольку какая никакая версионность позволяет не блокировать читателя,
> а два писателя одновременно, не такое честоя явление, то все еще,
> возможно, преждевременно относить Оракл к блокировочникам - это может
> сбаить с толку: блокировочник в общепринятом значении обязан блокировать
> читателя, т.е. припишем Ораклу то чего нет.

А вот псевдоверсионники писателей разводят обычными блокировками.
Так что там всё в порядке с этим делом.

> > Что скрывается за понятием страница данных? У Оракла в явном виде такого
> > понятия вроде как нет. Есть блоки, которые хранятся на диске либо в

Ну блоки. Блок, страница -- одно и то же.

Термины разные просто.

> Ну это наверное в СУБД у которых данные вседа в оперативке. Оракл кстати

У всех субд часть данных в оперативке. Кэш называется.
Одно из самых мощных средств повышения производительности.
Кэш и индексы.

> закупли и такую. По моему IN TIME MEMORY. Но сам Оракл закомиченне
> вынужден сбрасывать в дата файлы.

Не обязан. как раз наличие лога (уточним -- write-ahead log)
и позволяет сами страницы/блоки данных не записывать на диск.
А записывать только по checkpoint-у.

Posted via ActualForum NNTP Server 1.4

18 июл 09, 14:59    [7432238]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Александр Гoлдун пишет:

> Как это везде? В каких еще базах с логом нельзя накатить лог или
> посмотреть его содержимое, транслировав в SQL?

Давай лучше скажи, в каких это сделать можно. Я таких не знаю.
Только тут в топике про оракл сказали, до этого я не знал.

Posted via ActualForum NNTP Server 1.4

18 июл 09, 15:01    [7432242]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Di_LIne пишет:

> Ну вот. Дальше-то что?
> Кто, как и куда ее откатит?

Сервер, СУБД откатит. ЗАвершить аварийно транзакцию,
она и откатится. место освободится, другие транзакции,
меньшего объёма, смогут работать. Ну или не смогут.

Posted via ActualForum NNTP Server 1.4

18 июл 09, 15:03    [7432245]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Александр Гoлдун
Member

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

Александр Гoлдун пишет:

> Как это везде? В каких еще базах с логом нельзя накатить лог или
> посмотреть его содержимое, транслировав в SQL?

Давай лучше скажи, в каких это сделать можно. Я таких не знаю.
Только тут в топике про оракл сказали, до этого я не знал.

В Sybase ASA это однозначно можно. Собственно активно и регулярно этим пользуюсь. Я был свято уверен, что это во всех базах с логом можно было сделать. Иначе нафига вообще с логами заморачиваться?

В MSSQL, насколько помню, тоже можно было делать инкрементальный бэкап на базе логов. А восстановление как раз путем наката логов на последний полный бэкап.

В MySQL в некоторых типах таблиц такое есть.

И в PostgreSQL все это есть:
http://resurection.ru/doc/postgres/backup-online.html

Поэтому интересно, в каких СУБД с логом нельзя использовать лог таким естественным образом?
18 июл 09, 15:17    [7432255]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

Александр Гoлдун пишет:
> В Sybase ASA это однозначно можно. Собственно активно и регулярно этим

погоди, мы про что ? про накат логов, или про просмотр содержимого
и "транслировав в SQL" ? Я -- про второе.
Первое, понятно, везде есть, иначе зачем лог нужен.

Posted via ActualForum NNTP Server 1.4

18 июл 09, 15:40    [7432277]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Di_LIne
Member

Откуда: Тропик Скорпиона
Сообщений: 32554
MasterZiv

Сервер, СУБД откатит. ЗАвершить аварийно транзакцию,
она и откатится. место освободится, другие транзакции,
меньшего объёма, смогут работать. Ну или не смогут.
- Не, ну в чё?!
Логика работы cервера: - Нииииёт меня ваши данные, мне работать надо!
Мне такая логика - нравися!
18 июл 09, 15:46    [7432286]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Александр Гoлдун
Member

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

Александр Гoлдун пишет:
> В Sybase ASA это однозначно можно. Собственно активно и регулярно этим

погоди, мы про что ? про накат логов, или про просмотр содержимого
и "транслировав в SQL" ? Я -- про второе.

Я думал, и про то, и про другое. И что, получается оттранслировать лог в SQL можно только в оракле и Sybase ASA? Но если данные в логе есть, то почему нельзя их перевести в удобоваримый вид? Непонятно это. На самом деле такая возможность бывает нужна редко, но при этом очень метко. Несколько раз серьезно помогало.
18 июл 09, 16:11    [7432324]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30267
короче, вы лучше не спорьте, а зафиксируйте у себя - что журналирование, которое введено в IB 2007/2009, является только журналированием, или WAL, как угодно, и выполняет функции "предварительного кэширования записи".
И никакого "вот раньше не было лога, было плохо, а теперь есть лог, и стало хорошо" нет.
И также нет разницы в смысле хранения версий в БД между базой с журналом и без.
И, журналирование в IB2007/2009 является опциональным, не по умолчанию, и используется редко.
Также не надо фантазий на тему "предыдущая реализация версионности без журналирования была плохая" - в версионности НИЧЕГО не поменялось, и никаких дополнительных фишек не добавилось.

В плане "защиты от сбоев" тут тоже ничего нового - журнал и база должны быть на разных физических дисках.
Если сбойнет диск с базой - кирдык базе (зависит от мест и объемов повреждений)
если сбойнет диск с журналами - база целая
если же сбой диска с журналами произойдет в момент checkpoint, после его начала и до конца переноса данных из журнала в базу - опять же базе кирдык.
18 июл 09, 16:14    [7432327]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
Yo.!
Guest
MasterZiv

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

это ж где такой зверь !? циклический лог транзакций, да еще и откатывающий транзакции
18 июл 09, 16:30    [7432354]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
MasterZiv

vadiminfo пишет:

> А версионники как разрешают конфликт, когда два юзера пытаются изменять
> одну и туже запись.
> По времени, по приоритету?

На сколько я помню, чистые версионники никак эту проблему не разрешают.
Отсюда -- проблемы write skew, lost update. Хотя возомжно я
не прав, что-то я подзабыл уже это всё.

> Поскольку какая никакая версионность позволяет не блокировать читателя,
> а два писателя одновременно, не такое честоя явление, то все еще,
> возможно, преждевременно относить Оракл к блокировочникам - это может
> сбаить с толку: блокировочник в общепринятом значении обязан блокировать
> читателя, т.е. припишем Ораклу то чего нет.

А вот псевдоверсионники писателей разводят обычными блокировками.
Так что там всё в порядке с этим делом.

Не понял. Чистые версионники типа предлагают реализовать оптимистическую блокировку?
Под этим понимается, что если запись изменена друшим юзером, то произойдент отказ сохранять изменение. Ну ить это тоже по сути разновидность блокировки?
Чистота версионника может пострадать? Или я опять не так понял.

MasterZiv

> > Что скрывается за понятием страница данных? У Оракла в явном виде такого
> > понятия вроде как нет. Есть блоки, которые хранятся на диске либо в

Ну блоки. Блок, страница -- одно и то же.

Термины разные просто.


В таком случае Ваша фраза

"В этих СУБД непосредственно на страницах данных храняться
только последняя закоммиченая версия записи, в одном экземпляре.
Старые версии записей, в разных вариантах, берутся из журнала
транзакций, сегмента отката, roll-backward log и т.д. и т.п. --
"
не совсем опять ясна. Так как сраницы (то бишь блоки хранятся в сегментах отката)


MasterZiv

> Ну это наверное в СУБД у которых данные вседа в оперативке. Оракл кстати

У всех субд часть данных в оперативке. Кэш называется.
Одно из самых мощных средств повышения производительности.
Кэш и индексы.

> закупли и такую. По моему IN TIME MEMORY. Но сам Оракл закомиченне
> вынужден сбрасывать в дата файлы.

Не обязан. как раз наличие лога (уточним -- write-ahead log)
и позволяет сами страницы/блоки данных не записывать на диск.
А записывать только по checkpoint-у.


Ну тут мы опять не поняли тада друг друга. Вы говорилт про ТОЛЬКО в памяти. А это уже не ТОЛЬКО в памяти. Ить Кэш в силу ряда причин заполняется по разным алгоритмам и сбрасывает на диск лишние блоки время от времени включая и старые версии. Т.е. Оракл обязан сбросить када места мало.
Тем более:
А какая разница где блок в памяти или на диске в плане версионноси? (Хотя старые версии блока должны быть в оперативке чтобы их читать. И находятся в кэше каое-то время).
Ить какие компориентированные моменты хранения. Это на первый взгляд не понятно как влияет на не "равноправие" блоков. Грязные блоки ( которые меняются в данный момент) не равноправны чистым - их копиям до изменения, наскока я пока понял так или иначе и в чистых версионниках. Или не правильно понял? Или в чистых версионноиках можно делать копии грязных?
19 июл 09, 01:00    [7432751]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
hvlad
Member

Откуда:
Сообщений: 11560
MasterZiv
> Ну и совсем непонятно мне как 10 записей попадают на 100 страниц.
> Пересчитаем "экономию" ?

Ну, сложилось так. Например, хочу каждую 10 запись по возрастающему
PK поменять.
Как 10 записей попадёт на 100 страниц ??? Или у вы считаете, что каждая запись занимает 10 страниц ?
19 июл 09, 01:06    [7432757]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
hvlad
Member

Откуда:
Сообщений: 11560
MasterZiv
Понятно, что транзакции разные, и нагрузку на лог дают
разнюу. Но логи тоже не дураки придумали. Так что в среднем
в приложениях выгоднее писать на диск логи.
Да, весьма доказательно, весьма.
19 июл 09, 01:07    [7432758]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30267
vadiminfo, а Вы кого про версионники-то спрашиваете? MasterZiv, как бы, тоже про них вопросы задавал. или вы решили эти вопросы между собой обсудить? :-)

to hvlad - может, поговорить с кем так же про DB/2? или про Оракл чего-нибудь загнуть? :-)
19 июл 09, 01:20    [7432776]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
2 MasterZiv

Я раньше думал так про версионость и блокировочник:

Версионник имеет несколько копий записи (не важно где они хранятся).
В частности, генерится копия перед изменением. При этом грязную копию видит тот кто меняет (пишущий), а чистую любой читающий. Пишущий не блокирует читающего и грязное чтение исключено. В псевдоблокировочнике типа Оракла, пишущий так или иначе блокирут другого пищущего.
Блокировочники строго одну копию записи имеют. И либо пишущий блокирует читателя, либо грязное чтение разрешено.

Вопросы про чистые. В них блокировок нет ни в каком виде? Читающий читает чистое?
Но если двое пытаются изменить одну запись, то один из них получит сообщение об отказе?
Если так, то разве это не разновидность блокировки на запись?
Или что?

А уже потом моно буит думать про физ реализацию. Потому что за деревьми реализации пока трудно увидеть ЧТО собсно реализуется.
19 июл 09, 01:23    [7432780]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
hvlad
Member

Откуда:
Сообщений: 11560
kdv
to hvlad - может, поговорить с кем так же про DB/2? или про Оракл чего-нибудь загнуть? :-)
Проще не тратить время на чтение этого бреда форума, IMHO
19 июл 09, 01:26    [7432784]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
kdv
vadiminfo, а Вы кого про версионники-то спрашиваете? MasterZiv, как бы, тоже про них вопросы задавал. или вы решили эти вопросы между собой обсудить? :-)

to hvlad - может, поговорить с кем так же про DB/2? или про Оракл чего-нибудь загнуть? :-)

Вооще то MasterZiv разделил версионники на истинные (чистые) и псевдо. Но пока концепцию чистых мне не удается вкурить. Пока тока понял почему Оракл псевдоверсионник
19 июл 09, 01:35    [7432795]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
mikron
Member

Откуда:
Сообщений: 888
Sergey Orlov

Поскольку нужен web, то есть ASA web edition, и платить ничего не надо будет...Сходи посмотри, почитай лицензию, может понравиться, а на твоем железе летать будет, если запросы нормальные...

Спасибо за хороший, дельный совет.
Попробывал:
-- немного разочарован стабильностью, т.к. сразу напоролся на баг, который убивает сервер-процесс сразу.
Но для бага есть ворк эраунд.
-- Производительностю пока доволен. Да и в остальном всё что желал получил.
Вобщем просто хотел сказать спасибо.
19 июл 09, 17:26    [7433364]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
dimitr
Member

Откуда: PNZ
Сообщений: 7004
vadiminfo
Вопросы про чистые. В них блокировок нет ни в каком виде? Читающий читает чистое?
Но если двое пытаются изменить одну запись, то один из них получит сообщение об отказе?
Если так, то разве это не разновидность блокировки на запись?

в какой-то мере разновидность. Сама запись (ее состояние) и является блокировкой на запись. Т.к. заголовок записи читается всегда, то дополнительных ресурсов (например, в некой таблице блокировок) это не требует. Второй писатель получит либо 100%-ый отлуп (если NOWAIT), либо вероятность отлупа (если WAIT). Читателей же это не затрагивает.
19 июл 09, 17:45    [7433379]     Ответить | Цитировать Сообщить модератору
 Re: Выбор бюджетной базы для замены Postgres.  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
dimitr
vadiminfo
Вопросы про чистые. В них блокировок нет ни в каком виде? Читающий читает чистое?
Но если двое пытаются изменить одну запись, то один из них получит сообщение об отказе?
Если так, то разве это не разновидность блокировки на запись?

в какой-то мере разновидность. Сама запись (ее состояние) и является блокировкой на запись. Т.к. заголовок записи читается всегда, то дополнительных ресурсов (например, в некой таблице блокировок) это не требует. Второй писатель получит либо 100%-ый отлуп (если NOWAIT), либо вероятность отлупа (если WAIT). Читателей же это не затрагивает.


В таком случае они в "какой-то мере " блокировочники и псевдоверионники? По крайней мере, если подходить с позиций MasterZiv?
20 июл 09, 11:57    [7434986]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 [6] 7   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить