Распределенный параллелизм в БД или в коде приложения? - PullRequest
1 голос
/ 29 декабря 2010

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

Я не могу обязательно использовать классическую модель очереди PtP или PnS, потому что эта обработка будет сборкой разброса и, возможно, синхронной.Слои поверх классических моделей очереди было бы возможно, но я боюсь, что сложнее, чем необходимо.Можете ли вы порекомендовать одно из следующего, и зачем применять какой-либо элемент управления более низкого уровня?У меня есть одна БД и n узлов обработки.

  1. Опрос через select for update (или эквивалент) для записей БД.Есть некоторые, кто выражает беспокойство по поводу A) конфликта базы данных и B), что опрос все еще происходит.
  2. Сетевая синхронизированная блокировка ресурса, постоянное соединение, ожидающее обработку уведомлений (обсуждающий push-стиль HTTP-сервера).Может быть сложнее, чем наложение поверх MQ?),
  3. Передача сообщений UDP (с TTL) одним диспетчером?

Есть ли плюсы / минусы или как вы реализовали то же самое впрошлые решения и были ли у вас те же проблемы на уровне синхронизации БД?

1 Ответ

0 голосов
/ 28 марта 2011

Хорошо, только что видел это.

"таблица как очередь" довольно проста. Просто используйте подсказки блокировки для управления поведением

Есть некоторые тонкости, связанные с тем, что вы хотите сделать, но обычно одно обновление с assign или OUTPUT решит бит параллелизма за вас.Работает и хорошо масштабируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...