|
|
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Хочу окончательно разобраться: при обновлении записи, при изменении поля/лей, являющихся полями определяющими попадание записи в ту или иную секцию - что делать? Просто скопировать запись не удастся - если есть ссылки на эту запись в других таблицах - то это практически неосуществимо - надо запомнить где и что, удалить запись, вставить запись в другую секцию и восстановить связи... Поделитесь опытом и соображениями пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 19:28:01 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spХочу окончательно разобраться: при обновлении записи, при изменении поля/лей, являющихся полями определяющими попадание записи в ту или иную секцию - что делать? Просто скопировать запись не удастся - если есть ссылки на эту запись в других таблицах - то это практически неосуществимо - надо запомнить где и что, удалить запись, вставить запись в другую секцию и восстановить связи... Поделитесь опытом и соображениями пожалуйста "Приходит больной к хирургу, крутит руками и говорит: - Доктор, мне больно, когда я так делаю! - Так не делайте так! " Партиционирование не расчитано на возможность изменения поля по которому оно делается... равно как и на ссылки на партиционированные данные... вы просто пытаетесь использовать партиционированние в непредназначанных для этого местах с не очень понятными целями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 21:57:37 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, извините, но доктор в документации это забыл описать :) еслиб написали - у больных бы вопросы бы не возникали :) да и что больной юзеру должен сказать!!?? юзер у виска покрутит и у него больно станет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 23:06:47 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Что я юзеру должен ответить - извини милок базейка такая на твои хотелки не расчитана!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 23:09:44 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spизвини милок базейка такая на твои хотелки не расчитана!? Странно да, что на самолете под водой тяжеловато плавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 23:13:49 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Hawkmoon, наверно, но я пытаюсь на самолете летать а не плавать под водой или таки юзер не имеет право менять значения полей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 23:18:12 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spHawkmoon, наверно, но я пытаюсь на самолете летать а не плавать под водой или таки юзер не имеет право менять значения полей? может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование... вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту... по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 01:47:46 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spMaxim Boguk, извините, но доктор в документации это забыл описать :) еслиб написали - у больных бы вопросы бы не возникали :) да и что больной юзеру должен сказать!!?? юзер у виска покрутит и у него больно станет :) что именно забыли написать в документации? Учитывая архитектуру партиционирования это очевидно что обновление полей по которым идет партиционирование - это неприятная задача... и про это в доке написано: " The schemes shown here assume that the partition key column(s) of a row never change, or at least do not change enough to require it to move to another partition. An UPDATE that attempts to do that will fail because of the CHECK constraints. If you need to handle such cases, you can put suitable update triggers on the partition tables, but it makes management of the structure much more complicated. " Хотите со всем этим возится - дело ваше... но оно того не стоит... Вы бы свою схему данных бы привели и обьяснили почему и зачем вам нужно партиционирование в вашем случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 01:54:53 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Maxim BogukspHawkmoon, наверно, но я пытаюсь на самолете летать а не плавать под водой или таки юзер не имеет право менять значения полей? может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование... вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту... по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на). отчего же секционирование по дате не к месту - если львиную долю в объеме и количестве занимает таблица договоров - секционирование ее хотя бы по годам заметно облегчит работу с ней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 18:40:17 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spMaxim Bogukпропущено... может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование... вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту... по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на). отчего же секционирование по дате не к месту - если львиную долю в объеме и количестве занимает таблица договоров - секционирование ее хотя бы по годам заметно облегчит работу с ней по дате создания вполне к месту... но я что то не понимаю идею договора у которого дата создания может менятся... это раз... два: у вас миллион договоров в год будет? если нет - вам рано о партиционированиии думать (т.е. оно там просто не надо)... (и опять же может быть и быстрее а может и медленее... смотря какие запросы вы к этой таблице будете использовать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 23:01:56 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spMaxim Bogukпропущено... может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование... вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту... по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на). отчего же секционирование по дате не к месту - если львиную долю в объеме и количестве занимает таблица договоров - секционирование ее хотя бы по годам заметно облегчит работу с ней "мальчик, ты дурак?"(сс) договор у вас ведущая сущность, на которую будут наверняка завязаны кучи порождаемых. Если не отказываться от FK то вы разом навязываете партицирование всем таким порождаемым сущностям . а не дай - что-то у вас на 2 договора сошлётся, и не внутри года, а в произвольный скрест -- и всё, приплыли. для учётных систем партицирование, по крайней мере в том виде, в каком оно существует, -- зло. абсолютное. это просто заплатка для затаривания данных в режиме отгрузки картошки. не более. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 08:15:11 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
йокарный бабай, думаю в приличных публичных заведения, можно и без оскорблений обходится! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 15:04:27 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spприличных или публичных заведениях - вы уж определитесь. Это так, чисто не к месту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 17:16:30 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Hawkmoon, а что приличных публичных не бывает?? библиотеки не пример??) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2014, 18:04:37 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
sp, сударь, вы б ответили на вопрос товарища Максима Maxim Bogukпо какому полю у вас партиционирование и зачем вы его используете?.. Меня, почему-то, тоже не оставляет ощущение того, что проблема не в Постгресе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 10:34:16 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
rovan, на вопрос уже ответил - читайте выше. По-вашему виноват юзер, что он хочет законно редактировать поле - ну ошибся он, пол часа вводил данные по договору и ошибся в одном поле! Что теперь прикажете делать? Сказать ему извини дружок - движок бд такие операции не умеет делать?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 14:20:24 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
sp, Как сказали коллеги - в движке такой возможности нет. Возможно - "пока нет". Вариант, который остался - переселить запись вручную. Написать один раз процедуру, и пользоваться, пока движок не позволит row movement. Сомневаюсь, что это невозможно. PS вы скажите всё-таки, у вас хотя бы миллион договоров в год набегает? А будет набегать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 15:37:22 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
sprovan, на вопрос уже ответил - читайте выше. По-вашему виноват юзер, что он хочет законно редактировать поле - ну ошибся он, пол часа вводил данные по договору и ошибся в одном поле! Что теперь прикажете делать? Сказать ему извини дружок - движок бд такие операции не умеет делать?? на вопрос вы не ответили. вопрос ,если вы не поняли, состоит в том, с какого перепуга вы решили, что партицирование - это то, что вам нужно. а про дружка будете дружку рассказывать, а тут надо честно сказать " извини мол, дружок, лоханулся с проектированием, прикрутил совковую лопату к шнеку, не подумал, что она цеплять за кожух при проворачивании будет" правду вообще говорить легко и приятно даже в публичных местах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 17:11:38 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
rovan, за год - почти 800тыщ, но хвост за несколько лет предыдущих висит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 18:35:56 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
qwwq, оскорблять известное дело всегда легко и просто и при этом если это назвать "правда" - тогда вообще так легко становится всем ее говорить!) вы случаем не у американских товарищей из ЦРУ практикуетесь??) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 18:38:11 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
sp, если юзер вводит ключ шардирования - это не гут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 18:56:39 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Misha Tyurin, Кстати +1. sp, то есть, ~10 млн за 10 лет. Можно и партиционировать(с оговорками, конечно). Если архитектуру своей системы менять не готовы - пишите процедуру миграции строки. И задумайтесь о смене ключа партиционирования. Например на какое-нибудь автоматически вычисляемое поле. Типа InsertTimestamp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 19:13:13 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
spqwwq, оскорблять известное дело всегда легко и просто и при этом если это назвать "правда" - тогда вообще так легко становится всем ее говорить!) вы случаем не у американских товарищей из ЦРУ практикуетесь??)малчег, нихто тебя оскор,простите,бляmь пока даже и не собиралсо предлагали задумаццо но ты в неё кушаешь, ога ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 20:30:12 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
Это ограничение текущей системы партицирования в Postgres. Хорошо, конечно, требовать immutable ключей партицирования, но это не всегда возможно. Одно из основных применений партицирования в базах - возможность удалять или архивировать все договора или проводки и т.п. за финансовый год. Это вполне нормально, когда в январе все еще вводят проводки за декабрь прошлого года. Ну не поступили вовремя документы! А партицировать приходится по дате финансовоно года, а не по дате ввода документа. Напишите свою функцию миграции документов из одной партиции в другую. Не так все плохо обычно, в одной транзакции удаляете все дерево данных со всеми зависимостями из одной партиции, и вставляете в другую партицию. Надеюсь, что все зависимые таблицы тоже партицированы? Конечно, при изменении схемы придется обновлять эту функцию, да и циклические зависимости тоже могут проблем создать, но жить можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 20:47:43 |
|
||
|
partitioning: обновление записи - перемещение в другую секцию
|
|||
|---|---|---|---|
|
#18+
sp... Вообще, если вы делали партицирование на триггерах, а не на рулах, то у вас есть триггеры на апдейт... То что изменять партицированное поле ВООБЩЕ НИКОГДА НЕЛЬЗЯ ДЕЛАТЬ ИНАЧЕ п....ц - надеюсь понимаете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 21:56:36 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38565063&tid=1998828]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
187ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 496ms |

| 0 / 0 |
