|
|
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Нет, в FB читаются текущие для данной транзакции данные, но Оракло-гайз настаивают, что читать надо консистентные данные, до DML... И что же такое версионность в Вашем понимании? Пг гайз тоже так думают. Мне вот интересно, в Оракле after триггер видет в таблице запись при select * from та самая таблица? А версионность нужна для того, чтоб когда один пишет - другие не видели что он написал. Что-то типа "Ты сундук видешь? Нет. И я нет. А он есть. Шас вон тот-вот пацанчик commit сделает и будет." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 15:55 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Warstone А версионность нужна для того, чтоб когда один пишет - другие не видели что он написал. Т.е. чтобы триггер не видел что уже написал вызвавший его DML. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:02 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Гммм ... а я что сказал? да, зарапортовался. пропустил statement и в результате нечто странное прочитал Dimitry Sibiryakov Вот как раз "иметь две сущности таблицы" и называется "версионностью". В триггере просто должна быть доступна версия таблицы до старта DML. ага, тут у нас транзакция видит изменения которая внесла, в тригере не видит, а тут мы рыбу заворачивали. славо ундуским богам, даже у индусов мозгов хватает так не делать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:08 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov SergSuperи в FB так и сделано? (но в любом случае версионность это несколько другое) Нет, в FB читаются текущие для данной транзакции данные, но Оракло-гайз настаивают, что читать надо консистентные данные, до DML...я тут подумал - как Вы предлагаете тоже плохо получается что каждая запись может апдейтится несколько раз и непонятно какое надо брать изменение за окончательное Dimitry SibiryakovИ что же такое версионность в Вашем понимании?каждый конект видит свою версию БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:14 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Т.е. чтобы триггер не видел что уже написал вызвавший его DML. Э-э-э... Нет... Не для этого. В реализации пг, как ты видел, before триггер не видит, так как данных еще нет, а after - уже видит. Версионность нужна для другого. Основная идея в том, что в 2-х транзакциях может быть инсерт с одинаковым первичным ключем и это пройдет (на момнет инсерта), а вот на момент коммита - какая-то транзакция отроллбэчится (если в это время не сделали удаления одного из первичных ключей, конечно). За счет этого можно читать и писать одновременно. Без блокировок. Это в теории, если я правильно понят то, что об этом читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:14 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
SergSuperкаждый конект видит свою версию БДИ, что самое интересное, на этом можно поймать кучу глюков, если не готов к такому режиму работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:16 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
WarstoneВерсионность нужна для другого. Основная идея в том, что в 2-х транзакциях может быть инсерт с одинаковым первичным ключем и это пройдет (на момнет инсерта), а вот на момент коммита - какая-то транзакция отроллбэчится (если в это время не сделали удаления одного из первичных ключей, конечно).Это называется DEFERRED CONSTRAINTS CHECKING и версионность тут не при чём. WarstoneЗа счет этого можно читать и писать одновременно. Без блокировок. Это в теории, если я правильно понят то, что об этом читал.Без обид, перечитайте ещё несколько раз. Ну и про версионность тоже не помешает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:22 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Yo.!тут у нас транзакция видит изменения которая внесла, в тригере не видит Опять ты зарапортовался и пропустил statement. DML это statement. Statement не видит изменения которые внёс. И триггеру тоже их видеть ни к чему. Warstone Основная идея в том, что в 2-х транзакциях может быть инсерт с одинаковым первичным ключем и это пройдет (на момнет инсерта), а вот на момент коммита - какая-то транзакция отроллбэчится (если в это время не сделали удаления одного из первичных ключей, конечно). Нет, это работа для deferred constraints, которым версионность - с боку припека. Версионность это всего лишь один из способов реализовать принцип "писатели не блокируют читателей". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 16:26 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
WarstoneSergSuperкаждый конект видит свою версию БДИ, что самое интересное, на этом можно поймать кучу глюков, если не готов к такому режиму работы. +1 Но что ещё более интересно. пока эти глюки не поймаешь, не поймешь что конкретно тупит: мозг, логика или СУБД ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 17:10 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvlad]Это называется DEFERRED CONSTRAINTS CHECKING А она есть в планах для FB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 17:21 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
artemanahvladЭто называется DEFERRED CONSTRAINTS CHECKING А она есть в планах для FB?Пока нет. На моей памяти это просили лишь пару раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 18:03 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvladartemanahvladЭто называется DEFERRED CONSTRAINTS CHECKING А она есть в планах для FB?Пока нет. На моей памяти это просили лишь пару раз. Вещь конечно сильно спецефическая, нужная только системам репликации, наверное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 18:41 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
artemana Вещь конечно сильно спецефическая, нужная только системам репликации, наверное. Отдельным типам репликаторов - да. Но их мало. Собственно, из тех, которые не "только для внутреннего употребления" мне таковые вообще неизвестны. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 19:03 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov artemana Вещь конечно сильно спецефическая, нужная только системам репликации, наверное. Отдельным типам репликаторов - да. Но их мало. Собственно, из тех, которые не "только для внутреннего употребления" мне таковые вообще неизвестны. Про свой забыл? По моему ему и любым другим было бы 'приятно', если бы система могла проверять fk и unique не для каждой операции, а при commit. Конфликтов было бы меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 19:12 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
artemana Про свой забыл? По моему ему и любым другим было бы 'приятно', если бы система могла проверять fk и unique не для каждой операции, а при commit. Конфликтов было бы меньше. Приятно - может быть. Но в штатном режиме мой репликатор как и любой другой, построенный на логах не нарушает какие-либо констрейны. Отложенные констрейны нужны тем репликаторам, которые работают без лога, на флагах или сравнении содержимого. Но как я уже сказал: если кто-нибудь таковые на рынке знает - просветите. Мне не встречались. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 19:43 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov artemana Про свой забыл? По моему ему и любым другим было бы 'приятно', если бы система могла проверять fk и unique не для каждой операции, а при commit. Конфликтов было бы меньше. Приятно - может быть. Но в штатном режиме мой репликатор как и любой другой, построенный на логах не нарушает какие-либо констрейны. У тебя лог не полный, ты знаешь текущее состояния записи, а не то, каким оно было на момент операции. А значит есть ситуации когда внутри транзакции констрайны нарушаются и ты с этим в штатном режиме не справляешься . Сам же рассказывал. Или я где то тебя не правильно понял в обозначение границ "штатного режима работы"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 20:00 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Отдельным типам репликаторов - да. Но их мало. Собственно, из тех, которые не "только для внутреннего употребления" мне таковые вообще неизвестны. А вот в Постгре есть механизм WAL. Который ведет журнал изменений и его можно проигрывать или для восстановления базы или для репликации. В 9.0 (Сейчас бета4 или уже бета 5... В сентябре будет релиз, скорей всего) доставка WAL на запасной сервер будет оптимизирована и "практически" моментальная. Таким образом в Пг появится нативная master-slave репликация с hot stand. Это отбрасывает необходимость "сторонних репликантов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 20:04 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
hvladЭто называется DEFERRED CONSTRAINTS CHECKING и версионность тут не при чём. Без обид, перечитайте ещё несколько раз. Ну и про версионность тоже не помешает :)Ну ИМХО DEFERRED легче отрабатывается на версионнике. Конечно перечитаю. Я вообще к версионности относился так: Это такая штука, которая позволяет не делать блокировки. Но проблемы с ней будут на коммитах. Если у меня не будет откатов транзакций, то все будет хорошо. Если будут - надо разбираться - почему откатилось и что делать. Но это как и везде. Кстати, просветите насчет мсскл: У него до сих пор блокировки на чтение и "желательно не делать долгих селектов, так как это катастрофически сказывается на производительности всего сервера" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 20:08 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Warstone Кстати, просветите насчет мсскл: У него до сих пор блокировки на чтение и "желательно не делать долгих селектов, так как это катастрофически сказывается на производительности всего сервера" Версионник с 2005 года (ну может чуть позже). Вернее гибрид. Про реализацию можно долго спорить. Если собираешься затеять срач на тему истинной версионности, пойду за попкорном ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 20:13 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
artemana А значит есть ситуации когда внутри транзакции констрайны нарушаются и ты с этим в штатном режиме не справляешься. Сам же рассказывал. Ну да, есть такая буква... Но, IMHO, оно не стоит того, чтобы вводить deferred constraints. У них цена уж больно велика (если мне мой нюх не изменяет). Т.е. в простейших случаях всё может быть и ништяк, но как я представлю транзакцию, внутри которой пара миллионов DML и данные несколько раз проходят инвалидные состояния... WarstoneТаким образом в Пг появится нативная master-slave репликация с hot stand. Это отбрасывает необходимость "сторонних репликантов". Щаззз... Оптимизм. WAL это просто отлично для простейшего standby в локалке. Но в жизни кому ни попадя нужна неполная multimaster репликация, и вот тут-то WAL-а становится недостаточно. Простейший случай: филиалы, в которых находится "урезанная" база, обмениваются изменениями с центральной, причём часть данных, поступающих из филиалов должна-таки не только попадать в центр, но и уходить в остальные филиалы. Вон, у того же мускуля WAL уже давно есть, а мультимастер репликация ограничена ровно двумя мастерами, причём один slave не может принимать изменения с двух мастеров одновременно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 20:29 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Версионник с 2005 года (ну может чуть позже). Вернее гибрид. Про реализацию можно долго спорить. Если собираешься затеять срач на тему истинной версионности, пойду за попкорномЯ-бы удовлетворился ссылочками на то какой он гибрид и какой блокировочник. Мне для общего образования.Dimitry SibiryakovЩаззз... Оптимизм.Да, согласен, мультимастера нету на нативном уровне. Да и его сложно сделать вообще-то. Хотя если сиквенсы настроить на чередование, логгировать только изменения и данные с других мастеров - readonly... Ну да это все не мне вам рассказывать. Наверняка не один раз такое делали. Тут, кстати, Хранимки опять-таки дают большой плюс к возможности масштабирования =)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 21:49 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
WarstoneДа и его сложно сделать вообще-то. На нативном уровне - сложно. На стороннем - как два пальца об асфальт. Всего-то две проблемы решить: 1) Глобально-уникальные ключи 2) Предотвращение data bounce Первое тривиально делается разнесением диапазонов у последовательностей или (не мелочась) гуидами, а второе обычно магией пользовательских имён. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 22:32 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
WarstoneНу ИМХО DEFERRED легче отрабатывается на версионнике.А на чём основано это мнение ? WarstoneКонечно перечитаю. Я вообще к версионности относился так: Это такая штука, которая позволяет не делать блокировки. Но проблемы с ней будут на коммитах. Если у меня не будет откатов транзакций, то все будет хорошо. Если будут - надо разбираться - почему откатилось и что делать. Но это как и везде.Я вам рекомендую сначала хоть что-то почитать о версионности, хотя бы что-то об известных практических реализациях, а уж потом высказываться публично. Ибо уже даже не улыбает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2010, 22:41 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
WarstoneЯ-бы удовлетворился ссылочками на то какой он гибрид и какой блокировочник. Мне для общего образования. Начать можно отсюда . Продолжать в BOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2010, 07:22 |
|
||
|
MySQL и Firebird для Web
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov .. Но, IMHO, оно не стоит того, чтобы вводить deferred constraints. У них цена уж больно велика (если мне мой нюх не изменяет). Т.е. в простейших случаях всё может быть и ништяк, но как я представлю транзакцию, внутри которой пара миллионов DML и данные несколько раз проходят инвалидные состояния... Но и архи сложного вроде ничего нет. Внутри транзакции небольшой журнальчик, содержащий сведения только о тех записях, которые размещены транзакцией в ‘невалидном’ состоянии. Перед основными действиями по окончание транзакции пройти по этому журналу и еще раз выполнить проверку на ‘валидность’ каждой записи. Кстати, этот так называемый DEFERRED, в таком или другом виде вроде работает для методанных, то есть внутри транзакции можно объявить ‘невалидную’ процедуру, а если к концу транзакции дополнить методанные базы необходимыми процедуре объектами, то транзакция завершится успешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2010, 11:13 |
|
||
|
|

start [/forum/moderation_log.php?user_name=Chuzhoy]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 1346ms |
| total: | 1505ms |

| 0 / 0 |
