|
Консистентность данных в Postgre
|
|||
---|---|---|---|
#18+
Господа, добрый день! Устраиваюсь на новую работу Java-разработчиком. И мне выслали тестовое задание (как мне кажется несколько странное). Сначала даю коротенькую постановку задачи, а чуть ниже объясню почему я так думаю. авторРазработать приложение, предоставляющее простой интерфейс для загрузки файлов xls. При этом в БД(желательно использовать Postgres) должны сохраняться все числовые значения из первого столбца(номера телефонов). Реализовать поток или другое приложение, для постоянного мониторинга таблицы и проставления статуса каждому номеру, мобильный или нет. Признак мобильности определять по алгоритму: номер начинается с 7, +7 или 8 и кроме этого содержит 10 цифр. Реализовать возможность параллельной(одновременной работы) нескольких экземпляров приложений без помехи друг другу. Предполагаемая структура таблицы: Phones: id phone (int) is_mobile (boolean) is_locked (boolean) Ну допустим написал я приложение для мониторинга в несколько потоков. Единственное предназначение потоков прочитать таблицу и если не установлен признак is_mobile (как я понял он должен быть nullable), я смотрю на номер, проставляю правильный is_mobile. Таблица или записи в ней будет правильно блокироваться самой СУБД при UPDATE-ах и SELECT-ах. Я не нашел для себя ни одного кейса, когда потоки (или разные экземпляры приложений) могут как-то помешать друг-другу. Отсюда вопрос: нафига нам вообще поле is_locked ? Разве реляционных СУБД вообще такие поля заводятся? Я в своей практике ни разу такого не встречал. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2018, 18:35 |
|
Консистентность данных в Postgre
|
|||
---|---|---|---|
#18+
Dmitry100, Единственный кейс который приходит в голову, когда обрабатываются данные кусками. Т.е. в начале лочим несколько номеров. Проверяем-изменяем. Потом анлочим. Ну а так да. Задание странное. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 06:04 |
|
Консистентность данных в Postgre
|
|||
---|---|---|---|
#18+
Dmitry100 Отсюда вопрос: нафига нам вообще поле is_locked ? Может это - Блокировка за неуплату абон. платы? а не то, что Вы думаете... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 07:25 |
|
Консистентность данных в Postgre
|
|||
---|---|---|---|
#18+
Dmitry100, безотносительно задачи (т.к. согласен с предыдущим оратором). допустим "клиентская транзакция," будь она реализована как транзакция , несколько длинновата. даже допустим блокируемый ресурс несколько великоват. например разработчик забирает "в работу" некий проект, с кучей деталей. и хочет предупредить конкурирующие изменения во всей этой куче на денёк--другой. разумно забрать данные в локальное распоряжение. а не держать открытыми сотни селект-фор-апдейтов. а на коллекции "забранных" данных выставить логическую блокировку. (и где-то пометить автора лока) ну и по другим причинам удержание (блокирующего ресурсы) соединения на все время транзакции может быть нежелательно и на более коротких време нах ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2018, 08:14 |
|
|
start [/forum/topic.php?fid=53&msg=39611600&tid=1995903]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 403ms |
0 / 0 |