2009-11-30 3 views
3

Чтобы пометить создаваемые нами данные, я рассматриваю возможность использования uuids. Безопасность не является проблемой, поэтому я собирался использовать версию 1 (дата-и-мак-адрес). Единственное беспокойство заключается в том, что каждый пользователь может создавать сразу несколько файлов данных из разных процессов с несколькими потоками. Предполагая, что библиотека uuid Python является потокобезопасной (хотя она не выглядит), которая все еще оставляет проблему с несколькими процессами. Я рассматриваю суффикс uuid с тире и номером процесса.Уникальные UUID из нескольких процессов на одном компьютере

Поскольку у нашей группы мало опыта работы с uuids, есть ли какие-либо проблемы, которые мне нужно иметь в виду? Как обычно обрабатывается проблема с несколькими процессами?

+0

Небезопасная часть Python 2.5 'uuid.uuid1()', когда она сравнивает текущую временную метку с предыдущей меткой времени. Без блокировки два процесса могут сравниться с одной и той же всемирно сохраненной меткой времени. (Это то, на что он похож на мои неподготовленные глаза.) – AFoglia

+0

Я надеялся на ответ описанным выше соглашениям при проектировании uuid. В частности, я беспокоился, что есть хорошая причина не использовать прямой идентификатор процесса. Но, не имея этого, я соглашусь ответить wcoenen. У него есть хороший момент, но я не думаю, что это актуально для моих конкретных обстоятельств. – AFoglia

ответ

2

Просто используйте uuid4 для абсолютно случайных UUID. Не стоит беспокоиться о столкновениях.

Редактировать в ответ на комментарий: По моему опыту, избыточные данные приводят к несоответствиям рано или поздно. Существует причина, по которой избежать избыточности является догмой реляционной базы данных.

Поэтому не используйте UUID как «резервную резервную копию» для фактических данных «исходный компьютер» и «метка времени». Либо используйте его как уникальный уникальный идентификатор, не содержащий никакой другой информации, либо не используйте его вообще.

+0

Я бы предпочел иметь (слабую) прослеживаемость uuid1. Эти метаданные (время создания, компьютер) должны быть записаны в сами файлы, но, как и большинство стандартов кодирования, нет никакой гарантии. – AFoglia

+0

Поверьте мне, у нас сейчас много несоответствий, и мы недостаточно писали. Я бы предпочел использовать его в качестве резервной копии и никогда не использовать его, чем полагаться на все наши программы, чтобы делать правильные вещи. Последнее невозможно. Это, по крайней мере, дает мне небольшой шанс, когда кто-то завинчивает данные. (Я не хочу использовать его программно, просто время от времени, когда нам нужно отслеживать наши ошибки.) Если бы я собирался использовать его регулярно, я бы использовал что-то более легкое для чтения, чем uuid. – AFoglia

Смежные вопросы