2009-11-30 2 views
3

작성한 데이터에 태그를 지정하려면 uuids를 사용하는 것이 좋습니다. 보안 문제가 아니므로 버전 1 (날짜 및 MAC 주소 기반)을 사용하려고했습니다. 유일한 관심사는 각 사용자가 여러 스레드로 여러 프로세스에서 동시에 여러 데이터 파일을 만들 수 있다는 것입니다. 파이썬의 uuid 라이브러리가 스레드로부터 안전하다고 가정하면 (비록 보이지는 않지만) 여전히 다중 프로세스 문제가 남는다. 대시와 프로세스 번호로 uuid 접미사를 붙일 생각입니다.동일한 컴퓨터의 여러 프로세스에서 가져온 고유 한 UUID

우리 그룹은 uuids에 대한 경험이 거의 없으므로 유의해야 할 사항이 있습니까? 일반적으로 다중 프로세스 문제는 어떻게 처리됩니까?

+0

파이썬 2.5의'uuid.uuid1()'의 thread-unsafe 부분은 현재의 현재 타임 스탬프와 이전의 타임 스탬프를 비교할 때 쓰인다. 잠금이 없으면 두 프로세스가 동일한 전역 적으로 저장된 타임 스탬프와 비교하여 끝날 수 있습니다. (그게 내 훈련받지 않은 눈처럼 보입니다.) – AFoglia

+0

나는 uuid를 디자인 할 때 관례에 대해 더 많이 설명하기를 희망했다. 특히 스트레이트 프로세스 ID를 사용하지 않는 것이 좋은 이유가 있다고 걱정했습니다. 그러나, 그것이 부족하면, 나는 wcoenen의 대답을 받아 들일 것입니다. 그는 좋은 지적을 가지고 있지만, 나는 그것이 나의 특별한 상황과 관련이 있다고 생각하지 않는다. – AFoglia

답변

2

완전히 임의의 UUID는 uuid4 만 사용하면됩니다. 충돌에 대해 걱정할 필요가 없습니다.

의견에 대한 편집 내역 : 내 경험상, 중복 데이터로 인해 조만간 불일치가 발생합니다. 중복을 피하는 것이 관계형 데이터베이스 설계의 교리라는 이유가 있습니다.

실제 "원본 컴퓨터"및 "타임 스탬프"데이터에 대해 "중복 백업"으로 UUID를 사용하지 마십시오. 다른 정보가없는 순수한 고유 ID로 사용하거나 전혀 사용하지 마십시오.

+0

필자는 uuid1의 (약한) 추적 가능성을 선호합니다. 그 메타 데이터 (생성 시간, 컴퓨터)는 파일 자체에 기록되어야하지만, 대부분의 코딩 표준처럼 보증 할 수 없습니다. – AFoglia

+0

나를 신뢰해라, 우리는 지금 많은 불일치를 가지고있다. 그리고 우리는 거의 충분하게 쓰지 않는다. 나는 우리의 모든 프로그램에 의지하는 것보다는 백업으로 사용하고 결코 사용하지 않을 것입니다. 후자는 불가능합니다. 적어도 누군가가 데이터를 망칠 때 작은 기회가됩니다. (나는 그것을 프로그래밍 방식으로 사용하는 것을 의미하지는 않는다. 우리가 실수를 추적 할 필요가있을 때마다). 정기적으로 사용한다면, uuid보다 읽기 쉬운 것을 사용할 것이다. – AFoglia