Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / partitioning: обновление записи - перемещение в другую секцию / 25 сообщений из 34, страница 1 из 2
15.02.2014, 19:28:01
    #38561928
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Хочу окончательно разобраться: при обновлении записи, при изменении поля/лей, являющихся полями определяющими попадание записи в ту или иную секцию - что делать?
Просто скопировать запись не удастся - если есть ссылки на эту запись в других таблицах - то это практически неосуществимо - надо запомнить где и что, удалить запись, вставить запись в другую секцию и восстановить связи...

Поделитесь опытом и соображениями пожалуйста
...
Рейтинг: 0 / 0
15.02.2014, 21:57:37
    #38561969
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
spХочу окончательно разобраться: при обновлении записи, при изменении поля/лей, являющихся полями определяющими попадание записи в ту или иную секцию - что делать?
Просто скопировать запись не удастся - если есть ссылки на эту запись в других таблицах - то это практически неосуществимо - надо запомнить где и что, удалить запись, вставить запись в другую секцию и восстановить связи...

Поделитесь опытом и соображениями пожалуйста

"Приходит больной к хирургу, крутит руками и говорит:
- Доктор, мне больно, когда я так делаю! - Так не делайте так! "

Партиционирование не расчитано на возможность изменения поля по которому оно делается... равно как и на ссылки на партиционированные данные... вы просто пытаетесь использовать партиционированние в непредназначанных для этого местах с не очень понятными целями...
...
Рейтинг: 0 / 0
15.02.2014, 23:06:47
    #38562020
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Maxim Boguk,

извините, но доктор в документации это забыл описать :) еслиб написали - у больных бы вопросы бы не возникали :)
да и что больной юзеру должен сказать!!?? юзер у виска покрутит и у него больно станет :)
...
Рейтинг: 0 / 0
15.02.2014, 23:09:44
    #38562022
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Maxim Boguk,

Что я юзеру должен ответить - извини милок базейка такая на твои хотелки не расчитана!?
...
Рейтинг: 0 / 0
15.02.2014, 23:13:49
    #38562028
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
spизвини милок базейка такая на твои хотелки не расчитана!?

Странно да, что на самолете под водой тяжеловато плавать?
...
Рейтинг: 0 / 0
15.02.2014, 23:18:12
    #38562030
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Hawkmoon,

наверно, но я пытаюсь на самолете летать а не плавать под водой или таки юзер не имеет право менять значения полей?
...
Рейтинг: 0 / 0
16.02.2014, 01:47:46
    #38562084
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
spHawkmoon,

наверно, но я пытаюсь на самолете летать а не плавать под водой или таки юзер не имеет право менять значения полей?


может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование...
вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту...

по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на).
...
Рейтинг: 0 / 0
16.02.2014, 01:54:53
    #38562087
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
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.
"

Хотите со всем этим возится - дело ваше... но оно того не стоит...

Вы бы свою схему данных бы привели и обьяснили почему и зачем вам нужно партиционирование в вашем случае.
...
Рейтинг: 0 / 0
16.02.2014, 18:40:17
    #38562390
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Maxim BogukspHawkmoon,

наверно, но я пытаюсь на самолете летать а не плавать под водой или таки юзер не имеет право менять значения полей?


может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование...
вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту...

по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на).

отчего же секционирование по дате не к месту - если львиную долю в объеме и количестве занимает таблица договоров - секционирование ее хотя бы по годам заметно облегчит работу с ней
...
Рейтинг: 0 / 0
16.02.2014, 23:01:56
    #38562518
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
spMaxim Bogukпропущено...



может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование...
вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту...

по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на).

отчего же секционирование по дате не к месту - если львиную долю в объеме и количестве занимает таблица договоров - секционирование ее хотя бы по годам заметно облегчит работу с ней

по дате создания вполне к месту... но я что то не понимаю идею договора у которого дата создания может менятся...
это раз...

два: у вас миллион договоров в год будет? если нет - вам рано о партиционированиии думать (т.е. оно там просто не надо)...
(и опять же может быть и быстрее а может и медленее... смотря какие запросы вы к этой таблице будете использовать)
...
Рейтинг: 0 / 0
17.02.2014, 08:15:11
    #38562619
partitioning: обновление записи - перемещение в другую секцию
spMaxim Bogukпропущено...



может конечно... но тогда не надо по тем полям изменение котрых предусмотрено в ТЗ делать партиционирование...
вообще во всех случаях в моей практике когда партиционирование делалось не по creat_time или (отчетная дата) - оно было не к месту...

по какому полю у вас партиционирование и зачем вы его используете (есть весьма немного use cases для партиционирования в postgresql учитывая имеющиеся ограничения на).

отчего же секционирование по дате не к месту - если львиную долю в объеме и количестве занимает таблица договоров - секционирование ее хотя бы по годам заметно облегчит работу с ней
"мальчик, ты дурак?"(сс)

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

для учётных систем партицирование, по крайней мере в том виде, в каком оно существует, -- зло. абсолютное.
это просто заплатка для затаривания данных в режиме отгрузки картошки. не более.
...
Рейтинг: 0 / 0
17.02.2014, 15:04:27
    #38563108
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
йокарный бабай,

думаю в приличных публичных заведения, можно и без оскорблений обходится!
...
Рейтинг: 0 / 0
17.02.2014, 17:16:30
    #38563414
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
spприличных
или
публичных заведениях
- вы уж определитесь.

Это так, чисто не к месту.
...
Рейтинг: 0 / 0
17.02.2014, 18:04:37
    #38563485
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Hawkmoon,

а что приличных публичных не бывает?? библиотеки не пример??)
...
Рейтинг: 0 / 0
18.02.2014, 10:34:16
    #38564022
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
sp,

сударь, вы б ответили на вопрос товарища Максима
Maxim Bogukпо какому полю у вас партиционирование и зачем вы его используете?..
Меня, почему-то, тоже не оставляет ощущение того, что проблема не в Постгресе.
...
Рейтинг: 0 / 0
18.02.2014, 14:20:24
    #38564569
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
rovan,

на вопрос уже ответил - читайте выше.
По-вашему виноват юзер, что он хочет законно редактировать поле - ну ошибся он, пол часа вводил данные по договору и ошибся в одном поле! Что теперь прикажете делать? Сказать ему извини дружок - движок бд такие операции не умеет делать??
...
Рейтинг: 0 / 0
18.02.2014, 15:37:22
    #38564733
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
sp,

Как сказали коллеги - в движке такой возможности нет. Возможно - "пока нет".
Вариант, который остался - переселить запись вручную. Написать один раз процедуру, и пользоваться, пока движок не позволит row movement.
Сомневаюсь, что это невозможно.

PS вы скажите всё-таки, у вас хотя бы миллион договоров в год набегает? А будет набегать?
...
Рейтинг: 0 / 0
18.02.2014, 17:11:38
    #38564880
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
sprovan,

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


а про дружка будете дружку рассказывать, а тут надо честно сказать " извини мол, дружок, лоханулся с проектированием, прикрутил совковую лопату к шнеку, не подумал, что она цеплять за кожух при проворачивании будет"

правду вообще говорить легко и приятно
даже в публичных местах
...
Рейтинг: 0 / 0
18.02.2014, 18:35:56
    #38565021
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
rovan,

за год - почти 800тыщ, но хвост за несколько лет предыдущих висит...
...
Рейтинг: 0 / 0
18.02.2014, 18:38:11
    #38565028
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
qwwq,

оскорблять известное дело всегда легко и просто и при этом если это назвать "правда" - тогда вообще так легко становится всем ее говорить!) вы случаем не у американских товарищей из ЦРУ практикуетесь??)
...
Рейтинг: 0 / 0
18.02.2014, 18:56:39
    #38565063
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
sp,

если юзер вводит ключ шардирования - это не гут
...
Рейтинг: 0 / 0
18.02.2014, 19:13:13
    #38565080
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Misha Tyurin,

Кстати +1.

sp,
то есть, ~10 млн за 10 лет.
Можно и партиционировать(с оговорками, конечно).

Если архитектуру своей системы менять не готовы - пишите процедуру миграции строки.
И задумайтесь о смене ключа партиционирования. Например на какое-нибудь автоматически вычисляемое поле. Типа InsertTimestamp.
...
Рейтинг: 0 / 0
18.02.2014, 20:30:12
    #38565160
йццй
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
spqwwq,

оскорблять известное дело всегда легко и просто и при этом если это назвать "правда" - тогда вообще так легко становится всем ее говорить!) вы случаем не у американских товарищей из ЦРУ практикуетесь??)малчег, нихто тебя оскор,простите,бляmь пока даже и не собиралсо
предлагали задумаццо

но ты в неё кушаешь, ога
...
Рейтинг: 0 / 0
18.02.2014, 20:47:43
    #38565169
Sergei.Agalakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
Это ограничение текущей системы партицирования в Postgres. Хорошо, конечно, требовать immutable ключей партицирования, но это не всегда возможно. Одно из основных применений партицирования в базах - возможность удалять или архивировать все договора или проводки и т.п. за финансовый год. Это вполне нормально, когда в январе все еще вводят проводки за декабрь прошлого года. Ну не поступили вовремя документы! А партицировать приходится по дате финансовоно года, а не по дате ввода документа.
Напишите свою функцию миграции документов из одной партиции в другую. Не так все плохо обычно, в одной транзакции удаляете все дерево данных со всеми зависимостями из одной партиции, и вставляете в другую партицию. Надеюсь, что все зависимые таблицы тоже партицированы? Конечно, при изменении схемы придется обновлять эту функцию, да и циклические зависимости тоже могут проблем создать, но жить можно.
...
Рейтинг: 0 / 0
18.02.2014, 21:56:36
    #38565243
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
partitioning: обновление записи - перемещение в другую секцию
sp... Вообще, если вы делали партицирование на триггерах, а не на рулах, то у вас есть триггеры на апдейт...

То что изменять партицированное поле ВООБЩЕ НИКОГДА НЕЛЬЗЯ ДЕЛАТЬ ИНАЧЕ п....ц - надеюсь понимаете...
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / partitioning: обновление записи - перемещение в другую секцию / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]