Я использую AWS Redshift для выполнения аналитических запросов. Запрос выполняет некоторые вычисления и обновляет значение для ключа. Этот результат экспортируется в систему очереди для использования асинхронными клиентами. Однако, поскольку система очередей не обеспечивает упорядочение, мне нужен механизм для определения порядка. Мне нужно что-то вроде столбца «update_version», который увеличивается в каждой операции обновления. Это что-то аналогичное optimistic locking.Как достичь версии на уровне строк в режиме красного смещения?
Как достичь этого в красном смещении?
Один из способов - использовать временную метку, но она не является надежной, поскольку временная метка извлекается из отдельных узлов в кластере и подвержена clock skew.
Мне не нужен глобальный заказ.
Примечание: Пожалуйста, не предлагайте использовать упорядоченную очередь, так как из сферы действия этого вопроса возникают различные задачи.
Если два процесса одновременно обновляли значение ключа, почему было бы более правильным, чем другое? Другими словами, если ваш работник очереди выбросил все новые сообщения, более старые, чем последние обработанные, то какой differenct будет работать с перекосом часов? – systemjack
Кроме того, несмотря на то, что значение для данной точки данных может быть распределено по нескольким узлам, подсчитывается только часы рабочего узла, выбранного для запуска запроса на обновление. Все значения временных меток в разных хранилищах узлов для данного обновления будут идентичными. – systemjack